From ecbf2d626033c4ab1e2563c908ab1ee1022e7e2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Sep 2022 07:55:22 +1000 Subject: [PATCH 001/134] Bump github/codeql-action from 2.1.24 to 2.1.25 (#1438) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.24 to 2.1.25. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/904260d7d935dff982205cbdb42025ce30b7a34f...86f3159a697a097a813ad9bfa0002412d97690a4) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 9a3909bc7..2904cfb31 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@904260d7d935dff982205cbdb42025ce30b7a34f + uses: github/codeql-action/upload-sarif@86f3159a697a097a813ad9bfa0002412d97690a4 with: sarif_file: results.sarif From 654bbb2a1e4082e8f8a3400e51f12a2ebdbed0ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 21:52:25 +1000 Subject: [PATCH 002/134] Bump fluent_ui from 3.12.0 to 4.0.0 in /desktop_photo_search/fluent_ui (#1440) Bumps [fluent_ui](https://github.com/bdlukaa/fluent_ui) from 3.12.0 to 4.0.0. - [Release notes](https://github.com/bdlukaa/fluent_ui/releases) - [Changelog](https://github.com/bdlukaa/fluent_ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/bdlukaa/fluent_ui/compare/v3.12.0...v4.0.0) --- updated-dependencies: - dependency-name: fluent_ui dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- desktop_photo_search/fluent_ui/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop_photo_search/fluent_ui/pubspec.yaml b/desktop_photo_search/fluent_ui/pubspec.yaml index 38a3669dc..31935b5b1 100644 --- a/desktop_photo_search/fluent_ui/pubspec.yaml +++ b/desktop_photo_search/fluent_ui/pubspec.yaml @@ -11,7 +11,7 @@ dependencies: built_value: ^8.3.0 cupertino_icons: ^1.0.2 file_selector: ^0.9.1 - fluent_ui: ^3.11.1 + fluent_ui: ^4.0.0 fluentui_system_icons: ^1.1.168 flutter: sdk: flutter From bf5b61342e1438c87485d87188780f56ad806a28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 21:54:26 +1000 Subject: [PATCH 003/134] Bump fluent_ui from 3.12.0 to 4.0.0 in /simplistic_calculator (#1439) Bumps [fluent_ui](https://github.com/bdlukaa/fluent_ui) from 3.12.0 to 4.0.0. - [Release notes](https://github.com/bdlukaa/fluent_ui/releases) - [Changelog](https://github.com/bdlukaa/fluent_ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/bdlukaa/fluent_ui/compare/v3.12.0...v4.0.0) --- updated-dependencies: - dependency-name: fluent_ui dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- simplistic_calculator/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simplistic_calculator/pubspec.yaml b/simplistic_calculator/pubspec.yaml index 8d4963f8b..79c7d36de 100644 --- a/simplistic_calculator/pubspec.yaml +++ b/simplistic_calculator/pubspec.yaml @@ -9,7 +9,7 @@ environment: dependencies: auto_size_text: ^3.0.0 cupertino_icons: ^1.0.2 - fluent_ui: ^3.11.1 + fluent_ui: ^4.0.0 fluentui_system_icons: ^1.1.168 flutter: sdk: flutter From ebe1056e97491f807d522ed2598af22f0fbb11f7 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Tue, 27 Sep 2022 08:49:48 +1000 Subject: [PATCH 004/134] Elide `experimental/linting_tool` and `simplistic_editor` (#1441) * Elide `experimental/linting_tool` * Elide `simplistic_editor` --- tool/flutter_ci_script_beta.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index ec569675e..173d237c2 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -19,7 +19,8 @@ declare -ar PROJECT_NAMES=( "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" "experimental/web_dashboard" - "experimental/linting_tool" + # TODO(DomesticMouse): Needs to be re-formatted for Flutter beta + # "experimental/linting_tool" "flutter_maps_firestore" "form_app" "game_template" @@ -37,7 +38,8 @@ declare -ar PROJECT_NAMES=( "platform_view_swift" "provider_counter" "provider_shopper" - "simplistic_editor" + # TODO(DomesticMouse): https://github.com/flutter/samples/issues/1443 + # "simplistic_editor" "testing_app" "veggieseasons" ) From 07a613266ca690c147765a0061195fed473f8219 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Sep 2022 03:41:55 -0500 Subject: [PATCH 005/134] Bump actions/setup-java from 3.5.0 to 3.5.1 (#1446) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.5.0 to 3.5.1. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/d854b6da19cdadd9a010605529e522c2393ebd38...a18c333f3f14249953dab3e186e5e21bf3390f1d) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/beta.yml | 6 +++--- .github/workflows/main.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index c74db0ea2..9e259b7db 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -27,7 +27,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - - uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 + - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' java-version: '12.x' @@ -42,7 +42,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - - uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 + - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' java-version: '12.x' @@ -57,7 +57,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - - uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 + - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' java-version: '12.x' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 49083bd2c..b554540bc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - - uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 + - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' java-version: '12.x' @@ -41,7 +41,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - - uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 + - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' java-version: '12.x' @@ -54,7 +54,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - - uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 + - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' java-version: '12.x' From 0e46ac55a61c6fa8668e0b213e91fe325881dfe6 Mon Sep 17 00:00:00 2001 From: Qun Cheng <36861262+QuncCccccc@users.noreply.github.com> Date: Tue, 27 Sep 2022 15:13:36 -0700 Subject: [PATCH 006/134] Add Radios, CircularProgressIndicator and LinearProgressIndicator to the demo app (#1442) * Added Radios, CircularProgressIndicator and LinearProgressIndicator * Modified README * Fixed readme comment * Changed layout of indicators * Ran Flutter format command * Put two indicators to one row * Fixed comment * Ran flutter format Co-authored-by: Qun Cheng --- experimental/material_3_demo/README.md | 4 +- .../material_3_demo/lib/component_screen.dart | 96 +++++++++++++++++++ .../test/component_screen_test.dart | 10 ++ 3 files changed, 108 insertions(+), 2 deletions(-) diff --git a/experimental/material_3_demo/README.md b/experimental/material_3_demo/README.md index 61a028c9c..5004795c7 100644 --- a/experimental/material_3_demo/README.md +++ b/experimental/material_3_demo/README.md @@ -2,7 +2,7 @@ This sample Flutter app showcases Material 3 features in the Flutter Material library. These features include updated components, typography, color system and elevation support. The app supports light and dark themes, different color palettes, as well as the ability to switch between Material 2 and Material 3. For more information about Material 3, the guidance is now live at https://m3.material.io/. -This app also includes new M3 components that haven't landed in the Flutter stable channel, such as IconButtons, Chips, TextFields, Switches and Checkboxes. The app will be migrated to the non-experimental directory in the samples repo once all the components land in the stable branch. For more information about the components in the stable channel, please check the "material_3_demo" in the non-experimental directory. +This app also includes new M3 components that haven't landed in the Flutter stable channel, such as IconButtons, Chips, TextFields, Switches, Checkboxes, Radio buttons and ProgressIndicators. The app will be migrated to the non-experimental directory in the samples repo once all the components land in the stable branch. For more information about the components in the stable channel, please check the "material_3_demo" in the non-experimental directory. # Preview @@ -18,7 +18,7 @@ This app also includes new M3 components that haven't landed in the Flutter stab This button will bring up a pop-up menu that allows the user to change the base color used for the light and dark themes. This uses a new color seed feature to generate entire color schemes from a single color. ## Component Screen -The default screen displays all the updated components in Material 3: AppBar, common Buttons, Floating Action Button(FAB), Chips, Card, Checkbox, Dialog, NavigationBar, NavigationRail, TextFields and Switch. +The default screen displays all the updated components in Material 3: AppBar, common Buttons, Floating Action Button(FAB), Chips, Card, Checkbox, Dialog, NavigationBar, NavigationRail, ProgressIndicators, Radio buttons, TextFields and Switch. ### Adaptive Layout Based on the fact that NavigationRail is not recommended on a small screen, the app changes its layout based on the screen width. If it's played on iOS or Android devices which have a narrow screen, a Navigation Bar will show at the bottom and will be used to navigate. But if it's played as a desktop or a web app, a Navigation Rail will show on the left side and at the same time, a Navigation Bar will show as an example but will not have any functionality. diff --git a/experimental/material_3_demo/lib/component_screen.dart b/experimental/material_3_demo/lib/component_screen.dart index c82735d1e..b14f5bcbe 100644 --- a/experimental/material_3_demo/lib/component_screen.dart +++ b/experimental/material_3_demo/lib/component_screen.dart @@ -42,6 +42,10 @@ class ComponentScreen extends StatelessWidget { colDivider, const Checkboxes(), colDivider, + const Radios(), + colDivider, + const ProgressIndicators(), + colDivider, showNavBottomBar ? const NavigationBars( selectedIndex: 0, @@ -629,6 +633,98 @@ class _CheckboxRowState extends State { } } +enum Value { first, second } + +class Radios extends StatefulWidget { + const Radios({super.key}); + + @override + State createState() => _RadiosState(); +} + +class _RadiosState extends State { + Value? _value = Value.first; + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Radio( + value: Value.first, + groupValue: _value, + onChanged: (value) { + setState(() { + _value = value; + }); + }, + ), + Radio( + value: Value.second, + groupValue: _value, + onChanged: (value) { + setState(() { + _value = value; + }); + }, + ), + ], + ); + } +} + +class ProgressIndicators extends StatefulWidget { + const ProgressIndicators({super.key}); + + @override + State createState() => _ProgressIndicatorsState(); +} + +class _ProgressIndicatorsState extends State { + bool playProgressIndicator = false; + + @override + Widget build(BuildContext context) { + final double? progressValue = playProgressIndicator ? null : 0.7; + + return Column( + children: [ + Row( + children: [ + IconButton( + isSelected: playProgressIndicator, + selectedIcon: const Icon(Icons.pause), + icon: const Icon(Icons.play_arrow), + onPressed: () { + setState(() { + playProgressIndicator = !playProgressIndicator; + }); + }, + ), + Expanded( + child: Row( + children: [ + CircularProgressIndicator( + value: progressValue, + ), + const SizedBox( + width: 10, + ), + Expanded( + child: LinearProgressIndicator( + value: progressValue, + ), + ) + ], + ), + ), + ], + ), + ], + ); + } +} + const List appBarDestinations = [ NavigationDestination( tooltip: 'Updated component list', diff --git a/experimental/material_3_demo/test/component_screen_test.dart b/experimental/material_3_demo/test/component_screen_test.dart index be80be7d3..91508a48b 100644 --- a/experimental/material_3_demo/test/component_screen_test.dart +++ b/experimental/material_3_demo/test/component_screen_test.dart @@ -63,6 +63,16 @@ void main() { // Checkboxes Finder checkboxExample = find.byType(Checkbox); expect(checkboxExample, findsNWidgets(8)); + + // Radios + Finder radioExample = find.byType(Radio); + expect(radioExample, findsNWidgets(2)); + + // ProgressIndicator + Finder circularProgressIndicator = find.byType(CircularProgressIndicator); + expect(circularProgressIndicator, findsOneWidget); + Finder linearProgressIndicator = find.byType(LinearProgressIndicator); + expect(linearProgressIndicator, findsOneWidget); }); testWidgets( From a9f274bb53bb475b78c7a8141f2bf0fce5a8da3a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:23:11 -0500 Subject: [PATCH 007/134] Bump ossf/scorecard-action from 2.0.3 to 2.0.4 (#1449) Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.0.3 to 2.0.4. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/865b4092859256271290c77adbd10a43f4779972...e363bfca00e752f91de7b7d2a77340e2e523cb18) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 2904cfb31..22c2241c7 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -27,7 +27,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@865b4092859256271290c77adbd10a43f4779972 + uses: ossf/scorecard-action@e363bfca00e752f91de7b7d2a77340e2e523cb18 with: results_file: results.sarif results_format: sarif From b9db6c879b2374ed544e5368dfd8e23624b5dc9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Sep 2022 11:02:49 -0500 Subject: [PATCH 008/134] Bump github/codeql-action from 2.1.25 to 2.1.26 (#1451) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.25 to 2.1.26. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/86f3159a697a097a813ad9bfa0002412d97690a4...e0e5ded33cabb451ae0a9768fc7b0410bad9ad44) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 22c2241c7..9d8d97d91 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@86f3159a697a097a813ad9bfa0002412d97690a4 + uses: github/codeql-action/upload-sarif@e0e5ded33cabb451ae0a9768fc7b0410bad9ad44 with: sarif_file: results.sarif From c0ca55e872943988205945a651bca498aa9ebd67 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Tue, 4 Oct 2022 11:55:00 +1000 Subject: [PATCH 009/134] Fix build breakage (#1456) --- .../fluent_ui/lib/src/widgets/unsplash_search_content.dart | 2 +- .../material/lib/src/widgets/unsplash_search_content.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/desktop_photo_search/fluent_ui/lib/src/widgets/unsplash_search_content.dart b/desktop_photo_search/fluent_ui/lib/src/widgets/unsplash_search_content.dart index e5ddb7386..8461f97f0 100644 --- a/desktop_photo_search/fluent_ui/lib/src/widgets/unsplash_search_content.dart +++ b/desktop_photo_search/fluent_ui/lib/src/widgets/unsplash_search_content.dart @@ -51,7 +51,7 @@ class _UnsplashSearchContentState extends State { final path = await getSavePath( suggestedName: '${photo.id}.jpg', acceptedTypeGroups: [ - XTypeGroup( + const XTypeGroup( label: 'JPG', extensions: ['jpg'], mimeTypes: ['image/jpeg'], diff --git a/desktop_photo_search/material/lib/src/widgets/unsplash_search_content.dart b/desktop_photo_search/material/lib/src/widgets/unsplash_search_content.dart index 7d244b876..aab3deaef 100644 --- a/desktop_photo_search/material/lib/src/widgets/unsplash_search_content.dart +++ b/desktop_photo_search/material/lib/src/widgets/unsplash_search_content.dart @@ -53,7 +53,7 @@ class _UnsplashSearchContentState extends State { final path = await getSavePath( suggestedName: '${photo.id}.jpg', acceptedTypeGroups: [ - XTypeGroup( + const XTypeGroup( label: 'JPG', extensions: ['jpg'], mimeTypes: ['image/jpeg'], From a5583b2ef9efcec3d445aee03d5cb87ce23ed9d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Oct 2022 12:17:30 +1000 Subject: [PATCH 010/134] Bump flutter_riverpod from 1.0.4 to 2.0.2 in /simplistic_calculator (#1457) Bumps [flutter_riverpod](https://github.com/rrousselGit/riverpod) from 1.0.4 to 2.0.2. - [Release notes](https://github.com/rrousselGit/riverpod/releases) - [Commits](https://github.com/rrousselGit/riverpod/commits) --- updated-dependencies: - dependency-name: flutter_riverpod dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- simplistic_calculator/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simplistic_calculator/pubspec.yaml b/simplistic_calculator/pubspec.yaml index 79c7d36de..9230b4ad8 100644 --- a/simplistic_calculator/pubspec.yaml +++ b/simplistic_calculator/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: flutter: sdk: flutter flutter_layout_grid: ^2.0.1 - flutter_riverpod: ^1.0.3 + flutter_riverpod: ^2.0.2 math_expressions: ^2.3.0 window_size: git: From a695bfca78d2e8ad0ab3c724024af1dafda571cc Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Tue, 4 Oct 2022 22:38:07 +1000 Subject: [PATCH 011/134] Update `provider_shopper` (#1445) --- provider_shopper/.gitignore | 58 +++++------------- provider_shopper/.metadata | 39 +++++++++++- provider_shopper/android/app/build.gradle | 3 + .../android/app/src/debug/AndroidManifest.xml | 3 +- .../app/src/main/res/values-night/styles.xml | 2 +- .../app/src/main/res/values/styles.xml | 2 +- .../app/src/profile/AndroidManifest.xml | 3 +- provider_shopper/android/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- provider_shopper/codelab_rebuild.yaml | 13 ++++ provider_shopper/ios/.gitignore | 3 +- .../ios/Flutter/AppFrameworkInfo.plist | 4 +- provider_shopper/ios/Podfile | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 43 +++++-------- .../xcshareddata/xcschemes/Runner.xcscheme | 10 +-- provider_shopper/ios/Runner/Info.plist | 6 ++ provider_shopper/linux/CMakeLists.txt | 36 ++++++++--- provider_shopper/linux/flutter/CMakeLists.txt | 1 + provider_shopper/macos/.gitignore | 1 + .../macos/Runner.xcodeproj/project.pbxproj | 34 ++-------- .../contents.xcworkspacedata | 7 --- .../xcshareddata/xcschemes/Runner.xcscheme | 22 ++----- .../AppIcon.appiconset/app_icon_1024.png | Bin 46993 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 3276 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 1429 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 5933 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 1243 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 14800 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 1874 -> 2218 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 4 ++ .../macos/Runner/Configs/AppInfo.xcconfig | 2 +- provider_shopper/pubspec.yaml | 4 -- provider_shopper/web/index.html | 46 ++++++++++++-- provider_shopper/web/manifest.json | 16 ++++- provider_shopper/windows/CMakeLists.txt | 20 +++--- .../windows/flutter/CMakeLists.txt | 1 + .../windows/runner/CMakeLists.txt | 22 +++++++ provider_shopper/windows/runner/Runner.rc | 10 +-- .../windows/runner/runner.exe.manifest | 2 +- provider_shopper/windows/runner/utils.cpp | 6 +- tool/flutter_ci_script_master.sh | 4 +- 41 files changed, 254 insertions(+), 180 deletions(-) create mode 100644 provider_shopper/codelab_rebuild.yaml delete mode 100644 provider_shopper/macos/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/provider_shopper/.gitignore b/provider_shopper/.gitignore index c39f0d07f..24476c5d1 100644 --- a/provider_shopper/.gitignore +++ b/provider_shopper/.gitignore @@ -8,6 +8,7 @@ .buildlog/ .history .svn/ +migrate_working_dir/ # IntelliJ related *.iml @@ -15,58 +16,29 @@ *.iws .idea/ -# Visual Studio Code related -.vscode/ +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ # Flutter/Dart/Pub related **/doc/api/ +**/ios/Flutter/.last_build_id .dart_tool/ .flutter-plugins +.flutter-plugins-dependencies .packages .pub-cache/ .pub/ /build/ -# Android related -**/android/**/gradle-wrapper.jar -**/android/.gradle -**/android/captures/ -**/android/gradlew -**/android/gradlew.bat -**/android/local.properties -**/android/**/GeneratedPluginRegistrant.java +# Symbolication related +app.*.symbols -# iOS/XCode related -**/ios/**/*.mode1v3 -**/ios/**/*.mode2v3 -**/ios/**/*.moved-aside -**/ios/**/*.pbxuser -**/ios/**/*.perspectivev3 -**/ios/**/*sync/ -**/ios/**/.sconsign.dblite -**/ios/**/.tags* -**/ios/**/.vagrant/ -**/ios/**/DerivedData/ -**/ios/**/Icon? -**/ios/**/Pods/ -**/ios/**/.symlinks/ -**/ios/**/profile -**/ios/**/xcuserdata -**/ios/.generated/ -**/ios/Flutter/App.framework -**/ios/Flutter/Flutter.framework -**/ios/Flutter/Flutter.podspec -**/ios/Flutter/Generated.xcconfig -**/ios/Flutter/app.flx -**/ios/Flutter/app.zip -**/ios/Flutter/flutter_assets/ -**/ios/Flutter/flutter_export_environment.sh -**/ios/ServiceDefinitions.json -**/ios/Runner/GeneratedPluginRegistrant.* +# Obfuscation related +app.*.map.json -# Exceptions to above rules. -!**/ios/**/default.mode1v3 -!**/ios/**/default.mode2v3 -!**/ios/**/default.pbxuser -!**/ios/**/default.perspectivev3 -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/provider_shopper/.metadata b/provider_shopper/.metadata index 182cccafd..e27f5ccf8 100644 --- a/provider_shopper/.metadata +++ b/provider_shopper/.metadata @@ -1,10 +1,45 @@ # This file tracks properties of this Flutter project. # Used by Flutter tool to assess capabilities and perform upgrades etc. # -# This file should be version controlled and should not be manually edited. +# This file should be version controlled. version: - revision: 78910062997c3a836feee883712c241a5fd22983 + revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 channel: stable project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: android + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: ios + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: linux + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: macos + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: web + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: windows + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/provider_shopper/android/app/build.gradle b/provider_shopper/android/app/build.gradle index 34adbe25f..16ea28136 100644 --- a/provider_shopper/android/app/build.gradle +++ b/provider_shopper/android/app/build.gradle @@ -27,6 +27,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -44,6 +45,8 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "dev.flutter.provider_shopper" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() diff --git a/provider_shopper/android/app/src/debug/AndroidManifest.xml b/provider_shopper/android/app/src/debug/AndroidManifest.xml index f1000ab6d..b7299eab0 100644 --- a/provider_shopper/android/app/src/debug/AndroidManifest.xml +++ b/provider_shopper/android/app/src/debug/AndroidManifest.xml @@ -1,6 +1,7 @@ - diff --git a/provider_shopper/android/app/src/main/res/values-night/styles.xml b/provider_shopper/android/app/src/main/res/values-night/styles.xml index 3db14bb53..06952be74 100644 --- a/provider_shopper/android/app/src/main/res/values-night/styles.xml +++ b/provider_shopper/android/app/src/main/res/values-night/styles.xml @@ -3,7 +3,7 @@ diff --git a/provider_shopper/android/build.gradle b/provider_shopper/android/build.gradle index 4256f9173..83ae22004 100644 --- a/provider_shopper/android/build.gradle +++ b/provider_shopper/android/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/provider_shopper/android/gradle/wrapper/gradle-wrapper.properties b/provider_shopper/android/gradle/wrapper/gradle-wrapper.properties index bc6a58afd..cb24abda1 100644 --- a/provider_shopper/android/gradle/wrapper/gradle-wrapper.properties +++ b/provider_shopper/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/provider_shopper/codelab_rebuild.yaml b/provider_shopper/codelab_rebuild.yaml new file mode 100644 index 000000000..c2e92b26d --- /dev/null +++ b/provider_shopper/codelab_rebuild.yaml @@ -0,0 +1,13 @@ +# Run with tooling from https://github.com/flutter/codelabs/tree/main/tooling/codelab_rebuild +name: Provider Shopper rebuild script +steps: + - name: Remove runners + rmdirs: + - android + - ios + - linux + - macos + - web + - windows + - name: Flutter recreate + flutter: create --org dev.flutter . diff --git a/provider_shopper/ios/.gitignore b/provider_shopper/ios/.gitignore index fe4a4744b..7a7f9873a 100644 --- a/provider_shopper/ios/.gitignore +++ b/provider_shopper/ios/.gitignore @@ -1,3 +1,4 @@ +**/dgph *.mode1v3 *.mode2v3 *.moved-aside @@ -14,11 +15,11 @@ Icon? profile xcuserdata **/.generated/ -Flutter/.last_build_id Flutter/App.framework Flutter/Flutter.framework Flutter/Flutter.podspec Flutter/Generated.xcconfig +Flutter/ephemeral/ Flutter/app.flx Flutter/app.zip Flutter/flutter_assets/ diff --git a/provider_shopper/ios/Flutter/AppFrameworkInfo.plist b/provider_shopper/ios/Flutter/AppFrameworkInfo.plist index 6b4c0f78a..9625e105d 100644 --- a/provider_shopper/ios/Flutter/AppFrameworkInfo.plist +++ b/provider_shopper/ios/Flutter/AppFrameworkInfo.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) + en CFBundleExecutable App CFBundleIdentifier @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 11.0 diff --git a/provider_shopper/ios/Podfile b/provider_shopper/ios/Podfile index 1e8c3c90a..88359b225 100644 --- a/provider_shopper/ios/Podfile +++ b/provider_shopper/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/provider_shopper/ios/Runner.xcodeproj/project.pbxproj b/provider_shopper/ios/Runner.xcodeproj/project.pbxproj index 672282308..80a93988e 100644 --- a/provider_shopper/ios/Runner.xcodeproj/project.pbxproj +++ b/provider_shopper/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -127,7 +127,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -272,7 +272,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -288,16 +288,12 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = TC87DMJLQP; ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( + LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/Flutter", + "@executable_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.providerShopper; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -354,7 +350,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -403,11 +399,12 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -420,16 +417,12 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = TC87DMJLQP; ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( + LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/Flutter", + "@executable_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.providerShopper; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -447,16 +440,12 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = TC87DMJLQP; ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( + LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/Flutter", + "@executable_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.providerShopper; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/provider_shopper/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/provider_shopper/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cfd..c87d15a33 100644 --- a/provider_shopper/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/provider_shopper/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ - - - - + + - - CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Provider Shopper CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -41,5 +43,9 @@ UIViewControllerBasedStatusBarAppearance + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + diff --git a/provider_shopper/linux/CMakeLists.txt b/provider_shopper/linux/CMakeLists.txt index 53d5c3a94..8989b41a5 100644 --- a/provider_shopper/linux/CMakeLists.txt +++ b/provider_shopper/linux/CMakeLists.txt @@ -1,11 +1,19 @@ +# Project-level configuration. cmake_minimum_required(VERSION 3.10) project(runner LANGUAGES CXX) +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. set(BINARY_NAME "provider_shopper") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID set(APPLICATION_ID "dev.flutter.provider_shopper") +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. cmake_policy(SET CMP0063 NEW) +# Load bundled libraries from the lib/ directory relative to the binary. set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") # Root filesystem for cross-building. @@ -18,7 +26,7 @@ if(FLUTTER_TARGET_PLATFORM_SYSROOT) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) endif() -# Configure build options. +# Define build configuration options. if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Flutter build mode" FORCE) @@ -27,6 +35,10 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) endif() # Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. function(APPLY_STANDARD_SETTINGS TARGET) target_compile_features(${TARGET} PUBLIC cxx_std_14) target_compile_options(${TARGET} PRIVATE -Wall -Werror) @@ -34,9 +46,8 @@ function(APPLY_STANDARD_SETTINGS TARGET) target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") endfunction() -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") - # Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") add_subdirectory(${FLUTTER_MANAGED_DIR}) # System-level dependencies. @@ -45,16 +56,27 @@ pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") -# Application build +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. add_executable(${BINARY_NAME} "main.cc" "my_application.cc" "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" ) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. target_link_libraries(${BINARY_NAME} PRIVATE flutter) target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. add_dependencies(${BINARY_NAME} flutter_assemble) + # Only the install-generated bundle's copy of the executable will launch # correctly, since the resources must in the right relative locations. To avoid # people trying to run the unbundled copy, put it in a subdirectory instead of @@ -94,11 +116,11 @@ install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR} install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) -endif() +endforeach(bundled_library) # Fully re-copy the assets directory on each build to avoid having stale files # from a previous install. diff --git a/provider_shopper/linux/flutter/CMakeLists.txt b/provider_shopper/linux/flutter/CMakeLists.txt index 33fd5801e..d5bd01648 100644 --- a/provider_shopper/linux/flutter/CMakeLists.txt +++ b/provider_shopper/linux/flutter/CMakeLists.txt @@ -1,3 +1,4 @@ +# This file controls Flutter-level build steps. It should not be edited. cmake_minimum_required(VERSION 3.10) set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") diff --git a/provider_shopper/macos/.gitignore b/provider_shopper/macos/.gitignore index d2fd37723..746adbb6b 100644 --- a/provider_shopper/macos/.gitignore +++ b/provider_shopper/macos/.gitignore @@ -3,4 +3,5 @@ **/Pods/ # Xcode-related +**/dgph **/xcuserdata/ diff --git a/provider_shopper/macos/Runner.xcodeproj/project.pbxproj b/provider_shopper/macos/Runner.xcodeproj/project.pbxproj index 5b5f99469..58ea768f1 100644 --- a/provider_shopper/macos/Runner.xcodeproj/project.pbxproj +++ b/provider_shopper/macos/Runner.xcodeproj/project.pbxproj @@ -26,10 +26,6 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; }; - 33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - D73912F022F37F9E000D13A0 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; }; - D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -49,8 +45,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */, - 33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */, ); name = "Bundle Framework"; runOnlyForDeploymentPostprocessing = 0; @@ -69,13 +63,11 @@ 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FlutterMacOS.framework; path = Flutter/ephemeral/FlutterMacOS.framework; sourceTree = SOURCE_ROOT; }; 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D73912EF22F37F9E000D13A0 /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/ephemeral/App.framework; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -83,8 +75,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D73912F022F37F9E000D13A0 /* App.framework in Frameworks */, - 33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -138,8 +128,6 @@ 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - D73912EF22F37F9E000D13A0 /* App.framework */, - 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */, ); path = Flutter; sourceTree = ""; @@ -194,8 +182,8 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 0930; - ORGANIZATIONNAME = "The Flutter Authors"; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; TargetAttributes = { 33CC10EC2044A3C60003C045 = { CreatedOnToolsVersion = 9.2; @@ -214,7 +202,7 @@ }; }; buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 8.0"; + compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -260,7 +248,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename\n"; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -280,7 +268,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh\ntouch Flutter/ephemeral/tripwire\n"; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; /* End PBXShellScriptBuildPhase section */ @@ -373,10 +361,6 @@ CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter/ephemeral", - ); INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -503,10 +487,6 @@ CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter/ephemeral", - ); INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -527,10 +507,6 @@ CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter/ephemeral", - ); INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/provider_shopper/macos/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/provider_shopper/macos/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 764c74b8d..000000000 --- a/provider_shopper/macos/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/provider_shopper/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/provider_shopper/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index dbc214d32..5c1ebb8ff 100644 --- a/provider_shopper/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/provider_shopper/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ - - - - - - - - + + - - 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 46993 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 diff --git a/provider_shopper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/provider_shopper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png index ed4cc16421680a50164ba74381b4b35ceaa0ccfc..13b35eba55c6dabc3aac36f33d859266c18fa0d0 100644 GIT binary patch literal 5680 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 literal 3276 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 N;OXk;vd$@?2>?>Ex^Vyi diff --git a/provider_shopper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/provider_shopper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png index bcbf36df2f2aaaa0a63c7dabc94e600184229d0d..bdb57226d5f2bd20f11934f4903f16459cf52379 100644 GIT binary patch literal 14142 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 diff --git a/provider_shopper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/provider_shopper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png index e71a726136a47ed24125c7efc79d68a4a01961b4..326c0e72c9d820600887813b3b98d0dd69c5d4e8 100644 GIT binary patch literal 36406 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 literal 14800 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 vNcLuCM3Rj?iBw@67X_p?_CF#jIyB-s + + + + diff --git a/provider_shopper/macos/Runner/Configs/AppInfo.xcconfig b/provider_shopper/macos/Runner/Configs/AppInfo.xcconfig index 082ddee57..d03fb0018 100644 --- a/provider_shopper/macos/Runner/Configs/AppInfo.xcconfig +++ b/provider_shopper/macos/Runner/Configs/AppInfo.xcconfig @@ -11,4 +11,4 @@ PRODUCT_NAME = provider_shopper PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.providerShopper // The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2020 dev.flutter. All rights reserved. +PRODUCT_COPYRIGHT = Copyright © 2022 dev.flutter. All rights reserved. diff --git a/provider_shopper/pubspec.yaml b/provider_shopper/pubspec.yaml index 76edfb554..2274d86f4 100644 --- a/provider_shopper/pubspec.yaml +++ b/provider_shopper/pubspec.yaml @@ -10,11 +10,7 @@ environment: dependencies: flutter: sdk: flutter - - # Import the provider package. provider: ^6.0.2 - - # plugin is not yet part of the flutter framework window_size: git: url: https://github.com/google/flutter-desktop-embedding.git diff --git a/provider_shopper/web/index.html b/provider_shopper/web/index.html index 4af726f95..1f4b645b7 100644 --- a/provider_shopper/web/index.html +++ b/provider_shopper/web/index.html @@ -1,20 +1,58 @@ + + + - + - + + + + provider_shopper - + + + + + - + diff --git a/provider_shopper/web/manifest.json b/provider_shopper/web/manifest.json index 0eaf3dd19..36ee28ac8 100644 --- a/provider_shopper/web/manifest.json +++ b/provider_shopper/web/manifest.json @@ -2,10 +2,10 @@ "name": "provider_shopper", "short_name": "provider_shopper", "start_url": ".", - "display": "minimal-ui", + "display": "standalone", "background_color": "#0175C2", "theme_color": "#0175C2", - "description": "A shopping app sample that uses Provider for state management.", + "description": "A new Flutter project.", "orientation": "portrait-primary", "prefer_related_applications": false, "icons": [ @@ -18,6 +18,18 @@ "src": "icons/Icon-512.png", "sizes": "512x512", "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" } ] } diff --git a/provider_shopper/windows/CMakeLists.txt b/provider_shopper/windows/CMakeLists.txt index 3ac5aee72..3f532acda 100644 --- a/provider_shopper/windows/CMakeLists.txt +++ b/provider_shopper/windows/CMakeLists.txt @@ -1,13 +1,16 @@ +# Project-level configuration. cmake_minimum_required(VERSION 3.14) project(provider_shopper LANGUAGES CXX) +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. set(BINARY_NAME "provider_shopper") +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. cmake_policy(SET CMP0063 NEW) -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Configure build options. +# Define build configuration option. get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(IS_MULTICONFIG) set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" @@ -20,7 +23,7 @@ else() "Debug" "Profile" "Release") endif() endif() - +# Define settings for the Profile build mode. set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") @@ -30,6 +33,10 @@ set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") add_definitions(-DUNICODE -D_UNICODE) # Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. function(APPLY_STANDARD_SETTINGS TARGET) target_compile_features(${TARGET} PUBLIC cxx_std_17) target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") @@ -38,12 +45,11 @@ function(APPLY_STANDARD_SETTINGS TARGET) target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") endfunction() -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") - # Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") add_subdirectory(${FLUTTER_MANAGED_DIR}) -# Application build +# Application build; see runner/CMakeLists.txt. add_subdirectory("runner") # Generated plugin build rules, which manage building the plugins and adding diff --git a/provider_shopper/windows/flutter/CMakeLists.txt b/provider_shopper/windows/flutter/CMakeLists.txt index b2e4bd8d6..930d2071a 100644 --- a/provider_shopper/windows/flutter/CMakeLists.txt +++ b/provider_shopper/windows/flutter/CMakeLists.txt @@ -1,3 +1,4 @@ +# This file controls Flutter-level build steps. It should not be edited. cmake_minimum_required(VERSION 3.14) set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") diff --git a/provider_shopper/windows/runner/CMakeLists.txt b/provider_shopper/windows/runner/CMakeLists.txt index de2d8916b..17411a8ab 100644 --- a/provider_shopper/windows/runner/CMakeLists.txt +++ b/provider_shopper/windows/runner/CMakeLists.txt @@ -1,6 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(runner LANGUAGES CXX) +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. add_executable(${BINARY_NAME} WIN32 "flutter_window.cpp" "main.cpp" @@ -10,8 +15,25 @@ add_executable(${BINARY_NAME} WIN32 "Runner.rc" "runner.exe.manifest" ) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/provider_shopper/windows/runner/Runner.rc b/provider_shopper/windows/runner/Runner.rc index 16a1c2f02..d280de586 100644 --- a/provider_shopper/windows/runner/Runner.rc +++ b/provider_shopper/windows/runner/Runner.rc @@ -60,14 +60,14 @@ IDI_APP_ICON ICON "resources\\app_icon.ico" // Version // -#ifdef FLUTTER_BUILD_NUMBER -#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD #else -#define VERSION_AS_NUMBER 1,0,0 +#define VERSION_AS_NUMBER 1,0,0,0 #endif -#ifdef FLUTTER_BUILD_NAME -#define VERSION_AS_STRING #FLUTTER_BUILD_NAME +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION #else #define VERSION_AS_STRING "1.0.0" #endif diff --git a/provider_shopper/windows/runner/runner.exe.manifest b/provider_shopper/windows/runner/runner.exe.manifest index c977c4a42..a42ea7687 100644 --- a/provider_shopper/windows/runner/runner.exe.manifest +++ b/provider_shopper/windows/runner/runner.exe.manifest @@ -7,7 +7,7 @@ - + diff --git a/provider_shopper/windows/runner/utils.cpp b/provider_shopper/windows/runner/utils.cpp index d19bdbbcc..f5bf9fa0f 100644 --- a/provider_shopper/windows/runner/utils.cpp +++ b/provider_shopper/windows/runner/utils.cpp @@ -48,10 +48,10 @@ std::string Utf8FromUtf16(const wchar_t* utf16_string) { int target_length = ::WideCharToMultiByte( CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, -1, nullptr, 0, nullptr, nullptr); - if (target_length == 0) { - return std::string(); - } std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } utf8_string.resize(target_length); int converted_length = ::WideCharToMultiByte( CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index f03d83a09..6a07361e3 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -19,7 +19,7 @@ declare -ar PROJECT_NAMES=( "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" "experimental/web_dashboard" - # TODO(domesticmouse): Needs a reformat to work on master + # TODO(DomesticMouse): Needs to be re-formatted for Flutter beta # "experimental/linting_tool" "experimental/material_3_demo" "flutter_maps_firestore" @@ -40,7 +40,7 @@ declare -ar PROJECT_NAMES=( "platform_view_swift" "provider_counter" "provider_shopper" - # TODO(domesticmouse): Missing concrete implementation of 'TextInputClient.performSelector' + # TODO(DomesticMouse): https://github.com/flutter/samples/issues/1443 # "simplistic_editor" "testing_app" "veggieseasons" From 06a159a465cef559037f165bb5f4631cfd46b9b8 Mon Sep 17 00:00:00 2001 From: Bruno Leroux Date: Wed, 5 Oct 2022 08:47:51 +0200 Subject: [PATCH 012/134] [simplistic_editor] - Fix delete key on desktop and backspace key on Web (#1458) * Do not propagate to default text intent * Add support for backward and forward delete (desktop) * Update for nice auto-format * Fix using delete key throws if at the end of the text Co-authored-by: Bruno Leroux --- .../lib/basic_text_input_client.dart | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/simplistic_editor/lib/basic_text_input_client.dart b/simplistic_editor/lib/basic_text_input_client.dart index ae601f82b..7190d5555 100644 --- a/simplistic_editor/lib/basic_text_input_client.dart +++ b/simplistic_editor/lib/basic_text_input_client.dart @@ -299,7 +299,7 @@ class BasicTextInputClientState extends State TextSelection get _selection => _value.selection; late final Map> _actions = >{ DeleteCharacterIntent: CallbackAction( - onInvoke: (intent) => _delete(), + onInvoke: (intent) => _delete(intent.forward), ), ExtendSelectionByCharacterIntent: CallbackAction( @@ -315,22 +315,35 @@ class BasicTextInputClientState extends State PasteTextIntent: CallbackAction( onInvoke: (intent) => pasteText(intent.cause), ), + DoNothingAndStopPropagationTextIntent: DoNothingAction( + consumesKey: false, + ), }; - void _delete() { + void _delete(bool forward) { if (_value.text.isEmpty) return; late final TextRange deletedRange; late final TextRange newComposing; - final int deletedLength = - _value.text.substring(0, _selection.baseOffset).characters.last.length; + late final String deletedText; + final int offset = _selection.baseOffset; if (_selection.isCollapsed) { - if (_selection.baseOffset == 0) return; - deletedRange = TextRange( - start: _selection.baseOffset - deletedLength, - end: _selection.baseOffset, - ); + if (forward) { + if (_selection.baseOffset == _value.text.length) return; + deletedText = _value.text.substring(offset).characters.first; + deletedRange = TextRange( + start: offset, + end: offset + deletedText.length, + ); + } else { + if (_selection.baseOffset == 0) return; + deletedText = _value.text.substring(0, offset).characters.last; + deletedRange = TextRange( + start: offset - deletedText.length, + end: offset, + ); + } } else { deletedRange = _selection; } From 9d860933429791edba500a581c9fa1011b42c227 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Oct 2022 03:08:08 -0500 Subject: [PATCH 013/134] Bump actions/checkout from 3.0.2 to 3.1.0 (#1460) Bumps [actions/checkout](https://github.com/actions/checkout) from 3.0.2 to 3.1.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/2541b1294d2704b0964813337f33b291d3f8596b...93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/beta.yml | 6 +++--- .github/workflows/gh-pages.yml | 2 +- .github/workflows/main.yml | 6 +++--- .github/workflows/scorecards-analysis.yml | 2 +- .github/workflows/verify-web-demos.yml | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index 9e259b7db..d18f899cb 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -26,7 +26,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'flutter/samples' steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' @@ -56,7 +56,7 @@ jobs: runs-on: macos-latest if: github.repository == 'flutter/samples' steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 3393c14d1..79609edeb 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 with: submodules: true fetch-depth: 0 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b554540bc..7f4112cb2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,7 +27,7 @@ jobs: flutter_version: [stable, beta, master] os: [ubuntu-latest, macos-latest, windows-latest] steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'flutter/samples' steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' @@ -53,7 +53,7 @@ jobs: runs-on: macos-latest if: github.repository == 'flutter/samples' steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d with: distribution: 'zulu' diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 9d8d97d91..d1efa78c2 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -22,7 +22,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 with: persist-credentials: false diff --git a/.github/workflows/verify-web-demos.yml b/.github/workflows/verify-web-demos.yml index 22fb49cbf..d306f32db 100644 --- a/.github/workflows/verify-web-demos.yml +++ b/.github/workflows/verify-web-demos.yml @@ -20,7 +20,7 @@ jobs: - beta steps: - name: Checkout - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 with: submodules: true fetch-depth: 0 From fc6222ebc88ca7ae9598e7c2cb8062d81a54a110 Mon Sep 17 00:00:00 2001 From: Craig Labenz Date: Wed, 5 Oct 2022 08:47:30 -0700 Subject: [PATCH 014/134] Add code sharing sample (#1444) * code-sharing boilerplate * initial commit of code-sharing logic * documentation improvements * added code-sharing to samples.yaml * Updated counter UI to visually indicate communication with the server * added code_sharing to CI * CI changes to code_sharing * fixed test with DI * formatting * added shared module to CI * adds forgotten CI change --- code_sharing/Makefile | 24 + code_sharing/README.md | 191 ++++++ code_sharing/client/.gitignore | 44 ++ code_sharing/client/.metadata | 45 ++ code_sharing/client/README.md | 16 + code_sharing/client/analysis_options.yaml | 29 + code_sharing/client/android/.gitignore | 13 + code_sharing/client/android/app/build.gradle | 71 +++ .../android/app/src/debug/AndroidManifest.xml | 8 + .../android/app/src/main/AndroidManifest.xml | 34 ++ .../kotlin/com/example/client/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + .../app/src/main/res/values/styles.xml | 18 + .../app/src/profile/AndroidManifest.xml | 8 + code_sharing/client/android/build.gradle | 31 + code_sharing/client/android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + code_sharing/client/android/settings.gradle | 11 + code_sharing/client/ios/.gitignore | 34 ++ .../client/ios/Flutter/AppFrameworkInfo.plist | 26 + .../client/ios/Flutter/Debug.xcconfig | 1 + .../client/ios/Flutter/Release.xcconfig | 1 + .../ios/Runner.xcodeproj/project.pbxproj | 483 +++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../client/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 ++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ .../ios/Runner/Base.lproj/Main.storyboard | 26 + code_sharing/client/ios/Runner/Info.plist | 51 ++ .../ios/Runner/Runner-Bridging-Header.h | 1 + code_sharing/client/lib/main.dart | 141 +++++ code_sharing/client/linux/.gitignore | 1 + code_sharing/client/linux/CMakeLists.txt | 138 +++++ .../client/linux/flutter/CMakeLists.txt | 88 +++ .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + .../linux/flutter/generated_plugins.cmake | 23 + code_sharing/client/linux/main.cc | 6 + code_sharing/client/linux/my_application.cc | 104 ++++ code_sharing/client/linux/my_application.h | 18 + code_sharing/client/macos/.gitignore | 7 + .../macos/Flutter/Flutter-Debug.xcconfig | 1 + .../macos/Flutter/Flutter-Release.xcconfig | 1 + .../Flutter/GeneratedPluginRegistrant.swift | 10 + .../macos/Runner.xcodeproj/project.pbxproj | 573 ++++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../client/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 +++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 +++++++++++ .../macos/Runner/Configs/AppInfo.xcconfig | 14 + .../macos/Runner/Configs/Debug.xcconfig | 2 + .../macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 14 + code_sharing/client/macos/Runner/Info.plist | 32 + .../macos/Runner/MainFlutterWindow.swift | 15 + .../client/macos/Runner/Release.entitlements | 8 + code_sharing/client/pubspec.yaml | 23 + code_sharing/client/test/widget_test.dart | 15 + code_sharing/client/web/favicon.png | Bin 0 -> 917 bytes code_sharing/client/web/icons/Icon-192.png | Bin 0 -> 5292 bytes code_sharing/client/web/icons/Icon-512.png | Bin 0 -> 8252 bytes .../client/web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes .../client/web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes code_sharing/client/web/index.html | 59 ++ code_sharing/client/web/manifest.json | 35 ++ code_sharing/client/windows/.gitignore | 17 + code_sharing/client/windows/CMakeLists.txt | 101 +++ .../client/windows/flutter/CMakeLists.txt | 104 ++++ .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + .../windows/flutter/generated_plugins.cmake | 23 + .../client/windows/runner/CMakeLists.txt | 40 ++ code_sharing/client/windows/runner/Runner.rc | 121 ++++ .../client/windows/runner/flutter_window.cpp | 66 ++ .../client/windows/runner/flutter_window.h | 33 + code_sharing/client/windows/runner/main.cpp | 43 ++ code_sharing/client/windows/runner/resource.h | 16 + .../windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes .../client/windows/runner/runner.exe.manifest | 20 + code_sharing/client/windows/runner/utils.cpp | 64 ++ code_sharing/client/windows/runner/utils.h | 19 + .../client/windows/runner/win32_window.cpp | 288 +++++++++ .../client/windows/runner/win32_window.h | 102 ++++ code_sharing/docker-compose.yml | 11 + code_sharing/server/.dockerignore | 9 + code_sharing/server/.gitignore | 6 + code_sharing/server/CHANGELOG.md | 3 + code_sharing/server/Dockerfile | 20 + code_sharing/server/README.md | 49 ++ code_sharing/server/analysis_options.yaml | 30 + code_sharing/server/bin/server.dart | 36 ++ code_sharing/server/pubspec.yaml | 19 + code_sharing/server/shared/.gitignore | 10 + code_sharing/server/shared/CHANGELOG.md | 3 + code_sharing/server/shared/README.md | 39 ++ .../server/shared/analysis_options.yaml | 29 + code_sharing/server/shared/lib/shared.dart | 4 + .../server/shared/lib/src/models.dart | 19 + .../server/shared/lib/src/models.freezed.dart | 271 +++++++++ .../server/shared/lib/src/models.g.dart | 24 + code_sharing/server/shared/pubspec.yaml | 17 + .../server/shared/test/shared_test.dart | 17 + code_sharing/server/test/server_test.dart | 40 ++ tool/flutter_ci_script_beta.sh | 3 + tool/flutter_ci_script_master.sh | 4 +- tool/flutter_ci_script_stable.sh | 2 + web/samples_index/lib/src/samples.yaml | 18 + web/samples_index/web/images/code_sharing.jpg | Bin 0 -> 114647 bytes 152 files changed, 5219 insertions(+), 1 deletion(-) create mode 100644 code_sharing/Makefile create mode 100644 code_sharing/README.md create mode 100644 code_sharing/client/.gitignore create mode 100644 code_sharing/client/.metadata create mode 100644 code_sharing/client/README.md create mode 100644 code_sharing/client/analysis_options.yaml create mode 100644 code_sharing/client/android/.gitignore create mode 100644 code_sharing/client/android/app/build.gradle create mode 100644 code_sharing/client/android/app/src/debug/AndroidManifest.xml create mode 100644 code_sharing/client/android/app/src/main/AndroidManifest.xml create mode 100644 code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt create mode 100644 code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 code_sharing/client/android/app/src/main/res/drawable/launch_background.xml create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/values-night/styles.xml create mode 100644 code_sharing/client/android/app/src/main/res/values/styles.xml create mode 100644 code_sharing/client/android/app/src/profile/AndroidManifest.xml create mode 100644 code_sharing/client/android/build.gradle create mode 100644 code_sharing/client/android/gradle.properties create mode 100644 code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 code_sharing/client/android/settings.gradle create mode 100644 code_sharing/client/ios/.gitignore create mode 100644 code_sharing/client/ios/Flutter/AppFrameworkInfo.plist create mode 100644 code_sharing/client/ios/Flutter/Debug.xcconfig create mode 100644 code_sharing/client/ios/Flutter/Release.xcconfig create mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.pbxproj create mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 code_sharing/client/ios/Runner/AppDelegate.swift create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 code_sharing/client/ios/Runner/Base.lproj/Main.storyboard create mode 100644 code_sharing/client/ios/Runner/Info.plist create mode 100644 code_sharing/client/ios/Runner/Runner-Bridging-Header.h create mode 100644 code_sharing/client/lib/main.dart create mode 100644 code_sharing/client/linux/.gitignore create mode 100644 code_sharing/client/linux/CMakeLists.txt create mode 100644 code_sharing/client/linux/flutter/CMakeLists.txt create mode 100644 code_sharing/client/linux/flutter/generated_plugin_registrant.cc create mode 100644 code_sharing/client/linux/flutter/generated_plugin_registrant.h create mode 100644 code_sharing/client/linux/flutter/generated_plugins.cmake create mode 100644 code_sharing/client/linux/main.cc create mode 100644 code_sharing/client/linux/my_application.cc create mode 100644 code_sharing/client/linux/my_application.h create mode 100644 code_sharing/client/macos/.gitignore create mode 100644 code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 code_sharing/client/macos/Flutter/Flutter-Release.xcconfig create mode 100644 code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 code_sharing/client/macos/Runner.xcodeproj/project.pbxproj create mode 100644 code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 code_sharing/client/macos/Runner/AppDelegate.swift create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 code_sharing/client/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 code_sharing/client/macos/Runner/Configs/Debug.xcconfig create mode 100644 code_sharing/client/macos/Runner/Configs/Release.xcconfig create mode 100644 code_sharing/client/macos/Runner/Configs/Warnings.xcconfig create mode 100644 code_sharing/client/macos/Runner/DebugProfile.entitlements create mode 100644 code_sharing/client/macos/Runner/Info.plist create mode 100644 code_sharing/client/macos/Runner/MainFlutterWindow.swift create mode 100644 code_sharing/client/macos/Runner/Release.entitlements create mode 100644 code_sharing/client/pubspec.yaml create mode 100644 code_sharing/client/test/widget_test.dart create mode 100644 code_sharing/client/web/favicon.png create mode 100644 code_sharing/client/web/icons/Icon-192.png create mode 100644 code_sharing/client/web/icons/Icon-512.png create mode 100644 code_sharing/client/web/icons/Icon-maskable-192.png create mode 100644 code_sharing/client/web/icons/Icon-maskable-512.png create mode 100644 code_sharing/client/web/index.html create mode 100644 code_sharing/client/web/manifest.json create mode 100644 code_sharing/client/windows/.gitignore create mode 100644 code_sharing/client/windows/CMakeLists.txt create mode 100644 code_sharing/client/windows/flutter/CMakeLists.txt create mode 100644 code_sharing/client/windows/flutter/generated_plugin_registrant.cc create mode 100644 code_sharing/client/windows/flutter/generated_plugin_registrant.h create mode 100644 code_sharing/client/windows/flutter/generated_plugins.cmake create mode 100644 code_sharing/client/windows/runner/CMakeLists.txt create mode 100644 code_sharing/client/windows/runner/Runner.rc create mode 100644 code_sharing/client/windows/runner/flutter_window.cpp create mode 100644 code_sharing/client/windows/runner/flutter_window.h create mode 100644 code_sharing/client/windows/runner/main.cpp create mode 100644 code_sharing/client/windows/runner/resource.h create mode 100644 code_sharing/client/windows/runner/resources/app_icon.ico create mode 100644 code_sharing/client/windows/runner/runner.exe.manifest create mode 100644 code_sharing/client/windows/runner/utils.cpp create mode 100644 code_sharing/client/windows/runner/utils.h create mode 100644 code_sharing/client/windows/runner/win32_window.cpp create mode 100644 code_sharing/client/windows/runner/win32_window.h create mode 100644 code_sharing/docker-compose.yml create mode 100644 code_sharing/server/.dockerignore create mode 100644 code_sharing/server/.gitignore create mode 100644 code_sharing/server/CHANGELOG.md create mode 100644 code_sharing/server/Dockerfile create mode 100644 code_sharing/server/README.md create mode 100644 code_sharing/server/analysis_options.yaml create mode 100644 code_sharing/server/bin/server.dart create mode 100644 code_sharing/server/pubspec.yaml create mode 100644 code_sharing/server/shared/.gitignore create mode 100644 code_sharing/server/shared/CHANGELOG.md create mode 100644 code_sharing/server/shared/README.md create mode 100644 code_sharing/server/shared/analysis_options.yaml create mode 100644 code_sharing/server/shared/lib/shared.dart create mode 100644 code_sharing/server/shared/lib/src/models.dart create mode 100644 code_sharing/server/shared/lib/src/models.freezed.dart create mode 100644 code_sharing/server/shared/lib/src/models.g.dart create mode 100644 code_sharing/server/shared/pubspec.yaml create mode 100644 code_sharing/server/shared/test/shared_test.dart create mode 100644 code_sharing/server/test/server_test.dart create mode 100644 web/samples_index/web/images/code_sharing.jpg diff --git a/code_sharing/Makefile b/code_sharing/Makefile new file mode 100644 index 000000000..faf874bbe --- /dev/null +++ b/code_sharing/Makefile @@ -0,0 +1,24 @@ +# MacOS/Linux-only. Sadly, this is only helpful as documentation for Windows. + +# LOCAL / DOCKER +run-server: + # Depends on `make build` + docker-compose up -d + +stop-server: + docker-compose stop + +# Flutter +flutter-local: + cd client && flutter run -d macos + +test: + (cd shared && dart test) + (cd server && dart test) + (cd client && flutter test) + +# Docker +build: + (cd server && flutter pub get) + docker build ./server -t codesharingserver -f server/Dockerfile + diff --git a/code_sharing/README.md b/code_sharing/README.md new file mode 100644 index 000000000..5c7187357 --- /dev/null +++ b/code_sharing/README.md @@ -0,0 +1,191 @@ + +# Code Sharing + + + +A full-stack Dart application using Flutter on the client and +[`shelf`](https://pub.dev/packages/shelf) on the server. The Flutter app +itself is still the counter app, but the actual number is stored on the server +and incremented over HTTP using transport data classes understood by both the +Flutter client and shelf server. + +## Goals + +The goal of this sample is to demonstrate the mechanics of sharing business +logic between a Flutter client and a Dart server. The sample also includes a +slightly modified Dockerfile which is required to build a Docker image from +a Dart app containing nested packages. + +## Project Structure + +The sample's project structure is as follows: + +``` +code_sharing/ + # Flutter app + client/ + lib/ + ... + pubspec.yaml + ... + # Shelf + server/ + bin/ + server.dart + # Common business logic + shared/ + pubspec.yaml + lib/ + ... + pubspec.yaml + Dockerfile +``` + +## Recreating this on your own + +Recreating this introductory project for yourself can be done in several steps. + +1. Create a parent directory, likely sharing a name with your project or +product, which will contain everything. +2. Within that directory, run `flutter create client`. You may also name this +Flutter project `app`, `mobile`, `-app` or anything else that +seems appropriate. At this point, your folder structure should look like this: + ``` + my_project/ + client/ + lib/ + main.dart + pubspec.yaml + ... + ``` +3. From the same location where you ran `flutter create`, run +`dart create -t server-shelf server`. You may also name this Shelf project, +`backend`, `api`, `-server`, or anything else that seems +appropriate. At this point, your folder structure should look like this: + ``` + my_project/ + client/ + lib/ + main.dart + pubspec.yaml + ... + server/ + bin/ + server.dart + Dockerfile + pubspec.yaml + ... + ``` +4. Enter your server directory (`cd server`), and run `dart create -t package shared`. +You may also name this package `common`, `domain`, `-shared`, or +anything else that seems appropriate. At this point, your folder structure should +resemble the sample: + ``` + my_project/ + client/ + lib/ + main.dart + pubspec.yaml + ... + server/ + bin/ + server.dart + shared/ + lib/ + src/ + ... + shared.dart + pubspec.yaml + ... + Dockerfile + pubspec.yaml + ... + ``` +5. Next, begin granting access to your shared code by making the following +edits to your Flutter app's `pubspec.yaml` file. Open that file +(`client/pubspec.yaml`) and add the following dependency under the +`dependencies` block: + + ``` + dependencies: + # Add these two lines: + shared: + path: ../server/shared + ``` +6. Next, finish granting access to your shared code by making the following +edits to your server's `pubspec.yaml` file. Open that file +(`server/pubspec.yaml`) and add the following dependency under the +`dependencies` block: + + ``` + dependencies: + # Add these two lines: + shared: + path: ./shared + ``` +7. The final step is to adjust your `Dockerfile`, as it can no longer +successfully run `dart pub get` after only copying over the `pubspec.yaml` +file (that command now requires the entirety of your `shared` directory to be +present. + +- Find the line that says `COPY pubspec.* ./`, and change it to `COPY . .`. + +With that, you're ready to build and run the app. + +## Running the sample + +To run the sample, or an equivalent you've reconstructed yourself, choose a +runtime method below based on your needs. + +### From the CLI + +In one terminal window, run the following commands: + +```sh +cd my_project/server +dart run bin/server.dart +``` + +In a separate terminal window, run the following commands: + +```sh +cd my_project/client +flutter run +``` + +> Note: If you named your mobile client and backend servers something other +than `client` and `server`, you will need to substitute in those values above. + +### Build and run with Docker + +To build your server's Docker image, run the following commands in a terminal +window: + +```sh +cd my_project/server +docker build . -t my_project_server +``` + +To run that image as a Docker container, run the following commands in a +terminal window: + +```sh +docker run -it my_project_server +``` + +### Build and run with `docker-compose` + +If you have [`docker-compose`](https://docs.docker.com/compose/install/) +installed on your machine, you can run the following command to build and +launch your server: + +```sh +cd my_project +docker-compose up -d +``` + +And then later stop the server with: + +```sh +docker-compose stop +``` \ No newline at end of file diff --git a/code_sharing/client/.gitignore b/code_sharing/client/.gitignore new file mode 100644 index 000000000..24476c5d1 --- /dev/null +++ b/code_sharing/client/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/code_sharing/client/.metadata b/code_sharing/client/.metadata new file mode 100644 index 000000000..bf169f91c --- /dev/null +++ b/code_sharing/client/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + channel: main + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: android + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: ios + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: linux + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: macos + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: web + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: windows + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/code_sharing/client/README.md b/code_sharing/client/README.md new file mode 100644 index 000000000..2a43b574c --- /dev/null +++ b/code_sharing/client/README.md @@ -0,0 +1,16 @@ +# client + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/code_sharing/client/analysis_options.yaml b/code_sharing/client/analysis_options.yaml new file mode 100644 index 000000000..61b6c4de1 --- /dev/null +++ b/code_sharing/client/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/code_sharing/client/android/.gitignore b/code_sharing/client/android/.gitignore new file mode 100644 index 000000000..6f568019d --- /dev/null +++ b/code_sharing/client/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/code_sharing/client/android/app/build.gradle b/code_sharing/client/android/app/build.gradle new file mode 100644 index 000000000..9f91be9f6 --- /dev/null +++ b/code_sharing/client/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.client" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/code_sharing/client/android/app/src/debug/AndroidManifest.xml b/code_sharing/client/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..3ddafc529 --- /dev/null +++ b/code_sharing/client/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/code_sharing/client/android/app/src/main/AndroidManifest.xml b/code_sharing/client/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..fc7c7bda5 --- /dev/null +++ b/code_sharing/client/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt b/code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt new file mode 100644 index 000000000..a467eb774 --- /dev/null +++ b/code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.client + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml b/code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/code_sharing/client/android/app/src/main/res/drawable/launch_background.xml b/code_sharing/client/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/code_sharing/client/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/code_sharing/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/code_sharing/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/code_sharing/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/code_sharing/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/code_sharing/client/android/app/src/main/res/values-night/styles.xml b/code_sharing/client/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/code_sharing/client/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/code_sharing/client/android/app/src/main/res/values/styles.xml b/code_sharing/client/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/code_sharing/client/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/code_sharing/client/android/app/src/profile/AndroidManifest.xml b/code_sharing/client/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..3ddafc529 --- /dev/null +++ b/code_sharing/client/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/code_sharing/client/android/build.gradle b/code_sharing/client/android/build.gradle new file mode 100644 index 000000000..58a8c74b1 --- /dev/null +++ b/code_sharing/client/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.7.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.2.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/code_sharing/client/android/gradle.properties b/code_sharing/client/android/gradle.properties new file mode 100644 index 000000000..94adc3a3f --- /dev/null +++ b/code_sharing/client/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties b/code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..3c472b99c --- /dev/null +++ b/code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/code_sharing/client/android/settings.gradle b/code_sharing/client/android/settings.gradle new file mode 100644 index 000000000..44e62bcf0 --- /dev/null +++ b/code_sharing/client/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/code_sharing/client/ios/.gitignore b/code_sharing/client/ios/.gitignore new file mode 100644 index 000000000..7a7f9873a --- /dev/null +++ b/code_sharing/client/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/code_sharing/client/ios/Flutter/AppFrameworkInfo.plist b/code_sharing/client/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..9625e105d --- /dev/null +++ b/code_sharing/client/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/code_sharing/client/ios/Flutter/Debug.xcconfig b/code_sharing/client/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/code_sharing/client/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/code_sharing/client/ios/Flutter/Release.xcconfig b/code_sharing/client/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/code_sharing/client/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.pbxproj b/code_sharing/client/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..42204d380 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,483 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.client; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.client; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.client; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..c87d15a33 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata b/code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/code_sharing/client/ios/Runner/AppDelegate.swift b/code_sharing/client/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..70693e4a8 --- /dev/null +++ b/code_sharing/client/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 zcmV;526g#~P){YQnis^a@{&-nmRmq)<&%Mztj67_#M}W?l>kYSliK<%xAp;0j{!}J0!o7b zE>q9${Lb$D&h7k=+4=!ek^n+`0zq>LL1O?lVyea53S5x`Nqqo2YyeuIrQrJj9XjOp z{;T5qbj3}&1vg1VK~#9!?b~^C5-}JC@Pyrv-6dSEqJqT}#j9#dJ@GzT@B8}x zU&J@bBI>f6w6en+CeI)3^kC*U?}X%OD8$Fd$H&LV$H&LV$H&LV#|K5~mLYf|VqzOc zkc7qL~0sOYuM{tG`rYEDV{DWY`Z8&)kW*hc2VkBuY+^Yx&92j&StN}Wp=LD zxoGxXw6f&8sB^u})h@b@z0RBeD`K7RMR9deyL(ZJu#39Z>rT)^>v}Khq8U-IbIvT> z?4pV9qGj=2)TNH3d)=De<+^w;>S7m_eFKTvzeaBeir45xY!^m!FmxnljbSS_3o=g( z->^wC9%qkR{kbGnW8MfFew_o9h3(r55Is`L$8KI@d+*%{=Nx+FXJ98L0PjFIu;rGnnfY zn1R5Qnp<{Jq0M1vX=X&F8gtLmcWv$1*M@4ZfF^9``()#hGTeKeP`1!iED ztNE(TN}M5}3Bbc*d=FIv`DNv&@|C6yYj{sSqUj5oo$#*0$7pu|Dd2TLI>t5%I zIa4Dvr(iayb+5x=j*Vum9&irk)xV1`t509lnPO0%skL8_1c#Xbamh(2@f?4yUI zhhuT5<#8RJhGz4%b$`PJwKPAudsm|at?u;*hGgnA zU1;9gnxVBC)wA(BsB`AW54N{|qmikJR*%x0c`{LGsSfa|NK61pYH(r-UQ4_JXd!Rsz)=k zL{GMc5{h138)fF5CzHEDM>+FqY)$pdN3}Ml+riTgJOLN0F*Vh?{9ESR{SVVg>*>=# zix;VJHPtvFFCRY$Ks*F;VX~%*r9F)W`PmPE9F!(&s#x07n2<}?S{(ygpXgX-&B&OM zONY&BRQ(#%0%jeQs?oJ4P!p*R98>qCy5p8w>_gpuh39NcOlp)(wOoz0sY-Qz55eB~ z7OC-fKBaD1sE3$l-6QgBJO!n?QOTza`!S_YK z_v-lm^7{VO^8Q@M_^8F)09Ki6%=s?2_5eupee(w1FB%aqSweusQ-T+CH0Xt{` zFjMvW{@C&TB)k25()nh~_yJ9coBRL(0oO@HK~z}7?bm5j;y@69;bvlHb2tf!$ReA~x{22wTq550 z?f?Hnw(;m3ip30;QzdV~7pi!wyMYhDtXW#cO7T>|f=bdFhu+F!zMZ2UFj;GUKX7tI z;hv3{q~!*pMj75WP_c}>6)IWvg5_yyg<9Op()eD1hWC19M@?_9_MHec{Z8n3FaF{8 z;u`Mw0ly(uE>*CgQYv{be6ab2LWhlaH1^iLIM{olnag$78^Fd}%dR7;JECQ+hmk|o z!u2&!3MqPfP5ChDSkFSH8F2WVOEf0(E_M(JL17G}Y+fg0_IuW%WQ zG(mG&u?|->YSdk0;8rc{yw2@2Z&GA}z{Wb91Ooz9VhA{b2DYE7RmG zjL}?eq#iX%3#k;JWMx_{^2nNax`xPhByFiDX+a7uTGU|otOvIAUy|dEKkXOm-`aWS z27pUzD{a)Ct<6p{{3)+lq@i`t@%>-wT4r?*S}k)58e09WZYP0{{R3FC5Sl00039P)t-s|Ns9~ z#rP?<_5oL$Q^olD{r_0T`27C={r>*`|Nj71npVa5OTzc(_WfbW_({R{p56NV{r*M2 z_xt?)2V0#0NsfV0u>{42ctGP(8vQj-Btk1n|O0ZD=YLwd&R{Ko41Gr9H= zY@z@@bOAMB5Ltl$E>bJJ{>JP30ZxkmI%?eW{k`b?Wy<&gOo;dS`~CR$Vwb@XWtR|N zi~t=w02?-0&j0TD{>bb6sNwsK*!p?V`RMQUl(*DVjk-9Cx+-z1KXab|Ka2oXhX5f% z`$|e!000AhNklrxs)5QTeTVRiEmz~MKK1WAjCw(c-JK6eox;2O)?`? zTG`AHia671e^vgmp!llKp|=5sVHk#C7=~epA~VAf-~%aPC=%Qw01h8mnSZ|p?hz91 z7p83F3%LVu9;S$tSI$C^%^yud1dfTM_6p2|+5Ejp$bd`GDvbR|xit>i!ZD&F>@CJrPmu*UjD&?DfZs=$@e3FQA(vNiU+$A*%a} z?`XcG2jDxJ_ZQ#Md`H{4Lpf6QBDp81_KWZ6Tk#yCy1)32zO#3<7>b`eT7UyYH1eGz z;O(rH$=QR*L%%ZcBpc=eGua?N55nD^K(8<#gl2+pN_j~b2MHs4#mcLmv%DkspS-3< zpI1F=^9siI0s-;IN_IrA;5xm~3?3!StX}pUv0vkxMaqm+zxrg7X7(I&*N~&dEd0kD z-FRV|g=|QuUsuh>-xCI}vD2imzYIOIdcCVV=$Bz@*u0+Bs<|L^)32nN*=wu3n%Ynw z@1|eLG>!8ruU1pFXUfb`j>(=Gy~?Rn4QJ-c3%3T|(Frd!bI`9u&zAnyFYTqlG#&J7 zAkD(jpw|oZLNiA>;>hgp1KX7-wxC~31II47gc zHcehD6Uxlf%+M^^uN5Wc*G%^;>D5qT{>=uxUhX%WJu^Z*(_Wq9y}npFO{Hhb>s6<9 zNi0pHXWFaVZnb)1+RS&F)xOv6&aeILcI)`k#0YE+?e)5&#r7J#c`3Z7x!LpTc01dx zrdC3{Z;joZ^KN&))zB_i)I9fWedoN>Zl-6_Iz+^G&*ak2jpF07*qoM6N<$f;w%0(f|Me literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..0bedcf2fd --- /dev/null +++ b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard b/code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/ios/Runner/Base.lproj/Main.storyboard b/code_sharing/client/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/code_sharing/client/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/ios/Runner/Info.plist b/code_sharing/client/ios/Runner/Info.plist new file mode 100644 index 000000000..e68305132 --- /dev/null +++ b/code_sharing/client/ios/Runner/Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Client + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + client + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/code_sharing/client/ios/Runner/Runner-Bridging-Header.h b/code_sharing/client/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/code_sharing/client/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/code_sharing/client/lib/main.dart b/code_sharing/client/lib/main.dart new file mode 100644 index 000000000..e96b52fc9 --- /dev/null +++ b/code_sharing/client/lib/main.dart @@ -0,0 +1,141 @@ +import 'dart:convert'; +import 'dart:io'; +import 'package:http/http.dart' as http; +import 'package:shared/shared.dart'; +import 'package:flutter/material.dart'; + +final port = Platform.environment['PORT'] ?? '8080'; +final host = Platform.environment['SERVER_URL'] ?? '127.0.0.1'; +final scheme = Platform.environment['SERVER_SCHEME'] ?? 'http'; +final serverUrl = Uri.parse('$scheme://$host:$port/'); + +void main() { + runApp( + const MyApp( + getCount: getCount, + increment: increment, + ), + ); +} + +class MyApp extends StatelessWidget { + const MyApp({ + super.key, + required this.getCount, + required this.increment, + }); + + final Future Function() getCount; + final Future Function(int) increment; + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + primarySwatch: Colors.blue, + ), + home: MyHomePage( + title: 'Flutter Demo Home Page', + getCount: getCount, + increment: increment, + ), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({ + super.key, + required this.title, + required this.getCount, + required this.increment, + }); + + final String title; + final Future Function() getCount; + final Future Function(int) increment; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + int _counter = 0; + int localClicks = 0; + bool isWriting = false; + + @override + void initState() { + super.initState(); + widget.getCount().then((int val) => _counter = val); + } + + void _incrementCounter() { + localClicks += 1; + setState(() => isWriting = true); + widget.increment(localClicks).then( + (int val) => setState( + () { + _counter = val; + isWriting = true; + }, + ), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(widget.title), + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'You have pushed the button this many times:', + style: TextStyle(fontSize: 20), + ), + Text( + '$_counter', + style: Theme.of(context).textTheme.headlineMedium, + ), + if (isWriting) ...[ + const SizedBox(height: 10), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: const [ + Text( + 'Communicating with server...', + style: TextStyle(fontSize: 32, color: Colors.blue), + ), + SizedBox(width: 10), + CircularProgressIndicator.adaptive(), + ], + ), + ], + ], + ), + ), + floatingActionButton: FloatingActionButton( + onPressed: _incrementCounter, + tooltip: 'Increment', + child: const Icon(Icons.add), + ), + ); + } +} + +Future getCount() async { + return http + .get(serverUrl) + .then((resp) => Count.fromJson(json.decode(resp.body)).value); +} + +Future increment(int by) async { + return http + .post(serverUrl, body: json.encode(Increment(by: by).toJson())) + .then((resp) => Count.fromJson(json.decode(resp.body)).value); +} diff --git a/code_sharing/client/linux/.gitignore b/code_sharing/client/linux/.gitignore new file mode 100644 index 000000000..d3896c984 --- /dev/null +++ b/code_sharing/client/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/code_sharing/client/linux/CMakeLists.txt b/code_sharing/client/linux/CMakeLists.txt new file mode 100644 index 000000000..4d47043c4 --- /dev/null +++ b/code_sharing/client/linux/CMakeLists.txt @@ -0,0 +1,138 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "client") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.client") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/code_sharing/client/linux/flutter/CMakeLists.txt b/code_sharing/client/linux/flutter/CMakeLists.txt new file mode 100644 index 000000000..d5bd01648 --- /dev/null +++ b/code_sharing/client/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/code_sharing/client/linux/flutter/generated_plugin_registrant.cc b/code_sharing/client/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 000000000..e71a16d23 --- /dev/null +++ b/code_sharing/client/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void fl_register_plugins(FlPluginRegistry* registry) { +} diff --git a/code_sharing/client/linux/flutter/generated_plugin_registrant.h b/code_sharing/client/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 000000000..e0f0a47bc --- /dev/null +++ b/code_sharing/client/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/code_sharing/client/linux/flutter/generated_plugins.cmake b/code_sharing/client/linux/flutter/generated_plugins.cmake new file mode 100644 index 000000000..2e1de87a7 --- /dev/null +++ b/code_sharing/client/linux/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/code_sharing/client/linux/main.cc b/code_sharing/client/linux/main.cc new file mode 100644 index 000000000..e7c5c5437 --- /dev/null +++ b/code_sharing/client/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/code_sharing/client/linux/my_application.cc b/code_sharing/client/linux/my_application.cc new file mode 100644 index 000000000..2ba2836d2 --- /dev/null +++ b/code_sharing/client/linux/my_application.cc @@ -0,0 +1,104 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "client"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "client"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/code_sharing/client/linux/my_application.h b/code_sharing/client/linux/my_application.h new file mode 100644 index 000000000..72271d5e4 --- /dev/null +++ b/code_sharing/client/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/code_sharing/client/macos/.gitignore b/code_sharing/client/macos/.gitignore new file mode 100644 index 000000000..746adbb6b --- /dev/null +++ b/code_sharing/client/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig b/code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 000000000..c2efd0b60 --- /dev/null +++ b/code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/code_sharing/client/macos/Flutter/Flutter-Release.xcconfig b/code_sharing/client/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 000000000..c2efd0b60 --- /dev/null +++ b/code_sharing/client/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift b/code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 000000000..cccf817a5 --- /dev/null +++ b/code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,10 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { +} diff --git a/code_sharing/client/macos/Runner.xcodeproj/project.pbxproj b/code_sharing/client/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..85d410774 --- /dev/null +++ b/code_sharing/client/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,573 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "client.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* client.app */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* client.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..1f21100e6 --- /dev/null +++ b/code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata b/code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/code_sharing/client/macos/Runner/AppDelegate.swift b/code_sharing/client/macos/Runner/AppDelegate.swift new file mode 100644 index 000000000..d53ef6437 --- /dev/null +++ b/code_sharing/client/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..a2ec33f19 --- /dev/null +++ b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 zcmeEugo5nb1G~3xi~y`}h6XHx5j$(L*3|5S2UfkG$|UCNI>}4f?MfqZ+HW-sRW5RKHEm z^unW*Xx{AH_X3Xdvb%C(Bh6POqg==@d9j=5*}oEny_IS;M3==J`P0R!eD6s~N<36C z*%-OGYqd0AdWClO!Z!}Y1@@RkfeiQ$Ib_ z&fk%T;K9h`{`cX3Hu#?({4WgtmkR!u3ICS~|NqH^fdNz>51-9)OF{|bRLy*RBv#&1 z3Oi_gk=Y5;>`KbHf~w!`u}!&O%ou*Jzf|Sf?J&*f*K8cftMOKswn6|nb1*|!;qSrlw= zr-@X;zGRKs&T$y8ENnFU@_Z~puu(4~Ir)>rbYp{zxcF*!EPS6{(&J}qYpWeqrPWW< zfaApz%<-=KqxrqLLFeV3w0-a0rEaz9&vv^0ZfU%gt9xJ8?=byvNSb%3hF^X_n7`(fMA;C&~( zM$cQvQ|g9X)1AqFvbp^B{JEX$o;4iPi?+v(!wYrN{L}l%e#5y{j+1NMiT-8=2VrCP zmFX9=IZyAYA5c2!QO96Ea-6;v6*$#ZKM-`%JCJtrA3d~6h{u+5oaTaGE)q2b+HvdZ zvHlY&9H&QJ5|uG@wDt1h99>DdHy5hsx)bN`&G@BpxAHh$17yWDyw_jQhhjSqZ=e_k z_|r3=_|`q~uA47y;hv=6-o6z~)gO}ZM9AqDJsR$KCHKH;QIULT)(d;oKTSPDJ}Jx~G#w-(^r<{GcBC*~4bNjfwHBumoPbU}M)O za6Hc2ik)2w37Yyg!YiMq<>Aov?F2l}wTe+>h^YXcK=aesey^i)QC_p~S zp%-lS5%)I29WfywP(r4@UZ@XmTkqo51zV$|U|~Lcap##PBJ}w2b4*kt7x6`agP34^ z5fzu_8rrH+)2u*CPcr6I`gL^cI`R2WUkLDE5*PX)eJU@H3HL$~o_y8oMRoQ0WF9w| z6^HZDKKRDG2g;r8Z4bn+iJNFV(CG;K-j2>aj229gl_C6n12Jh$$h!}KVhn>*f>KcH z;^8s3t(ccVZ5<{>ZJK@Z`hn_jL{bP8Yn(XkwfRm?GlEHy=T($8Z1Mq**IM`zxN9>-yXTjfB18m_$E^JEaYn>pj`V?n#Xu;Z}#$- zw0Vw;T*&9TK$tKI7nBk9NkHzL++dZ^;<|F6KBYh2+XP-b;u`Wy{~79b%IBZa3h*3^ zF&BKfQ@Ej{7ku_#W#mNJEYYp=)bRMUXhLy2+SPMfGn;oBsiG_6KNL8{p1DjuB$UZB zA)a~BkL)7?LJXlCc}bB~j9>4s7tlnRHC5|wnycQPF_jLl!Avs2C3^lWOlHH&v`nGd zf&U!fn!JcZWha`Pl-B3XEe;(ks^`=Z5R zWyQR0u|do2`K3ec=YmWGt5Bwbu|uBW;6D8}J3{Uep7_>L6b4%(d=V4m#(I=gkn4HT zYni3cnn>@F@Wr<hFAY3Y~dW+3bte;70;G?kTn4Aw5nZ^s5|47 z4$rCHCW%9qa4)4vE%^QPMGf!ET!^LutY$G zqdT(ub5T5b+wi+OrV}z3msoy<4)`IPdHsHJggmog0K*pFYMhH!oZcgc5a)WmL?;TPSrerTVPp<#s+imF3v#!FuBNNa`#6 z!GdTCF|IIpz#(eV^mrYKThA4Bnv&vQet@%v9kuRu3EHx1-2-it@E`%9#u`)HRN#M? z7aJ{wzKczn#w^`OZ>Jb898^Xxq)0zd{3Tu7+{-sge-rQ z&0PME&wIo6W&@F|%Z8@@N3)@a_ntJ#+g{pUP7i?~3FirqU`rdf8joMG^ld?(9b7Iv z>TJgBg#)(FcW)h!_if#cWBh}f+V08GKyg|$P#KTS&%=!+0a%}O${0$i)kn9@G!}En zv)_>s?glPiLbbx)xk(lD-QbY(OP3;MSXM5E*P&_`Zks2@46n|-h$Y2L7B)iH{GAAq19h5-y0q>d^oy^y+soJu9lXxAe%jcm?=pDLFEG2kla40e!5a}mpe zdL=WlZ=@U6{>g%5a+y-lx)01V-x;wh%F{=qy#XFEAqcd+m}_!lQ)-9iiOL%&G??t| z?&NSdaLqdPdbQs%y0?uIIHY7rw1EDxtQ=DU!i{)Dkn~c$LG5{rAUYM1j5*G@oVn9~ zizz{XH(nbw%f|wI=4rw^6mNIahQpB)OQy10^}ACdLPFc2@ldVi|v@1nWLND?)53O5|fg`RZW&XpF&s3@c-R?aad!$WoH6u0B|}zt)L($E^@U- zO#^fxu9}Zw7Xl~nG1FVM6DZSR0*t!4IyUeTrnp@?)Z)*!fhd3)&s(O+3D^#m#bAem zpf#*aiG_0S^ofpm@9O7j`VfLU0+{$x!u^}3!zp=XST0N@DZTp!7LEVJgqB1g{psNr za0uVmh3_9qah14@M_pi~vAZ#jc*&aSm$hCNDsuQ-zPe&*Ii#2=2gP+DP4=DY z_Y0lUsyE6yaV9)K)!oI6+*4|spx2at*30CAx~6-5kfJzQ`fN8$!lz%hz^J6GY?mVH zbYR^JZ(Pmj6@vy-&!`$5soyy-NqB^8cCT40&R@|6s@m+ZxPs=Bu77-+Os7+bsz4nA3DrJ8#{f98ZMaj-+BD;M+Jk?pgFcZIb}m9N z{ct9T)Kye&2>l^39O4Q2@b%sY?u#&O9PO4@t0c$NUXG}(DZJ<;_oe2~e==3Z1+`Zo zFrS3ns-c}ZognVBHbg#e+1JhC(Yq7==rSJQ8J~}%94(O#_-zJKwnBXihl#hUd9B_>+T& z7eHHPRC?5ONaUiCF7w|{J`bCWS7Q&xw-Sa={j-f)n5+I=9s;E#fBQB$`DDh<^mGiF zu-m_k+)dkBvBO(VMe2O4r^sf3;sk9K!xgXJU>|t9Vm8Ty;fl5pZzw z9j|}ZD}6}t;20^qrS?YVPuPRS<39d^y0#O1o_1P{tN0?OX!lc-ICcHI@2#$cY}_CY zev|xdFcRTQ_H)1fJ7S0*SpPs8e{d+9lR~IZ^~dKx!oxz?=Dp!fD`H=LH{EeC8C&z-zK$e=!5z8NL=4zx2{hl<5z*hEmO=b-7(k5H`bA~5gT30Sjy`@-_C zKM}^so9Ti1B;DovHByJkTK87cfbF16sk-G>`Q4-txyMkyQS$d}??|Aytz^;0GxvOs zPgH>h>K+`!HABVT{sYgzy3CF5ftv6hI-NRfgu613d|d1cg^jh+SK7WHWaDX~hlIJ3 z>%WxKT0|Db1N-a4r1oPKtF--^YbP=8Nw5CNt_ZnR{N(PXI>Cm$eqi@_IRmJ9#)~ZHK_UQ8mi}w^`+4$OihUGVz!kW^qxnCFo)-RIDbA&k-Y=+*xYv5y4^VQ9S)4W5Pe?_RjAX6lS6Nz#!Hry=+PKx2|o_H_3M`}Dq{Bl_PbP(qel~P@=m}VGW*pK96 zI@fVag{DZHi}>3}<(Hv<7cVfWiaVLWr@WWxk5}GDEbB<+Aj;(c>;p1qmyAIj+R!`@#jf$ zy4`q23L-72Zs4j?W+9lQD;CYIULt%;O3jPWg2a%Zs!5OW>5h1y{Qof!p&QxNt5=T( zd5fy&7=hyq;J8%86YBOdc$BbIFxJx>dUyTh`L z-oKa=OhRK9UPVRWS`o2x53bAv+py)o)kNL6 z9W1Dlk-g6Ht@-Z^#6%`9S9`909^EMj?9R^4IxssCY-hYzei^TLq7Cj>z$AJyaU5=z zl!xiWvz0U8kY$etrcp8mL;sYqGZD!Hs-U2N{A|^oEKA482v1T%cs%G@X9M?%lX)p$ zZoC7iYTPe8yxY0Jne|s)fCRe1mU=Vb1J_&WcIyP|x4$;VSVNC`M+e#oOA`#h>pyU6 z?7FeVpk`Hsu`~T3i<_4<5fu?RkhM;@LjKo6nX>pa%8dSdgPO9~Jze;5r>Tb1Xqh5q z&SEdTXevV@PT~!O6z|oypTk7Qq+BNF5IQ(8s18c=^0@sc8Gi|3e>VKCsaZ?6=rrck zl@oF5Bd0zH?@15PxSJIRroK4Wa?1o;An;p0#%ZJ^tI=(>AJ2OY0GP$E_3(+Zz4$AQ zW)QWl<4toIJ5TeF&gNXs>_rl}glkeG#GYbHHOv-G!%dJNoIKxn)FK$5&2Zv*AFic! z@2?sY&I*PSfZ8bU#c9fdIJQa_cQijnj39-+hS@+~e*5W3bj%A}%p9N@>*tCGOk+cF zlcSzI6j%Q|2e>QG3A<86w?cx6sBtLNWF6_YR?~C)IC6_10SNoZUHrCpp6f^*+*b8` zlx4ToZZuI0XW1W)24)92S)y0QZa);^NRTX6@gh8@P?^=#2dV9s4)Q@K+gnc{6|C}& zDLHr7nDOLrsH)L@Zy{C_2UrYdZ4V{|{c8&dRG;wY`u>w%$*p>PO_}3`Y21pk?8Wtq zGwIXTulf7AO2FkPyyh2TZXM1DJv>hI`}x`OzQI*MBc#=}jaua&czSkI2!s^rOci|V zFkp*Vbiz5vWa9HPFXMi=BV&n3?1?%8#1jq?p^3wAL`jgcF)7F4l<(H^!i=l-(OTDE zxf2p71^WRIExLf?ig0FRO$h~aA23s#L zuZPLkm>mDwBeIu*C7@n@_$oSDmdWY7*wI%aL73t~`Yu7YwE-hxAATmOi0dmB9|D5a zLsR7OQcA0`vN9m0L|5?qZ|jU+cx3_-K2!K$zDbJ$UinQy<9nd5ImWW5n^&=Gg>Gsh zY0u?m1e^c~Ug39M{{5q2L~ROq#c{eG8Oy#5h_q=#AJj2Yops|1C^nv0D1=fBOdfAG z%>=vl*+_w`&M7{qE#$xJJp_t>bSh7Mpc(RAvli9kk3{KgG5K@a-Ue{IbU{`umXrR3ra5Y7xiX42+Q%N&-0#`ae_ z#$Y6Wa++OPEDw@96Zz##PFo9sADepQe|hUy!Zzc2C(L`k9&=a8XFr+!hIS>D2{pdGP1SzwyaGLiH3j--P>U#TWw90t8{8Bt%m7Upspl#=*hS zhy|(XL6HOqBW}Og^tLX7 z+`b^L{O&oqjwbxDDTg2B;Yh2(fW>%S5Pg8^u1p*EFb z`(fbUM0`afawYt%VBfD&b3MNJ39~Ldc@SAuzsMiN%E}5{uUUBc7hc1IUE~t-Y9h@e7PC|sv$xGx=hZiMXNJxz5V(np%6u{n24iWX#!8t#>Ob$in<>dw96H)oGdTHnU zSM+BPss*5)Wz@+FkooMxxXZP1{2Nz7a6BB~-A_(c&OiM)UUNoa@J8FGxtr$)`9;|O z(Q?lq1Q+!E`}d?KemgC!{nB1JJ!B>6J@XGQp9NeQvtbM2n7F%v|IS=XWPVZY(>oq$ zf=}8O_x`KOxZoGnp=y24x}k6?gl_0dTF!M!T`={`Ii{GnT1jrG9gPh)R=RZG8lIR| z{ZJ6`x8n|y+lZuy${fuEDTAf`OP!tGySLXD}ATJO5UoZv|Xo3%7O~L63+kw}v)Ci=&tWx3bQJfL@5O18CbPlkR^IcKA zy1=^Vl-K-QBP?9^R`@;czcUw;Enbbyk@vJQB>BZ4?;DM%BUf^eZE+sOy>a){qCY6Y znYy;KGpch-zf=5|p#SoAV+ie8M5(Xg-{FoLx-wZC9IutT!(9rJ8}=!$!h%!J+vE2e z(sURwqCC35v?1>C1L)swfA^sr16{yj7-zbT6Rf26-JoEt%U?+|rQ zeBuGohE?@*!zR9)1P|3>KmJSgK*fOt>N>j}LJB`>o(G#Dduvx7@DY7};W7K;Yj|8O zGF<+gTuoIKe7Rf+LQG3-V1L^|E;F*}bQ-{kuHq}| ze_NwA7~US19sAZ)@a`g*zkl*ykv2v3tPrb4Og2#?k6Lc7@1I~+ew48N&03hW^1Cx+ zfk5Lr4-n=#HYg<7ka5i>2A@ZeJ60gl)IDX!!p zzfXZQ?GrT>JEKl7$SH!otzK6=0dIlqN)c23YLB&Krf9v-{@V8p+-e2`ujFR!^M%*; ze_7(Jh$QgoqwB!HbX=S+^wqO15O_TQ0-qX8f-|&SOuo3ZE{{9Jw5{}>MhY}|GBhO& zv48s_B=9aYQfa;d>~1Z$y^oUUaDer>7ve5+Gf?rIG4GZ!hRKERlRNgg_C{W_!3tsI2TWbX8f~MY)1Q`6Wj&JJ~*;ay_0@e zzx+mE-pu8{cEcVfBqsnm=jFU?H}xj@%CAx#NO>3 z_re3Rq%d1Y7VkKy{=S73&p;4^Praw6Y59VCP6M?!Kt7{v#DG#tz?E)`K95gH_mEvb z%$<~_mQ$ad?~&T=O0i0?`YSp?E3Dj?V>n+uTRHAXn`l!pH9Mr}^D1d@mkf+;(tV45 zH_yfs^kOGLXlN*0GU;O&{=awxd?&`{JPRr$z<1HcAO2K`K}92$wC}ky&>;L?#!(`w z68avZGvb728!vgw>;8Z8I@mLtI`?^u6R>sK4E7%=y)jpmE$fH!Dj*~(dy~-2A5Cm{ zl{1AZw`jaDmfvaB?jvKwz!GC}@-Dz|bFm1OaPw(ia#?>vF7Y5oh{NVbyD~cHB1KFn z9C@f~X*Wk3>sQH9#D~rLPslAd26@AzMh=_NkH_yTNXx6-AdbAb z{Ul89YPHslD?xAGzOlQ*aMYUl6#efCT~WI zOvyiewT=~l1W(_2cEd(8rDywOwjM-7P9!8GCL-1<9KXXO=6%!9=W++*l1L~gRSxLVd8K=A7&t52ql=J&BMQu{fa6y zXO_e>d?4X)xp2V8e3xIQGbq@+vo#&n>-_WreTTW0Yr?|YRPP43cDYACMQ(3t6(?_k zfgDOAU^-pew_f5U#WxRXB30wcfDS3;k~t@b@w^GG&<5n$Ku?tT(%bQH(@UHQGN)N|nfC~7?(etU`}XB)$>KY;s=bYGY#kD%i9fz= z2nN9l?UPMKYwn9bX*^xX8Y@%LNPFU>s#Ea1DaP%bSioqRWi9JS28suTdJycYQ+tW7 zrQ@@=13`HS*dVKaVgcem-45+buD{B;mUbY$YYULhxK)T{S?EB<8^YTP$}DA{(&)@S zS#<8S96y9K2!lG^VW-+CkfXJIH;Vo6wh)N}!08bM$I7KEW{F6tqEQ?H@(U zAqfi%KCe}2NUXALo;UN&k$rU0BLNC$24T_mcNY(a@lxR`kqNQ0z%8m>`&1ro40HX} z{{3YQ;2F9JnVTvDY<4)x+88i@MtXE6TBd7POk&QfKU-F&*C`isS(T_Q@}K)=zW#K@ zbXpcAkTT-T5k}Wj$dMZl7=GvlcCMt}U`#Oon1QdPq%>9J$rKTY8#OmlnNWBYwafhx zqFnym@okL#Xw>4SeRFejBnZzY$jbO)e^&&sHBgMP%Ygfi!9_3hp17=AwLBNFTimf0 zw6BHNXw19Jg_Ud6`5n#gMpqe%9!QB^_7wAYv8nrW94A{*t8XZu0UT&`ZHfkd(F{Px zD&NbRJP#RX<=+sEeGs2`9_*J2OlECpR;4uJie-d__m*(aaGE}HIo+3P{my@;a~9Y$ zHBXVJ83#&@o6{M+pE9^lI<4meLLFN_3rwgR4IRyp)~OF0n+#ORrcJ2_On9-78bWbG zuCO0esc*n1X3@p1?lN{qWS?l7J$^jbpeel{w~51*0CM+q9@9X=>%MF(ce~om(}?td zjkUmdUR@LOn-~6LX#=@a%rvj&>DFEoQscOvvC@&ZB5jVZ-;XzAshwx$;Qf@U41W=q zOSSjQGQV8Qi3*4DngNMIM&Cxm7z*-K`~Bl(TcEUxjQ1c=?)?wF8W1g;bAR%sM#LK( z_Op?=P%)Z+J!>vpN`By0$?B~Out%P}kCriDq@}In&fa_ZyKV+nLM0E?hfxuu%ciUz z>yAk}OydbWNl7{)#112j&qmw;*Uj&B;>|;Qwfc?5wIYIHH}s6Mve@5c5r+y)jK9i( z_}@uC(98g)==AGkVN?4>o@w=7x9qhW^ zB(b5%%4cHSV?3M?k&^py)j*LK16T^Ef4tb05-h-tyrjt$5!oo4spEfXFK7r_Gfv7#x$bsR7T zs;dqxzUg9v&GjsQGKTP*=B(;)be2aN+6>IUz+Hhw-n>^|`^xu*xvjGPaDoFh2W4-n z@Wji{5Y$m>@Vt7TE_QVQN4*vcfWv5VY-dT0SV=l=8LAEq1go*f zkjukaDV=3kMAX6GAf0QOQHwP^{Z^=#Lc)sh`QB)Ftl&31jABvq?8!3bt7#8vxB z53M{4{GR4Hl~;W3r}PgXSNOt477cO62Yj(HcK&30zsmWpvAplCtpp&mC{`2Ue*Bwu zF&UX1;w%`Bs1u%RtGPFl=&sHu@Q1nT`z={;5^c^^S~^?2-?<|F9RT*KQmfgF!7=wD@hytxbD;=9L6PZrK*1<4HMObNWehA62DtTy)q5H|57 z9dePuC!1;0MMRRl!S@VJ8qG=v^~aEU+}2Qx``h1LII!y{crP2ky*R;Cb;g|r<#ryo zju#s4dE?5CTIZKc*O4^3qWflsQ(voX>(*_JP7>Q&$%zCAIBTtKC^JUi@&l6u&t0hXMXjz_y!;r@?k|OU9aD%938^TZ>V? zqJmom_6dz4DBb4Cgs_Ef@}F%+cRCR%UMa9pi<-KHN;t#O@cA%(LO1Rb=h?5jiTs93 zPLR78p+3t>z4|j=<>2i4b`ketv}9Ax#B0)hn7@bFl;rDfP8p7u9XcEb!5*PLKB(s7wQC2kzI^@ae)|DhNDmSy1bOLid%iIap@24A(q2XI!z_hkl-$1T10 z+KKugG4-}@u8(P^S3PW4x>an;XWEF-R^gB{`t8EiP{ZtAzoZ!JRuMRS__-Gg#Qa3{<;l__CgsF+nfmFNi}p z>rV!Y6B@cC>1up)KvaEQiAvQF!D>GCb+WZsGHjDeWFz?WVAHP65aIA8u6j6H35XNYlyy8>;cWe3ekr};b;$9)0G`zsc9LNsQ&D?hvuHRpBxH)r-1t9|Stc*u<}Ol&2N+wPMom}d15_TA=Aprp zjN-X3*Af$7cDWMWp##kOH|t;c2Pa9Ml4-)o~+7P;&q8teF-l}(Jt zTGKOQqJTeT!L4d}Qw~O0aanA$Vn9Rocp-MO4l*HK)t%hcp@3k0%&_*wwpKD6ThM)R z8k}&7?)YS1ZYKMiy?mn>VXiuzX7$Ixf7EW8+C4K^)m&eLYl%#T=MC;YPvD&w#$MMf zQ=>`@rh&&r!@X&v%ZlLF42L_c=5dSU^uymKVB>5O?AouR3vGv@ei%Z|GX5v1GK2R* zi!!}?+-8>J$JH^fPu@)E6(}9$d&9-j51T^n-e0Ze%Q^)lxuex$IL^XJ&K2oi`wG}QVGk2a7vC4X?+o^z zsCK*7`EUfSuQA*K@Plsi;)2GrayQOG9OYF82Hc@6aNN5ulqs1Of-(iZQdBI^U5of^ zZg2g=Xtad7$hfYu6l~KDQ}EU;oIj(3nO#u9PDz=eO3(iax7OCmgT2p_7&^3q zg7aQ;Vpng*)kb6=sd5?%j5Dm|HczSChMo8HHq_L8R;BR5<~DVyU$8*Tk5}g0eW5x7 z%d)JFZ{(Y<#OTKLBA1fwLM*fH7Q~7Sc2Ne;mVWqt-*o<;| z^1@vo_KTYaMnO$7fbLL+qh#R$9bvnpJ$RAqG+z8h|} z3F5iwG*(sCn9Qbyg@t0&G}3fE0jGq3J!JmG2K&$urx^$z95) z7h?;4vE4W=v)uZ*Eg3M^6f~|0&T)2D;f+L_?M*21-I1pnK(pT$5l#QNlT`SidYw~o z{`)G)Asv#cue)Ax1RNWiRUQ(tQ(bzd-f2U4xlJK+)ZWBxdq#fp=A>+Qc%-tl(c)`t z$e2Ng;Rjvnbu7((;v4LF9Y1?0el9hi!g>G{^37{ z`^s-03Z5jlnD%#Mix19zkU_OS|86^_x4<0(*YbPN}mi-$L?Z4K(M|2&VV*n*ZYN_UqI?eKZi3!b)i z%n3dzUPMc-dc|q}TzvPy!VqsEWCZL(-eURDRG4+;Eu!LugSSI4Fq$Ji$Dp08`pfP_C5Yx~`YKcywlMG;$F z)R5!kVml_Wv6MSpeXjG#g?kJ0t_MEgbXlUN3k|JJ%N>|2xn8yN>>4qxh!?dGI}s|Y zDTKd^JCrRSN+%w%D_uf=Tj6wIV$c*g8D96jb^Kc#>5Fe-XxKC@!pIJw0^zu;`_yeb zhUEm-G*C=F+jW%cP(**b61fTmPn2WllBr4SWNdKe*P8VabZsh0-R|?DO=0x`4_QY) zR7sthW^*BofW7{Sak&S1JdiG?e=SfL24Y#w_)xrBVhGB-13q$>mFU|wd9Xqe-o3{6 zSn@@1@&^)M$rxb>UmFuC+pkio#T;mSnroMVZJ%nZ!uImi?%KsIX#@JU2VY(`kGb1A z7+1MEG)wd@)m^R|a2rXeviv$!emwcY(O|M*xV!9%tBzarBOG<4%gI9SW;Um_gth4=gznYzOFd)y8e+3APCkL)i-OI`;@7-mCJgE`js(M} z;~ZcW{{FMVVO)W>VZ}ILouF#lWGb%Couu}TI4kubUUclW@jEn6B_^v!Ym*(T*4HF9 zWhNKi8%sS~viSdBtnrq!-Dc5(G^XmR>DFx8jhWvR%*8!m*b*R8e1+`7{%FACAK`7 zzdy8TmBh?FVZ0vtw6npnWwM~XjF2fNvV#ZlGG z?FxHkXHN>JqrBYoPo$)zNC7|XrQfcqmEXWud~{j?La6@kbHG@W{xsa~l1=%eLly8B z4gCIH05&Y;6O2uFSopNqP|<$ml$N40^ikxw0`o<~ywS1(qKqQN!@?Ykl|bE4M?P+e zo$^Vs_+x)iuw?^>>`$&lOQOUkZ5>+OLnRA)FqgpDjW&q*WAe(_mAT6IKS9;iZBl8M z<@=Y%zcQUaSBdrs27bVK`c$)h6A1GYPS$y(FLRD5Yl8E3j0KyH08#8qLrsc_qlws; znMV%Zq8k+&T2kf%6ZO^2=AE9>?a587g%-={X}IS~P*I(NeCF9_9&`)|ok0iiIun zo+^odT0&Z4k;rn7I1v87=z!zKU(%gfB$(1mrRYeO$sbqM22Kq68z9wgdg8HBxp>_< zn9o%`f?sVO=IN#5jSX&CGODWlZfQ9A)njK2O{JutYwRZ?n0G_p&*uwpE`Md$iQxrd zoQfF^b8Ou)+3BO_3_K5y*~?<(BF@1l+@?Z6;^;U>qlB)cdro;rxOS1M{Az$s^9o5sXDCg8yD<=(pKI*0e zLk>@lo#&s0)^*Q+G)g}C0IErqfa9VbL*Qe=OT@&+N8m|GJF7jd83vY#SsuEv2s{Q> z>IpoubNs>D_5?|kXGAPgF@mb_9<%hjU;S0C8idI)a=F#lPLuQJ^7OnjJlH_Sks9JD zMl1td%YsWq3YWhc;E$H1<0P$YbSTqs`JKY%(}svsifz|h8BHguL82dBl+z0^YvWk8 zGy;7Z0v5_FJ2A$P0wIr)lD?cPR%cz>kde!=W%Ta^ih+Dh4UKdf7ip?rBz@%y2&>`6 zM#q{JXvW9ZlaSk1oD!n}kSmcDa2v6T^Y-dy+#fW^y>eS8_%<7tWXUp8U@s$^{JFfKMjDAvR z$YmVB;n3ofl!ro9RNT!TpQpcycXCR}$9k5>IPWDXEenQ58os?_weccrT+Bh5sLoiH zZ_7~%t(vT)ZTEO= zb0}@KaD{&IyK_sd8b$`Qz3%UA`nSo zn``!BdCeN!#^G;lK@G2ron*0jQhbdw)%m$2;}le@z~PSLnU-z@tL)^(p%P>OO^*Ff zNRR9oQ`W+x^+EU+3BpluwK77|B3=8QyT|$V;02bn_LF&3LhLA<#}{{)jE)}CiW%VEU~9)SW+=F%7U-iYlQ&q!#N zwI2{(h|Pi&<8_fqvT*}FLN^0CxN}#|3I9G_xmVg$gbn2ZdhbmGk7Q5Q2Tm*ox8NMo zv`iaZW|ZEOMyQga5fts?&T-eCCC9pS0mj7v0SDkD=*^MxurP@89v&Z#3q{FM!a_nr zb?KzMv`BBFOew>4!ft@A&(v-kWXny-j#egKef|#!+3>26Qq0 zv!~8ev4G`7Qk>V1TaMT-&ziqoY3IJp8_S*%^1j73D|=9&;tDZH^!LYFMmME4*Wj(S zRt~Q{aLb_O;wi4u&=}OYuj}Lw*j$@z*3>4&W{)O-oi@9NqdoU!=U%d|se&h?^$Ip# z)BY+(1+cwJz!yy4%l(aLC;T!~Ci>yAtXJb~b*yr&v7f{YCU8P|N1v~H`xmGsG)g)y z4%mv=cPd`s7a*#OR7f0lpD$ueP>w8qXj0J&*7xX+U!uat5QNk>zwU$0acn5p=$88L=jn_QCSYkTV;1~(yUem#0gB`FeqY98sf=>^@ z_MCdvylv~WL%y_%y_FE1)j;{Szj1+K7Lr_y=V+U zk6Tr;>XEqlEom~QGL!a+wOf(@ZWoxE<$^qHYl*H1a~kk^BLPn785%nQb$o;Cuz0h& za9LMx^bKEbPS%e8NM33Jr|1T|ELC(iE!FUci38xW_Y7kdHid#2ie+XZhP;2!Z;ZAM zB_cXKm)VrPK!SK|PY00Phwrpd+x0_Aa;}cDQvWKrwnQrqz##_gvHX2ja?#_{f#;bz`i>C^^ zTLDy;6@HZ~XQi7rph!mz9k!m;KchA)uMd`RK4WLK7)5Rl48m#l>b(#`WPsl<0j z-sFkSF6>Nk|LKnHtZ`W_NnxZP62&w)S(aBmmjMDKzF%G;3Y?FUbo?>b5;0j8Lhtc4 zr*8d5Y9>g@FFZaViw7c16VsHcy0u7M%6>cG1=s=Dtx?xMJSKIu9b6GU8$uSzf43Y3 zYq|U+IWfH;SM~*N1v`KJo!|yfLxTFS?oHsr3qvzeVndVV^%BWmW6re_S!2;g<|Oao z+N`m#*i!)R%i1~NO-xo{qpwL0ZrL7hli;S z3L0lQ_z}z`fdK39Mg~Zd*%mBdD;&5EXa~@H(!###L`ycr7gW`f)KRuqyHL3|uyy3h zSS^td#E&Knc$?dXs*{EnPYOp^-vjAc-h4z#XkbG&REC7;0>z^^Z}i8MxGKerEY z>l?(wReOlXEsNE5!DO&ZWyxY)gG#FSZs%fXuzA~XIAPVp-%yb2XLSV{1nH6{)5opg z(dZKckn}Q4Li-e=eUDs1Psg~5zdn1>ql(*(nn6)iD*OcVkwmKL(A{fix(JhcVB&}V zVt*Xb!{gzvV}dc446>(D=SzfCu7KB`oMjv6kPzSv&B>>HLSJP|wN`H;>oRw*tl#N) z*zZ-xwM7D*AIsBfgqOjY1Mp9aq$kRa^dZU_xw~KxP;|q(m+@e+YSn~`wEJzM|Ippb zzb@%;hB7iH4op9SqmX?j!KP2chsb79(mFossBO-Zj8~L}9L%R%Bw<`^X>hjkCY5SG z7lY!8I2mB#z)1o;*3U$G)3o0A&{0}#B;(zPd2`OF`Gt~8;0Re8nIseU z_yzlf$l+*-wT~_-cYk$^wTJ@~7i@u(CZs9FVkJCru<*yK8&>g+t*!JqCN6RH%8S-P zxH8+Cy#W?!;r?cLMC(^BtAt#xPNnwboI*xWw#T|IW^@3|q&QYY6Ehxoh@^URylR|T zne-Y6ugE^7p5bkRDWIh)?JH5V^ub82l-LuVjDr7UT^g`q4dB&mBFRWGL_C?hoeL(% zo}ocH5t7|1Mda}T!^{Qt9vmA2ep4)dQSZO>?Eq8}qRp&ZJ?-`Tnw+MG(eDswP(L*X3ahC2Ad0_wD^ff9hfzb%Jd`IXx5 zae@NMzBXJDwJS?7_%!TB^E$N8pvhOHDK$7YiOelTY`6KX8hK6YyT$tk*adwN>s^Kp zwM3wGVPhwKU*Yq-*BCs}l`l#Tej(NQ>jg*S0TN%D+GcF<14Ms6J`*yMY;W<-mMN&-K>((+P}+t+#0KPGrzjP zJ~)=Bcz%-K!L5ozIWqO(LM)l_9lVOc4*S65&DKM#TqsiWNG{(EZQw!bc>qLW`=>p-gVJ;T~aN2D_- z{>SZC=_F+%hNmH6ub%Ykih0&YWB!%sd%W5 zHC2%QMP~xJgt4>%bU>%6&uaDtSD?;Usm}ari0^fcMhi_)JZgb1g5j zFl4`FQ*%ROfYI}e7RIq^&^a>jZF23{WB`T>+VIxj%~A-|m=J7Va9FxXV^%UwccSZd zuWINc-g|d6G5;95*%{e;9S(=%yngpfy+7ao|M7S|Jb0-4+^_q-uIqVS&ufU880UDH*>(c)#lt2j zzvIEN>>$Y(PeALC-D?5JfH_j+O-KWGR)TKunsRYKLgk7eu4C{iF^hqSz-bx5^{z0h ze2+u>Iq0J4?)jIo)}V!!m)%)B;a;UfoJ>VRQ*22+ncpe9f4L``?v9PH&;5j{WF?S_C>Lq>nkChZB zjF8(*v0c(lU^ZI-)_uGZnnVRosrO4`YinzI-RSS-YwjYh3M`ch#(QMNw*)~Et7Qpy z{d<3$4FUAKILq9cCZpjvKG#yD%-juhMj>7xIO&;c>_7qJ%Ae8Z^m)g!taK#YOW3B0 zKKSMOd?~G4h}lrZbtPk)n*iOC1~mDhASGZ@N{G|dF|Q^@1ljhe=>;wusA&NvY*w%~ zl+R6B^1yZiF)YN>0ms%}qz-^U-HVyiN3R9k1q4)XgDj#qY4CE0)52%evvrrOc898^ z*^)XFR?W%g0@?|6Mxo1ZBp%(XNv_RD-<#b^?-Fs+NL^EUW=iV|+Vy*F%;rBz~pN7%-698U-VMfGEVnmEz7fL1p)-5sLT zL;Iz>FCLM$p$c}g^tbkGK1G$IALq1Gd|We@&TtW!?4C7x4l*=4oF&&sr0Hu`x<5!m zhX&&Iyjr?AkNXU_5P_b^Q3U9sy#f6ZF@2C96$>1k*E-E%DjwvA{VL0PdU~suN~DZo zm{T!>sRdp`Ldpp9olrH@(J$QyGq!?#o1bUo=XP2OEuT3`XzI>s^0P{manUaE4pI%! zclQq;lbT;nx7v3tR9U)G39h?ryrxzd0xq4KX7nO?piJZbzT_CU&O=T(Vt;>jm?MgC z2vUL#*`UcMsx%w#vvjdamHhmN!(y-hr~byCA-*iCD};#l+bq;gkwQ0oN=AyOf@8ow>Pj<*A~2*dyjK}eYdN);%!t1 z6Y=|cuEv-|5BhA?n2Db@4s%y~(%Wse4&JXw=HiO48%c6LB~Z0SL1(k^9y?ax%oj~l zf7(`iAYLdPRq*ztFC z7VtAb@s{as%&Y;&WnyYl+6Wm$ru*u!MKIg_@01od-iQft0rMjIj8e7P9eKvFnx_X5 zd%pDg-|8<>T2Jdqw>AII+fe?CgP+fL(m0&U??QL8YzSjV{SFi^vW~;wN@or_(q<0Y zRt~L}#JRcHOvm$CB)T1;;7U>m%)QYBLTR)KTARw%zoDxgssu5#v{UEVIa<>{8dtkm zXgbCGp$tfue+}#SD-PgiNT{Zu^YA9;4BnM(wZ9-biRo_7pN}=aaimjYgC=;9@g%6< zxol5sT_$<8{LiJ6{l1+sV)Z_QdbsfEAEMw!5*zz6)Yop?T0DMtR_~wfta)E6_G@k# zZRP11D}$ir<`IQ`<(kGfAS?O-DzCyuzBq6dxGTNNTK?r^?zT30mLY!kQ=o~Hv*k^w zvq!LBjW=zzIi%UF@?!g9vt1CqdwV(-2LYy2=E@Z?B}JDyVkluHtzGsWuI1W5svX~K z&?UJ45$R7g>&}SFnLnmw09R2tUgmr_w6mM9C}8GvQX>nL&5R#xBqnp~Se(I>R42`T zqZe9p6G(VzNB3QD><8+y%{e%6)sZDRXTR|MI zM#eZmao-~_`N|>Yf;a;7yvd_auTG#B?Vz5D1AHx=zpVUFe7*hME z+>KH5h1In8hsVhrstc>y0Q!FHR)hzgl+*Q&5hU9BVJlNGRkXiS&06eOBV^dz3;4d5 zeYX%$62dNOprZV$px~#h1RH?_E%oD6y;J;pF%~y8M)8pQ0olYKj6 zE+hd|7oY3ot=j9ZZ))^CCPADL6Jw%)F@A{*coMApcA$7fZ{T@3;WOQ352F~q6`Mgi z$RI6$8)a`Aaxy<8Bc;{wlDA%*%(msBh*xy$L-cBJvQ8hj#FCyT^%+Phw1~PaqyDou^JR0rxDkSrmAdjeYDFDZ`E z)G3>XtpaSPDlydd$RGHg;#4|4{aP5c_Om z2u5xgnhnA)K%8iU==}AxPxZCYC)lyOlj9as#`5hZ=<6<&DB%i_XCnt5=pjh?iusH$ z>)E`@HNZcAG&RW3Ys@`Ci{;8PNzE-ZsPw$~Wa!cP$ye+X6;9ceE}ah+3VY7Mx}#0x zbqYa}eO*FceiY2jNS&2cH9Y}(;U<^^cWC5Ob&)dZedvZA9HewU3R;gRQ)}hUdf+~Q zS_^4ds*W1T#bxS?%RH&<739q*n<6o|mV;*|1s>ly-Biu<2*{!!0#{_234&9byvn0* z5=>{95Zfb{(?h_Jk#ocR$FZ78O*UTOxld~0UF!kyGM|nH%B*qf)Jy}N!uT9NGeM19 z-@=&Y0yGGo_dw!FD>juk%P$6$qJkj}TwLBoefi;N-$9LAeV|)|-ET&culW9Sb_pc_ zp{cXI0>I0Jm_i$nSvGnYeLSSj{ccVS2wyL&0x~&5v;3Itc82 z5lIAkfn~wcY-bQB$G!ufWt%qO;P%&2B_R5UKwYxMemIaFm)qF1rA zc>gEihb=jBtsXCi0T%J37s&kt*3$s7|6)L(%UiY)6axuk{6RWIS8^+u;)6!R?Sgap z9|6<0bx~AgVi|*;zL@2x>Pbt2Bz*uv4x-`{F)XatTs`S>unZ#P^ZiyjpfL_q2z^fqgR-fbOcG=Y$q>ozkw1T6dH8-)&ww+z?E0 zR|rV(9bi6zpX3Ub>PrPK!{X>e$C66qCXAeFm)Y+lX8n2Olt7PNs*1^si)j!QmFV#t z0P2fyf$N^!dyTot&`Ew5{i5u<8D`8U`qs(KqaWq5iOF3x2!-z65-|HsyYz(MAKZ?< zCpQR;E)wn%s|&q(LVm0Ab>gdmCFJeKwVTnv@Js%!At;I=A>h=l=p^&<4;Boc{$@h< z38v`3&2wJtka@M}GS%9!+SpJ}sdtoYzMevVbnH+d_eMxN@~~ zZq@k)7V5f8u!yAX2qF3qjS7g%n$JuGrMhQF!&S^7(%Y{rP*w2FWj(v_J{+Hg*}wdWOd~pHQ19&n3RWeljK9W%sz&Y3Tm3 zR`>6YR54%qBHGa)2xbs`9cs_EsNHxsfraEgZ)?vrtooeA0sPKJK7an){ngtV@{SBa zkO6ORr1_Xqp+`a0e}sC*_y(|RKS13ikmHp3C^XkE@&wjbGWrt^INg^9lDz#B;bHiW zkK4{|cg08b!yHFSgPca5)vF&gqCgeu+c82%&FeM^Bb}GUxLy-zo)}N;#U?sJ2?G2BNe*9u_7kE5JeY!it=f`A_4gV3} z`M!HXZy#gN-wS!HvHRqpCHUmjiM;rVvpkC!voImG%OFVN3k(QG@X%e``VJSJ@Z7tb z*Onlf>z^D+&$0!4`IE$;2-NSO9HQWd+UFW(r;4hh;(j^p4H-~6OE!HQp^96v?{9Zt z;@!ZcccV%C2s6FMP#qvo4kG6C04A>XILt>JW}%0oE&HM5f6 zYLD!;My>CW+j<~=Wzev{aYtx2ZNw|ptTFV(4;9`6Tmbz6K1)fv4qPXa2mtoPt&c?P zhmO+*o8uP3ykL6E$il00@TDf6tOW7fmo?Oz_6GU^+5J=c22bWyuH#aNj!tT-^IHrJ zu{aqTYw@q;&$xDE*_kl50Jb*dp`(-^p={z}`rqECTi~3 z>0~A7L6X)=L5p#~$V}gxazgGT7$3`?a)zen>?TvAuQ+KAIAJ-s_v}O6@`h9n-sZk> z`3{IJeb2qu9w=P*@q>iC`5wea`KxCxrx{>(4{5P+!cPg|pn~;n@DiZ0Y>;k5mnKeS z!LIfT4{Lgd=MeysR5YiQKCeNhUQ;Os1kAymg6R!u?j%LF z4orCszIq_n52ulpes{(QN|zirdtBsc{9^Z72Ycb2ht?G^opkT_#|4$wa9`)8k3ilU z%ntAi`nakS1r10;#k^{-ZGOD&Z2|k=p40hRh5D7(&JG#Cty|ECOvwsSHkkSa)36$4 z?;v#%@D(=Raw(HP5s>#4Bm?f~n1@ebH}2tv#7-0l-i^H#H{PC|F@xeNS+Yw{F-&wH z07)bj8MaE6`|6NoqKM~`4%X> zKFl&7g1$Z3HB>lxn$J`P`6GSb6CE6_^NA1V%=*`5O!zP$a7Vq)IwJAki~XBLf=4TF zPYSL}>4nOGZ`fyHChq)jy-f{PKFp6$plHB2=;|>%Z^%)ecVue(*mf>EH_uO^+_zm? zJATFa9SF~tFwR#&0xO{LLf~@}s_xvCPU8TwIJgBs%FFzjm`u?1699RTui;O$rrR{# z1^MqMl5&6)G%@_k*$U5Kxq84!AdtbZ!@8FslBML}<`(Jr zenXrC6bFJP=R^FMBg7P?Pww-!a%G@kJH_zezKvuWU0>m1uyy}#Vf<$>u?Vzo3}@O% z1JR`B?~Tx2)Oa|{DQ_)y9=oY%haj!80GNHw3~qazgU-{|q+Bl~H94J!a%8UR?XsZ@ z0*ZyQugyru`V9b(0OrJOKISfi89bSVR zQy<+i_1XY}4>|D%X_`IKZUPz6=TDb)t1mC9eg(Z=tv zq@|r37AQM6A%H%GaH3szv1L^ku~H%5_V*fv$UvHl*yN4iaqWa69T2G8J2f3kxc7UE zOia@p0YNu_q-IbT%RwOi*|V|&)e5B-u>4=&n@`|WzH}BK4?33IPpXJg%`b=dr_`hU z8JibW_3&#uIN_#D&hX<)x(__jUT&lIH$!txEC@cXv$7yB&Rgu){M`9a`*PH} zRcU)pMWI2O?x;?hzR{WdzKt^;_pVGJAKKd)F$h;q=Vw$MP1XSd<;Mu;EU5ffyKIg+ z&n-Nb?h-ERN7(fix`htopPIba?0Gd^y(4EHvfF_KU<4RpN0PgVxt%7Yo99X*Pe|zR z?ytK&5qaZ$0KSS$3ZNS$$k}y(2(rCl=cuYZg{9L?KVgs~{?5adxS))Upm?LDo||`H zV)$`FF3icFmxcQshXX*1k*w3O+NjBR-AuE70=UYM*7>t|I-oix=bzDwp2*RoIwBp@r&vZukG; zyi-2zdyWJ3+E?{%?>e2Ivk`fAn&Ho(KhGSVE4C-zxM-!j01b~mTr>J|5={PrZHOgO zw@ND3=z(J7D>&C7aw{zT>GHhL2BmUX0GLt^=31RRPSnjoUO9LYzh_yegyPoAKhAQE z>#~O27dR4&LdQiak6={9_{LN}Z>;kyVYKH^d^*!`JVSXJlx#&r4>VnP$zb{XoTb=> zZsLvh>keP3fkLTIDdpf-@(ADfq4=@X=&n>dyU0%dwD{zsjCWc;r`-e~X$Q3NTz_TJ zOXG|LMQQIjGXY3o5tBm9>k6y<6XNO<=9H@IXF;63rzsC=-VuS*$E{|L_i;lZmHOD< zY92;>4spdeRn4L6pY4oUKZG<~+8U-q7ZvNOtW0i*6Q?H`9#U3M*k#4J;ek(MwF02x zUo1wgq9o6XG#W^mxl>pAD)Ll-V5BNsdVQ&+QS0+K+?H-gIBJ-ccB1=M_hxB6qcf`C zJ?!q!J4`kLhAMry4&a_0}up{CFevcjBl|N(uDM^N5#@&-nQt2>z*U}eJGi}m5f}l|IRVj-Q;a>wcLpK5RRWJ> zysdd$)Nv0tS?b~bw1=gvz3L_ZAIdDDPj)y|bp1;LE`!av!rODs-tlc}J#?erTgXRX z$@ph%*~_wr^bQYHM7<7=Q=45v|Hk7T=mDpW@OwRy3A_v`ou@JX5h!VI*e((v*5Aq3 zVYfB4<&^Dq5%^?~)NcojqK`(VXP$`#w+&VhQOn%;4pCkz;NEH6-FPHTQ+7I&JE1+Ozq-g43AEZV>ceQ^9PCx zZG@OlEF~!Lq@5dttlr%+gNjRyMwJdJU(6W_KpuVnd{3Yle(-p#6erIRc${l&qx$HA z89&sp=rT7MJ=DuTL1<5{)wtUfpPA|Gr6Q2T*=%2RFm@jyo@`@^*{5{lFPgv>84|pv z%y{|cVNz&`9C*cUely>-PRL)lHVErAKPO!NQ3<&l5(>Vp(MuJnrOf^4qpIa!o3D7( z1bjn#Vv$#or|s7Hct5D@%;@48mM%ISY7>7@ft8f?q~{s)@BqGiupoK1BAg?PyaDQ1 z`YT8{0Vz{zBwJ={I4)#ny{RP{K1dqzAaQN_aaFC%Z>OZ|^VhhautjDavGtsQwx@WH zr|1UKk^+X~S*RjCY_HN!=Jx>b6J8`Q(l4y|mc<6jnkHVng^Wk(A13-;AhawATsmmE#H%|8h}f1frs2x@Fwa_|ea+$tdG2Pz{7 z!ox^w^>^Cv4e{Xo7EQ7bxCe8U+LZG<_e$RnR?p3t?s^1Mb!ieB z#@45r*PTc_yjh#P=O8Zogo+>1#|a2nJvhOjIqKK1U&6P)O%5s~M;99O<|Y9zomWTL z666lK^QW`)cXV_^Y05yQZH3IRCW%25BHAM$c0>w`x!jh^15Zp6xYb!LoQ zr+RukTw0X2mxN%K0%=8|JHiaA3pg5+GMfze%9o5^#upx0M?G9$+P^DTx7~qq9$Qoi zV$o)yy zuUq>3c{_q+HA5OhdN*@*RkxRuD>Bi{Ttv_hyaaB;XhB%mJ2Cb{yL;{Zu@l{N?!GKE7es6_9J{9 zO(tmc0ra2;@oC%SS-8|D=omQ$-Dj>S)Utkthh{ovD3I%k}HoranSepC_yco2Q8 zY{tAuPIhD{X`KbhQIr%!t+GeH%L%q&p z3P%<-S0YY2Emjc~Gb?!su85}h_qdu5XN2XJUM}X1k^!GbwuUPT(b$Ez#LkG6KEWQB z7R&IF4srHe$g2R-SB;inW9T{@+W+~wi7VQd?}7||zi!&V^~o0kM^aby7YE_-B63^d zf_uo8#&C77HBautt_YH%v6!Q>H?}(0@4pv>cM6_7dHJ)5JdyV0Phi!)vz}dv{*n;t zf(+#Hdr=f8DbJqbMez)(n>@QT+amJ7g&w6vZ-vG^H1v~aZqG~u!1D(O+jVAG0EQ*aIsr*bsBdbD`)i^FNJ z&B@yxqPFCRGT#}@dmu-{0vp47xk(`xNM6E=7QZ5{tg6}#zFrd8Pb_bFg7XP{FsYP8 zbvWqG6#jfg*4gvY9!gJxJ3l2UjP}+#QMB(*(?Y&Q4PO`EknE&Cb~Yb@lCbk;-KY)n zzbjS~W5KZ3FV%y>S#$9Sqi$FIBCw`GfPDP|G=|y32VV-g@a1D&@%_oAbB@cAUx#aZ zlAPTJ{iz#Qda8(aNZE&0q+8r3&z_Ln)b=5a%U|OEcc3h1f&8?{b8ErEbilrun}mh3 z$1o^$-XzIiH|iGoJA`w`o|?w3m*NX|sd$`Mt+f*!hyJvQ2fS*&!SYn^On-M|pHGlu z4SC5bM7f6BAkUhGuN*w`97LLkbCx=p@K5RL2p>YpDtf{WTD|d3ucb6iVZ-*DRtoEA zCC5(x)&e=giR_id>5bE^l%Mxx>0@FskpCD4oq@%-Fg$8IcdRwkfn;DsjoX(v;mt3d z_4Mnf#Ft4x!bY!7Hz?RRMq9;5FzugD(sbt4up~6j?-or+ch~y_PqrM2hhTToJjR_~ z)E1idgt7EW>G*9%Q^K;o_#uFjX!V2pwfpgi>}J&p_^QlZki!@#dkvR`p?bckC`J*g z=%3PkFT3HAX2Q+dShHUbb1?ZcK8U7oaufLTCB#1W{=~k0Jabgv>q|H+GU=f-y|{p4 zwN|AE+YbCgx=7vlXE?@gkXW9PaqbO#GB=4$o0FkNT#EI?aLVd2(qnPK$Yh%YD%v(mdwn}bgsxyIBI^)tY?&G zi^2JfClZ@4b{xFjyTY?D61w@*ez2@5rWLpG#34id?>>oPg{`4F-l`7Lg@D@Hc}On} zx%BO4MsLYosLGACJ-d?ifZ35r^t*}wde>AAWO*J-X%jvD+gL9`u`r=kP zyeJ%FqqKfz8e_3K(M1RmB?gIYi{W7Z<THP2ihue0mbpu5n(x_l|e1tw(q!#m5lmef6ktqIb${ zV+ee#XRU}_dDDUiV@opHZ@EbQ<9qIZJMDsZDkW0^t3#j`S)G#>N^ZBs8k+FJhAfu< z%u!$%dyP3*_+jUvCf-%{x#MyDAK?#iPfE<(@Q0H7;a125eD%I(+!x1f;Sy`e<9>nm zQH4czZDQmW7^n>jL)@P@aAuAF$;I7JZE5a8~AJI5CNDqyf$gjloKR7C?OPt9yeH}n5 zNF8Vhmd%1O>T4EZD&0%Dt7YWNImmEV{7QF(dy!>q5k>Kh&Xy8hcBMUvVV~Xn8O&%{ z&q=JCYw#KlwM8%cu-rNadu(P~i3bM<_a{3!J*;vZhR6dln6#eW0^0kN)Vv3!bqM`w z{@j*eyzz=743dgFPY`Cx3|>ata;;_hQ3RJd+kU}~p~aphRx`03B>g4*~f%hUV+#D9rYRbsGD?jkB^$3XcgB|3N1L& zrmk9&Dg450mAd=Q_p?gIy5Zx7vRL?*rpNq76_rysFo)z)tp0B;7lSb9G5wX1vC9Lc z5Q8tb-alolVNWFsxO_=12o}X(>@Mwz1mkYh1##(qQwN=7VKz?61kay8A9(94Ky(4V zq6qd2+4a20Z0QRrmp6C?4;%U?@MatfXnkj&U6bP_&2Ny}BF%4{QhNx*Tabik9Y-~Z z@0WV6XD}aI(%pN}oW$X~Qo_R#+1$@J8(31?zM`#e`#(0f<-AZ^={^NgH#lc?oi(Mu zMk|#KR^Q;V@?&(sh5)D;-fu)rx%gXZ1&5)MR+Mhssy+W>V%S|PRNyTAd}74<(#J>H zR(1BfM%eIv0+ngHH6(i`?-%_4!6PpK*0X)79SX0X$`lv_q>9(E2kkkP;?c@rW2E^Q zs<;`9dg|lDMNECFrD3jTM^Mn-C$44}9d9Kc z#>*k&e#25;D^%82^1d@Yt{Y91MbEu0C}-;HR4+IaCeZ`l?)Q8M2~&E^FvJ?EBJJ(% zz1>tCW-E~FB}DI}z#+fUo+=kQME^=eH>^%V8w)dh*ugPFdhMUi3R2Cg}Zak4!k_8YW(JcR-)hY8C zXja}R7@%Q0&IzQTk@M|)2ViZDNCDRLNI)*lH%SDa^2TG4;%jE4n`8`aQAA$0SPH2@ z)2eWZuP26+uGq+m8F0fZn)X^|bNe z#f{qYZS!(CdBdM$N2(JH_a^b#R2=>yVf%JI_ieRFB{w&|o9txwMrVxv+n78*aXFGb z>Rkj2yq-ED<)A46T9CL^$iPynv`FoEhUM10@J+UZ@+*@_gyboQ>HY9CiwTUo7OM=w zd~$N)1@6U8H#Zu(wGLa_(Esx%h@*pmm5Y9OX@CY`3kPYPQx@z8yAgtm(+agDU%4?c zy8pR4SYbu8vY?JX6HgVq7|f=?w(%`m-C+a@E{euXo>XrGmkmFGzktI*rj*8D z)O|CHKXEzH{~iS+6)%ybRD|JRQ6j<+u_+=SgnJP%K+4$st+~XCVcAjI9e5`RYq$n{ zzy!X9Nv7>T4}}BZpSj9G9|(4ei-}Du<_IZw+CB`?fd$w^;=j8?vlp(#JOWiHaXJjB0Q00RHJ@sG6N#y^H7t^&V} z;VrDI4?75G$q5W9mV=J2iP24NHJy&d|HWHva>FaS#3AO?+ohh1__FMx;?`f{HG3v0 ztiO^Wanb>U4m9eLhoc_2B(ca@YdnHMB*~aYO+AE(&qh@?WukLbf_y z>*3?Xt-lxr?#}y%kTv+l8;!q?Hq8XSU+1E8x~o@9$)zO2z9K#(t`vPDri`mKhv|sh z{KREcy`#pnV>cTT7dm7M9B@9qJRt3lfo(C`CNkIq@>|2<(yn!AmVN?ST zbX_`JjtWa3&N*U{K7FYX8})*D#2@KBae` zhKS~s!r%SrXdhCsv~sF}7?ocyS?afya6%rDBu6g^b2j#TOGp^1zrMR}|70Z>CeYq- z1o|-=FBKlu{@;pm@QQJ_^!&hzi;0Z_Ho){x3O1KQ#TYk=rAt9`YKC0Y^}8GWIN{QW znYJyVTrmNvl!L=YS1G8BAxGmMUPi+Q7yb0XfG`l+L1NQVSbe^BICYrD;^(rke{jWCEZOtVv3xFze!=Z&(7}!)EcN;v0Dbit?RJ6bOr;N$ z=nk8}H<kCEE+IK3z<+3mkn4q!O7TMWpKShWWWM)X*)m6k%3luF6c>zOsFccvfLWf zH+mNkh!H@vR#~oe=ek}W3!71z$Dlj0c(%S|sJr>rvw!x;oCek+8f8s!U{DmfHcNpO z9>(IKOMfJwv?ey`V2ysSx2Npeh_x#bMh)Ngdj$al;5~R7Ac5R2?*f{hI|?{*$0qU- zY$6}ME%OGh^zA^z9zJUs-?a4ni8cw_{cYED*8x{bWg!Fn9)n;E9@B+t;#k}-2_j@# zg#b%R(5_SJAOtfgFCBZc`n<&z6)%nOIu@*yo!a% zpLg#36KBN$01W{b;qWN`Tp(T#jh%;Zp_zpS64lvBVY2B#UK)p`B4Oo)IO3Z&D6<3S zfF?ZdeNEnzE{}#gyuv)>;z6V{!#bx)` zY;hL*f(WVD*D9A4$WbRKF2vf;MoZVdhfWbWhr{+Db5@M^A4wrFReuWWimA4qp`GgoL2`W4WPUL5A=y3Y3P z%G?8lLUhqo@wJW8VDT`j&%YY7xh51NpVYlsrk_i4J|pLO(}(b8_>%U2M`$iVRDc-n zQiOdJbroQ%*vhN{!{pL~N|cfGooK_jTJCA3g_qs4c#6a&_{&$OoSQr_+-O^mKP=Fu zGObEx`7Qyu{nHTGNj(XSX*NPtAILL(0%8Jh)dQh+rtra({;{W2=f4W?Qr3qHi*G6B zOEj7%nw^sPy^@05$lOCjAI)?%B%&#cZ~nC|=g1r!9W@C8T0iUc%T*ne z)&u$n>Ue3FN|hv+VtA+WW)odO-sdtDcHfJ7s&|YCPfWaVHpTGN46V7Lx@feE#Od%0XwiZy40plD%{xl+K04*se zw@X4&*si2Z_0+FU&1AstR)7!Th(fdaOlsWh`d!y=+3m!QC$Zlkg8gnz!}_B7`+wSz z&kD?6{zPnE3uo~Tv8mLP%RaNt2hcCJBq=0T>%MW~Q@Tpt2pPP1?KcywH>in5@ zx+5;xu-ltFfo5vLU;2>r$-KCHjwGR&1XZ0YNyrXXAUK!FLM_7mV&^;;X^*YH(FLRr z`0Jjg7wiq2bisa`CG%o9i)o1`uG?oFjU_Zrv1S^ipz$G-lc^X@~6*)#%nn+RbgksJfl{w=k31(q>7a!PCMp5YY{+Neh~mo zG-3dd!0cy`F!nWR?=9f_KP$X?Lz&cLGm_ohy-|u!VhS1HG~e7~xKpYOh=GmiiU;nu zrZ5tWfan3kp-q_vO)}vY6a$19Q6UL0r znJ+iSHN-&w@vDEZ0V%~?(XBr|jz&vrBNLOngULxtH(Rp&U*rMY42n;05F11xh?k;n_DX2$4|vWIkXnbwfC z=ReH=(O~a;VEgVO?>qsP*#eOC9Y<_9Yt<6X}X{PyF7UXIA$f)>NR5P&4G_Ygq(9TwwQH*P>Rq>3T4I+t2X(b5ogXBAfNf!xiF#Gilm zp2h{&D4k!SkKz-SBa%F-ZoVN$7GX2o=(>vkE^j)BDSGXw?^%RS9F)d_4}PN+6MlI8*Uk7a28CZ)Gp*EK)`n5i z){aq=0SFSO-;sw$nAvJU-$S-cW?RSc7kjEBvWDr1zxb1J7i;!i+3PQwb=)www?7TZ zE~~u)vO>#55eLZW;)F(f0KFf8@$p)~llV{nO7K_Nq-+S^h%QV_CnXLi)p*Pq&`s!d zK2msiR;Hk_rO8`kqe_jfTmmv|$MMo0ll}mI)PO4!ikVd(ZThhi&4ZwK?tD-}noj}v zBJ?jH-%VS|=t)HuTk?J1XaDUjd_5p1kPZi6y#F6$lLeRQbj4hsr=hX z4tXkX2d5DeLMcAYTeYm|u(XvG5JpW}hcOs4#s8g#ihK%@hVz|kL=nfiBqJ{*E*WhC zht3mi$P3a(O5JiDq$Syu9p^HY&9~<#H89D8 zJm84@%TaL_BZ+qy8+T3_pG7Q%z80hnjN;j>S=&WZWF48PDD%55lVuC0%#r5(+S;WH zS7!HEzmn~)Ih`gE`faPRjPe^t%g=F ztpGVW=Cj5ZkpghCf~`ar0+j@A=?3(j@7*pq?|9)n*B4EQTA1xj<+|(Y72?m7F%&&& zdO44owDBPT(8~RO=dT-K4#Ja@^4_0v$O3kn73p6$s?mCmVDUZ+Xl@QcpR6R3B$=am z%>`r9r2Z79Q#RNK?>~lwk^nQlR=Hr-ji$Ss3ltbmB)x@0{VzHL-rxVO(++@Yr@Iu2 zTEX)_9sVM>cX$|xuqz~Y8F-(n;KLAfi*63M7mh&gsPR>N0pd9h!0bm%nA?Lr zS#iEmG|wQd^BSDMk0k?G>S-uE$vtKEF8Dq}%vLD07zK4RLoS?%F1^oZZI$0W->7Z# z?v&|a`u#UD=_>i~`kzBGaPj!mYX5g?3RC4$5EV*j0sV)>H#+$G6!ci=6`)85LWR=FCp-NUff`;2zG9nU6F~ z;3ZyE*>*LvUgae+uMf}aV}V*?DCM>{o31+Sx~6+sz;TI(VmIpDrN3z+BUj`oGGgLP z>h9~MP}Pw#YwzfGP8wSkz`V#}--6}7S9yZvb{;SX?6PM_KuYpbi~*=teZr-ga2QqIz{QrEyZ@>eN*qmy;N@FCBbRNEeeoTmQyrX;+ zCkaJ&vOIbc^2BD6_H+Mrcl?Nt7O{xz9R_L0ZPV_u!sz+TKbXmhK)0QWoe-_HwtKJ@@7=L+ z+K8hhf=4vbdg3GqGN<;v-SMIzvX=Z`WUa_91Yf89^#`G(f-Eq>odB^p-Eqx}ENk#&MxJ+%~Ad2-*`1LNT>2INPw?*V3&kE;tt?rQyBw? zI+xJD04GTz1$7~KMnfpkPRW>f%n|0YCML@ODe`10;^DXX-|Hb*IE%_Vi#Pn9@#ufA z_8NY*1U%VseqYrSm?%>F@`laz+f?+2cIE4Jg6 z_VTcx|DSEA`g!R%RS$2dSRM|9VQClsW-G<~=j5T`pTbu-x6O`R z98b;}`rPM(2={YiytrqX+uh65f?%XiPp`;4CcMT*E*dQJ+if9^D>c_Dk8A(cE<#r=&!& z_`Z01=&MEE+2@yr!|#El=yM}v>i=?w^2E_FLPy(*4A9XmCNy>cBWdx3U>1RylsItO z4V8T$z3W-qqq*H`@}lYpfh=>C!tieKhoMGUi)EpWDr;yIL&fy};Y&l|)f^QE*k~4C zH>y`Iu%#S)z)YUqWO%el*Z)ME#p{1_8-^~6UF;kBTW zMQ!eXQuzkR#}j{qb(y9^Y!X7&T}}-4$%4w@w=;w+>Z%uifR9OoQ>P?0d9xpcwa>7kTv2U zT-F?3`Q`7xOR!gS@j>7In>_h){j#@@(ynYh;nB~}+N6qO(JO1xA z@59Pxc#&I~I64slNR?#hB-4XE>EFU@lUB*D)tu%uEa))B#eJ@ZOX0hIulfnDQz-y8 z`CX@(O%_VC{Ogh&ot``jlDL%R!f>-8yq~oLGxBO?+tQb5%k@a9zTs!+=NOwSVH-cR zqFo^jHeXDA_!rx$NzdP;>{-j5w3QUrR<;}=u2|FBJ;D#v{SK@Z6mjeV7_kFmWt95$ zeGaF{IU?U>?W`jzrG_9=9}yN*LKyzz))PLE+)_jc#4Rd$yFGol;NIk(qO1$5VXR)+ zxF7%f4=Q!NzR>DVXUB&nUT&>Nyf+5QRF+Z`X-bB*7=`|Go5D1&h~ zflKLw??kpiRm0h3|1GvySC2^#kcFz^5{79KKlq@`(leBa=_4CgV9sSHr{RIJ^KwR_ zY??M}-x^=MD+9`v@I3jue=OCn0kxno#6i>b(XKk_XTp_LpI}X*UA<#* zsgvq@yKTe_dTh>q1aeae@8yur08S(Q^8kXkP_ty48V$pX#y9)FQa~E7P7}GP_CbCm zc2dQxTeW(-~Y6}im24*XOC8ySfH*HMEnW3 z4CXp8iK(Nk<^D$g0kUW`8PXn2kdcDk-H@P0?G8?|YVlIFb?a>QunCx%B9TzsqQQ~HD!UO7zq^V!v9jho_FUob&Hxi ztU1nNOK)a!gkb-K4V^QVX05*>-^i|{b`hhvQLyj`E1vAnj0fbqqO%r z6Q;X1x0dL~GqMv%8QindZ4CZ%7pYQW~ z9)I*#Gjref-q(4Z*E#1c&rE0-_(4;_M(V7rgH_7H;ps1s%GBmU z{4a|X##j#XUF2n({v?ZUUAP5k>+)^F)7n-npbV3jAlY8V3*W=fwroDS$c&r$>8aH` zH+irV{RG3^F3oW2&E%5hXgMH9>$WlqX76Cm+iFmFC-DToTa`AcuN9S!SB+BT-IA#3P)JW1m~Cuwjs`Ep(wDXE4oYmt*aU z!Naz^lM}B)JFp7ejro7MU9#cI>wUoi{lylR2~s)3M!6a=_W~ITXCPd@U9W)qA5(mdOf zd3PntGPJyRX<9cgX?(9~TZB5FdEHW~gkJXY51}?s4ZT_VEdwOwD{T2E-B>oC8|_ZwsPNj=-q(-kwy%xX2K0~H z{*+W`-)V`7@c#Iuaef=?RR2O&x>W0A^xSwh5MsjTz(DVG-EoD@asu<>72A_h<39_# zawWVU<9t{r*e^u-5Q#SUI6dV#p$NYEGyiowT>>d*or=Ps!H$-3={bB|An$GPkP5F1 zTnu=ktmF|6E*>ZQvk^~DX(k!N`tiLut*?3FZhs$NUEa4ccDw66-~P;x+0b|<!ZN7Z%A`>2tN#CdoG>((QR~IV_Gj^Yh%!HdA~4C3jOXaqb6Ou z21T~Wmi9F6(_K0@KR@JDTh3-4mv2=T7&ML<+$4;b9SAtv*Uu`0>;VVZHB{4?aIl3J zL(rMfk?1V@l)fy{J5DhVlj&cWKJCcrpOAad(7mC6#%|Sn$VwMjtx6RDx1zbQ|Ngg8N&B56DGhu;dYg$Z{=YmCNn+?ceDclp65c_RnKs4*vefnhudSlrCy6-96vSB4_sFAj# zftzECwmNEOtED^NUt{ZDjT7^g>k1w<=af>+0)%NA;IPq6qx&ya7+QAu=pk8t>KTm` zEBj9J*2t|-(h)xc>Us*jHs)w9qmA>8@u21UqzKk*Ei#0kCeW6o z-2Q+Tvt25IUkb}-_LgD1_FUJ!U8@8OC^9(~Kd*0#zr*8IQkD)6Keb(XFai5*DYf~` z@U?-{)9X&BTf!^&@^rjmvea#9OE~m(D>qfM?CFT9Q4RxqhO0sA7S)=--^*Q=kNh7Y zq%2mu_d_#23d`+v`Ol263CZ<;D%D8Njj6L4T`S*^{!lPL@pXSm>2;~Da- zBX97TS{}exvSva@J5FJVCM$j4WDQuME`vTw>PWS0!;J7R+Kq zVUy6%#n5f7EV(}J#FhDpts;>=d6ow!yhJj8j>MJ@Wr_?x30buuutIG97L1A*QFT$c ziC5rBS;#qj=~yP-yWm-p(?llTwDuhS^f&<(9vA9@UhMH2-Fe_YAG$NvK6X{!mvPK~ zuEA&PA}meylmaIbbJXDOzuIn8cJNCV{tUA<$Vb?57JyAM`*GpEfMmFq>)6$E(9e1@W`l|R%-&}38#bl~levA#fx2wiBk^)mPj?<=S&|gv zQO)4*91$n08@W%2b|QxEiO0KxABAZC{^4BX^6r>Jm?{!`ZId9jjz<%pl(G5l));*`UU3KfnuXSDj2aP>{ zRIB$9pm7lj3*Xg)c1eG!cb+XGt&#?7yJ@C)(Ik)^OZ5><4u$VLCqZ#q2NMCt5 z6$|VN(RWM;5!JV?-h<JkEZ(SZF zC(6J+>A6Am9H7OlOFq6S62-2&z^Np=#xXsOq0WUKr zY_+Ob|CQd1*!Hirj5rn*=_bM5_zKmq6lG zn*&_=x%?ATxZ8ZTzd%biKY_qyNC#ZQ1vX+vc48N>aJXEjs{Y*3Op`Q7-oz8jyAh>d zNt_qvn`>q9aO~7xm{z`ree%lJ3YHCyC`q`-jUVCn*&NIml!uuMNm|~u3#AV?6kC+B z?qrT?xu2^mobSlzb&m(8jttB^je0mx;TT8}`_w(F11IKz83NLj@OmYDpCU^u?fD{) z&=$ptwVw#uohPb2_PrFX;X^I=MVXPDpqTuYhRa>f-=wy$y3)40-;#EUDYB1~V9t%$ z^^<7Zbs0{eB93Pcy)96%XsAi2^k`Gmnypd-&x4v9rAq<>a(pG|J#+Q>E$FvMLmy7T z5_06W=*ASUyPRfgCeiPIe{b47Hjqpb`9Xyl@$6*ntH@SV^bgH&Fk3L9L=6VQb)Uqa z33u#>ecDo&bK(h1WqSH)b_Th#Tvk&%$NXC@_pg5f-Ma#7q;&0QgtsFO~`V&{1b zbSP*X)jgLtd@9XdZ#2_BX4{X~pS8okF7c1xUhEV9>PZco>W-qz7YMD`+kCGULdK|^ zE7VwQ-at{%&fv`a+b&h`TjzxsyQX05UB~a0cuU-}{*%jR48J+yGWyl3Kdz5}U>;lE zgkba*yI5>xqIPz*Y!-P$#_mhHB!0Fpnv{$k-$xxjLAc`XdmHd1k$V@2QlblfJPrly z*~-4HVCq+?9vha>&I6aRGyq2VUon^L1a)g`-Xm*@bl2|hi2b|UmVYW|b+Gy?!aS-p z86a}Jep6Mf>>}n^*Oca@Xz}kxh)Y&pX$^CFAmi#$YVf57X^}uQD!IQSN&int=D> zJ>_|au3Be?hmPKK)1^JQ(O29eTf`>-x^jF2xYK6j_9d_qFkWHIan5=7EmDvZoQWz5 zZGb<{szHc9Nf@om)K_<=FuLR<&?5RKo3LONFQZ@?dyjemAe4$yDrnD zglU#XYo6|~L+YpF#?deK6S{8A*Ou;9G`cdC4S0U74EW18bc5~4>)<*}?Z!1Y)j;Ot zosEP!pc$O^wud(={WG%hY07IE^SwS-fGbvpP?;l8>H$;}urY2JF$u#$q}E*ZG%fR# z`p{xslcvG)kBS~B*^z6zVT@e}imYcz_8PRzM4GS52#ms5Jg9z~ME+uke`(Tq1w3_6 zxUa{HerS7!Wq&y(<9yyN@P^PrQT+6ij_qW3^Q)I53iIFCJE?MVyGLID!f?QHUi1tq z0)RNIMGO$2>S%3MlBc09l!6_(ECxXTU>$KjWdZX^3R~@3!SB zah5Za2$63;#y!Y}(wg1#shMePQTzfQfXyJ-Tf`R05KYcyvo8UW9-IWGWnzxR6Vj8_la;*-z5vWuwUe7@sKr#Tr51d z2PWn5h@|?QU3>k=s{pZ9+(}oye zc*95N_iLmtmu}H-t$smi49Y&ovX}@mKYt2*?C-i3Lh4*#q5YDg1Mh`j9ovRDf9&& zp_UMQh`|pC!|=}1uWoMK5RAjdTg3pXPCsYmRkWW}^m&)u-*c_st~gcss(`haA)xVw zAf=;s>$`Gq_`A}^MjY_BnCjktBNHY1*gzh(i0BFZ{Vg^F?Pbf`8_clvdZ)5(J4EWzAP}Ba5zX=S(2{gDugTQ3`%!q`h7kYSnwC`zEWeuFlODKiityMaM9u{Z%E@@y1jmZA#ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 zcmaiYXH?Tqu=Xz`p-L#B_gI#0we$cm_HcmYFP$?wjD#BaCN4mzC5#`>w9y6=ThxrYZc0WPXprg zYjB`UsV}0=eUtY$(P6YW}npdd;%9pi?zS3k-nqCob zSX_AQEf|=wYT3r?f!*Yt)ar^;l3Sro{z(7deUBPd2~(SzZ-s@0r&~Km2S?8r##9-< z)2UOSVaHqq6}%sA9Ww;V2LG=PnNAh6mA2iWOuV7T_lRDR z&N8-eN=U)-T|;wo^Wv=34wtV0g}sAAe}`Ph@~!|<;z7*K8(qkX0}o=!(+N*UWrkEja*$_H6mhK1u{P!AC39} z|3+Z(mAOq#XRYS)TLoHv<)d%$$I@+x+2)V{@o~~J-!YUI-Q9%!Ldi4Op&Lw&B>jj* zwAgC#Y>gbIqv!d|J5f!$dbCXoq(l3GR(S>(rtZ~Z*agXMMKN!@mWT_vmCbSd3dUUm z4M&+gz?@^#RRGal%G3dDvj7C5QTb@9+!MG+>0dcjtZEB45c+qx*c?)d<%htn1o!#1 zpIGonh>P1LHu3s)fGFF-qS}AXjW|M*2Xjkh7(~r(lN=o#mBD9?jt74=Rz85I4Nfx_ z7Z)q?!};>IUjMNM6ee2Thq7))a>My?iWFxQ&}WvsFP5LP+iGz+QiYek+K1`bZiTV- zHHYng?ct@Uw5!gquJ(tEv1wTrRR7cemI>aSzLI^$PxW`wL_zt@RSfZ1M3c2sbebM* ze0=;sy^!90gL~YKISz*x;*^~hcCoO&CRD)zjT(A2b_uRue=QXFe5|!cf0z1m!iwv5GUnLw9Dr*Ux z)3Lc!J@Ei;&&yxGpf2kn@2wJ2?t6~obUg;?tBiD#uo$SkFIasu+^~h33W~`r82rSa ztyE;ehFjC2hjpJ-e__EH&z?!~>UBb=&%DS>NT)1O3Isn-!SElBV2!~m6v0$vx^a<@ISutdTk1@?;i z<8w#b-%|a#?e5(n@7>M|v<<0Kpg?BiHYMRe!3Z{wYc2hN{2`6(;q`9BtXIhVq6t~KMH~J0~XtUuT06hL8c1BYZWhN zk4F2I;|za*R{ToHH2L?MfRAm5(i1Ijw;f+0&J}pZ=A0;A4M`|10ZskA!a4VibFKn^ zdVH4OlsFV{R}vFlD~aA4xxSCTTMW@Gws4bFWI@xume%smAnuJ0b91QIF?ZV!%VSRJ zO7FmG!swKO{xuH{DYZ^##gGrXsUwYfD0dxXX3>QmD&`mSi;k)YvEQX?UyfIjQeIm! z0ME3gmQ`qRZ;{qYOWt}$-mW*>D~SPZKOgP)T-Sg%d;cw^#$>3A9I(%#vsTRQe%moT zU`geRJ16l>FV^HKX1GG7fR9AT((jaVb~E|0(c-WYQscVl(z?W!rJp`etF$dBXP|EG z=WXbcZ8mI)WBN>3<@%4eD597FD5nlZajwh8(c$lum>yP)F}=(D5g1-WVZRc)(!E3} z-6jy(x$OZOwE=~{EQS(Tp`yV2&t;KBpG*XWX!yG+>tc4aoxbXi7u@O*8WWFOxUjcq z^uV_|*818$+@_{|d~VOP{NcNi+FpJ9)aA2So<7sB%j`$Prje&auIiTBb{oD7q~3g0 z>QNIwcz(V-y{Ona?L&=JaV5`o71nIsWUMA~HOdCs10H+Irew#Kr(2cn>orG2J!jvP zqcVX0OiF}c<)+5&p}a>_Uuv)L_j}nqnJ5a?RPBNi8k$R~zpZ33AA4=xJ@Z($s3pG9 zkURJY5ZI=cZGRt_;`hs$kE@B0FrRx(6K{`i1^*TY;Vn?|IAv9|NrN*KnJqO|8$e1& zb?OgMV&q5|w7PNlHLHF) zB+AK#?EtCgCvwvZ6*u|TDhJcCO+%I^@Td8CR}+nz;OZ*4Dn?mSi97m*CXXc=};!P`B?}X`F-B5v-%ACa8fo0W++j&ztmqK z;&A)cT4ob9&MxpQU41agyMU8jFq~RzXOAsy>}hBQdFVL%aTn~M>5t9go2j$i9=(rZ zADmVj;Qntcr3NIPPTggpUxL_z#5~C!Gk2Rk^3jSiDqsbpOXf^f&|h^jT4|l2ehPat zb$<*B+x^qO8Po2+DAmrQ$Zqc`1%?gp*mDk>ERf6I|42^tjR6>}4`F_Mo^N(~Spjcg z_uY$}zui*PuDJjrpP0Pd+x^5ds3TG#f?57dFL{auS_W8|G*o}gcnsKYjS6*t8VI<) zcjqTzW(Hk*t-Qhq`Xe+x%}sxXRerScbPGv8hlJ;CnU-!Nl=# zR=iTFf9`EItr9iAlAGi}i&~nJ-&+)Y| zMZigh{LXe)uR+4D_Yb+1?I93mHQ5{pId2Fq%DBr7`?ipi;CT!Q&|EO3gH~7g?8>~l zT@%*5BbetH)~%TrAF1!-!=)`FIS{^EVA4WlXYtEy^|@y@yr!C~gX+cp2;|O4x1_Ol z4fPOE^nj(}KPQasY#U{m)}TZt1C5O}vz`A|1J!-D)bR%^+=J-yJsQXDzFiqb+PT0! zIaDWWU(AfOKlSBMS};3xBN*1F2j1-_=%o($ETm8@oR_NvtMDVIv_k zlnNBiHU&h8425{MCa=`vb2YP5KM7**!{1O>5Khzu+5OVGY;V=Vl+24fOE;tMfujoF z0M``}MNnTg3f%Uy6hZi$#g%PUA_-W>uVCYpE*1j>U8cYP6m(>KAVCmbsDf39Lqv0^ zt}V6FWjOU@AbruB7MH2XqtnwiXS2scgjVMH&aF~AIduh#^aT1>*V>-st8%=Kk*{bL zzbQcK(l2~)*A8gvfX=RPsNnjfkRZ@3DZ*ff5rmx{@iYJV+a@&++}ZW+za2fU>&(4y`6wgMpQGG5Ah(9oGcJ^P(H< zvYn5JE$2B`Z7F6ihy>_49!6}(-)oZ(zryIXt=*a$bpIw^k?>RJ2 zQYr>-D#T`2ZWDU$pM89Cl+C<;J!EzHwn(NNnWpYFqDDZ_*FZ{9KQRcSrl5T>dj+eA zi|okW;6)6LR5zebZJtZ%6Gx8^=2d9>_670!8Qm$wd+?zc4RAfV!ZZ$jV0qrv(D`db zm_T*KGCh3CJGb(*X6nXzh!h9@BZ-NO8py|wG8Qv^N*g?kouH4%QkPU~Vizh-D3<@% zGomx%q42B7B}?MVdv1DFb!axQ73AUxqr!yTyFlp%Z1IAgG49usqaEbI_RnbweR;Xs zpJq7GKL_iqi8Md?f>cR?^0CA+Uk(#mTlGdZbuC*$PrdB$+EGiW**=$A3X&^lM^K2s zzwc3LtEs5|ho z2>U(-GL`}eNgL-nv3h7E<*<>C%O^=mmmX0`jQb6$mP7jUKaY4je&dCG{x$`0=_s$+ zSpgn!8f~ya&U@c%{HyrmiW2&Wzc#Sw@+14sCpTWReYpF9EQ|7vF*g|sqG3hx67g}9 zwUj5QP2Q-(KxovRtL|-62_QsHLD4Mu&qS|iDp%!rs(~ah8FcrGb?Uv^Qub5ZT_kn%I^U2rxo1DDpmN@8uejxik`DK2~IDi1d?%~pR7i#KTS zA78XRx<(RYO0_uKnw~vBKi9zX8VnjZEi?vD?YAw}y+)wIjIVg&5(=%rjx3xQ_vGCy z*&$A+bT#9%ZjI;0w(k$|*x{I1c!ECMus|TEA#QE%#&LxfGvijl7Ih!B2 z6((F_gwkV;+oSKrtr&pX&fKo3s3`TG@ye+k3Ov)<#J|p8?vKh@<$YE@YIU1~@7{f+ zydTna#zv?)6&s=1gqH<-piG>E6XW8ZI7&b@-+Yk0Oan_CW!~Q2R{QvMm8_W1IV8<+ zQTyy=(Wf*qcQubRK)$B;QF}Y>V6d_NM#=-ydM?%EPo$Q+jkf}*UrzR?Nsf?~pzIj$ z<$wN;7c!WDZ(G_7N@YgZ``l;_eAd3+;omNjlpfn;0(B7L)^;;1SsI6Le+c^ULe;O@ zl+Z@OOAr4$a;=I~R0w4jO`*PKBp?3K+uJ+Tu8^%i<_~bU!p%so z^sjol^slR`W@jiqn!M~eClIIl+`A5%lGT{z^mRbpv}~AyO%R*jmG_Wrng{B9TwIuS z0!@fsM~!57K1l0%{yy(#no}roy#r!?0wm~HT!vLDfEBs9x#`9yCKgufm0MjVRfZ=f z4*ZRc2Lgr(P+j2zQE_JzYmP0*;trl7{*N341Cq}%^M^VC3gKG-hY zmPT>ECyrhIoFhnMB^qpdbiuI}pk{qPbK^}0?Rf7^{98+95zNq6!RuV_zAe&nDk0;f zez~oXlE5%ve^TmBEt*x_X#fs(-En$jXr-R4sb$b~`nS=iOy|OVrph(U&cVS!IhmZ~ zKIRA9X%Wp1J=vTvHZ~SDe_JXOe9*fa zgEPf;gD^|qE=dl>Qkx3(80#SE7oxXQ(n4qQ#by{uppSKoDbaq`U+fRqk0BwI>IXV3 zD#K%ASkzd7u>@|pA=)Z>rQr@dLH}*r7r0ng zxa^eME+l*s7{5TNu!+bD{Pp@2)v%g6^>yj{XP&mShhg9GszNu4ITW=XCIUp2Xro&1 zg_D=J3r)6hp$8+94?D$Yn2@Kp-3LDsci)<-H!wCeQt$e9Jk)K86hvV^*Nj-Ea*o;G zsuhRw$H{$o>8qByz1V!(yV{p_0X?Kmy%g#1oSmlHsw;FQ%j9S#}ha zm0Nx09@jmOtP8Q+onN^BAgd8QI^(y!n;-APUpo5WVdmp8!`yKTlF>cqn>ag`4;o>i zl!M0G-(S*fm6VjYy}J}0nX7nJ$h`|b&KuW4d&W5IhbR;-)*9Y0(Jj|@j`$xoPQ=Cl literal 0 HcmV?d00001 diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig b/code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 000000000..4aab5a43b --- /dev/null +++ b/code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = client + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.client + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. diff --git a/code_sharing/client/macos/Runner/Configs/Debug.xcconfig b/code_sharing/client/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 000000000..36b0fd946 --- /dev/null +++ b/code_sharing/client/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/code_sharing/client/macos/Runner/Configs/Release.xcconfig b/code_sharing/client/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 000000000..dff4f4956 --- /dev/null +++ b/code_sharing/client/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/code_sharing/client/macos/Runner/Configs/Warnings.xcconfig b/code_sharing/client/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 000000000..42bcbf478 --- /dev/null +++ b/code_sharing/client/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/code_sharing/client/macos/Runner/DebugProfile.entitlements b/code_sharing/client/macos/Runner/DebugProfile.entitlements new file mode 100644 index 000000000..3ba6c1266 --- /dev/null +++ b/code_sharing/client/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/code_sharing/client/macos/Runner/Info.plist b/code_sharing/client/macos/Runner/Info.plist new file mode 100644 index 000000000..4789daa6a --- /dev/null +++ b/code_sharing/client/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/code_sharing/client/macos/Runner/MainFlutterWindow.swift b/code_sharing/client/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 000000000..2722837ec --- /dev/null +++ b/code_sharing/client/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/code_sharing/client/macos/Runner/Release.entitlements b/code_sharing/client/macos/Runner/Release.entitlements new file mode 100644 index 000000000..852fa1a47 --- /dev/null +++ b/code_sharing/client/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/code_sharing/client/pubspec.yaml b/code_sharing/client/pubspec.yaml new file mode 100644 index 000000000..f46c1210c --- /dev/null +++ b/code_sharing/client/pubspec.yaml @@ -0,0 +1,23 @@ +name: client +description: A Flutter app which communicates with a Dart backend using shared business logic. +publish_to: "none" +version: 1.0.0+1 + +environment: + sdk: ">=2.18.1 <3.0.0" + +dependencies: + cupertino_icons: ^1.0.2 + flutter: + sdk: flutter + http: ^0.13.5 + shared: + path: ../server/shared + +dev_dependencies: + flutter_lints: ^2.0.0 + flutter_test: + sdk: flutter + +flutter: + uses-material-design: true diff --git a/code_sharing/client/test/widget_test.dart b/code_sharing/client/test/widget_test.dart new file mode 100644 index 000000000..87ae42dd6 --- /dev/null +++ b/code_sharing/client/test/widget_test.dart @@ -0,0 +1,15 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:client/main.dart'; + +void main() { + group('App should', () { + testWidgets('build its widgets', (WidgetTester tester) async { + await tester.pumpWidget( + MyApp( + getCount: () => Future.value(1), + increment: (int x) => Future.value(x), + ), + ); + }); + }); +} diff --git a/code_sharing/client/web/favicon.png b/code_sharing/client/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/icons/Icon-192.png b/code_sharing/client/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/icons/Icon-512.png b/code_sharing/client/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/icons/Icon-maskable-192.png b/code_sharing/client/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/icons/Icon-maskable-512.png b/code_sharing/client/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/index.html b/code_sharing/client/web/index.html new file mode 100644 index 000000000..ddafccc76 --- /dev/null +++ b/code_sharing/client/web/index.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + client + + + + + + + + + + diff --git a/code_sharing/client/web/manifest.json b/code_sharing/client/web/manifest.json new file mode 100644 index 000000000..554b75eec --- /dev/null +++ b/code_sharing/client/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "client", + "short_name": "client", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/code_sharing/client/windows/.gitignore b/code_sharing/client/windows/.gitignore new file mode 100644 index 000000000..d492d0d98 --- /dev/null +++ b/code_sharing/client/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/code_sharing/client/windows/CMakeLists.txt b/code_sharing/client/windows/CMakeLists.txt new file mode 100644 index 000000000..e6f6ba69d --- /dev/null +++ b/code_sharing/client/windows/CMakeLists.txt @@ -0,0 +1,101 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(client LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "client") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/code_sharing/client/windows/flutter/CMakeLists.txt b/code_sharing/client/windows/flutter/CMakeLists.txt new file mode 100644 index 000000000..930d2071a --- /dev/null +++ b/code_sharing/client/windows/flutter/CMakeLists.txt @@ -0,0 +1,104 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/code_sharing/client/windows/flutter/generated_plugin_registrant.cc b/code_sharing/client/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 000000000..8b6d4680a --- /dev/null +++ b/code_sharing/client/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void RegisterPlugins(flutter::PluginRegistry* registry) { +} diff --git a/code_sharing/client/windows/flutter/generated_plugin_registrant.h b/code_sharing/client/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 000000000..dc139d85a --- /dev/null +++ b/code_sharing/client/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/code_sharing/client/windows/flutter/generated_plugins.cmake b/code_sharing/client/windows/flutter/generated_plugins.cmake new file mode 100644 index 000000000..b93c4c30c --- /dev/null +++ b/code_sharing/client/windows/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/code_sharing/client/windows/runner/CMakeLists.txt b/code_sharing/client/windows/runner/CMakeLists.txt new file mode 100644 index 000000000..394917c05 --- /dev/null +++ b/code_sharing/client/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/code_sharing/client/windows/runner/Runner.rc b/code_sharing/client/windows/runner/Runner.rc new file mode 100644 index 000000000..88f5545b8 --- /dev/null +++ b/code_sharing/client/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example" "\0" + VALUE "FileDescription", "client" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "client" "\0" + VALUE "LegalCopyright", "Copyright (C) 2022 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "client.exe" "\0" + VALUE "ProductName", "client" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/code_sharing/client/windows/runner/flutter_window.cpp b/code_sharing/client/windows/runner/flutter_window.cpp new file mode 100644 index 000000000..b25e363ef --- /dev/null +++ b/code_sharing/client/windows/runner/flutter_window.cpp @@ -0,0 +1,66 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/code_sharing/client/windows/runner/flutter_window.h b/code_sharing/client/windows/runner/flutter_window.h new file mode 100644 index 000000000..6da0652f0 --- /dev/null +++ b/code_sharing/client/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/code_sharing/client/windows/runner/main.cpp b/code_sharing/client/windows/runner/main.cpp new file mode 100644 index 000000000..01431ddd3 --- /dev/null +++ b/code_sharing/client/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"client", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/code_sharing/client/windows/runner/resource.h b/code_sharing/client/windows/runner/resource.h new file mode 100644 index 000000000..66a65d1e4 --- /dev/null +++ b/code_sharing/client/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/code_sharing/client/windows/runner/resources/app_icon.ico b/code_sharing/client/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/windows/runner/runner.exe.manifest b/code_sharing/client/windows/runner/runner.exe.manifest new file mode 100644 index 000000000..a42ea7687 --- /dev/null +++ b/code_sharing/client/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/code_sharing/client/windows/runner/utils.cpp b/code_sharing/client/windows/runner/utils.cpp new file mode 100644 index 000000000..f5bf9fa0f --- /dev/null +++ b/code_sharing/client/windows/runner/utils.cpp @@ -0,0 +1,64 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, utf8_string.data(), + target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/code_sharing/client/windows/runner/utils.h b/code_sharing/client/windows/runner/utils.h new file mode 100644 index 000000000..3879d5475 --- /dev/null +++ b/code_sharing/client/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/code_sharing/client/windows/runner/win32_window.cpp b/code_sharing/client/windows/runner/win32_window.cpp new file mode 100644 index 000000000..041a38554 --- /dev/null +++ b/code_sharing/client/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/code_sharing/client/windows/runner/win32_window.h b/code_sharing/client/windows/runner/win32_window.h new file mode 100644 index 000000000..c86632d8a --- /dev/null +++ b/code_sharing/client/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responsponds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/code_sharing/docker-compose.yml b/code_sharing/docker-compose.yml new file mode 100644 index 000000000..bf378f004 --- /dev/null +++ b/code_sharing/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3.7" +services: + server: + build: + context: server + ports: + - 8080:8080 + environment: + SERVER_PORT: "8080" + SERVER_URL: "localhost" + SERVER_SCHEME: "http" diff --git a/code_sharing/server/.dockerignore b/code_sharing/server/.dockerignore new file mode 100644 index 000000000..21504f8fe --- /dev/null +++ b/code_sharing/server/.dockerignore @@ -0,0 +1,9 @@ +.dockerignore +Dockerfile +build/ +.dart_tool/ +.git/ +.github/ +.gitignore +.idea/ +.packages diff --git a/code_sharing/server/.gitignore b/code_sharing/server/.gitignore new file mode 100644 index 000000000..3c8a15727 --- /dev/null +++ b/code_sharing/server/.gitignore @@ -0,0 +1,6 @@ +# Files and directories created by pub. +.dart_tool/ +.packages + +# Conventional directory for build output. +build/ diff --git a/code_sharing/server/CHANGELOG.md b/code_sharing/server/CHANGELOG.md new file mode 100644 index 000000000..effe43c82 --- /dev/null +++ b/code_sharing/server/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version. diff --git a/code_sharing/server/Dockerfile b/code_sharing/server/Dockerfile new file mode 100644 index 000000000..f07aec295 --- /dev/null +++ b/code_sharing/server/Dockerfile @@ -0,0 +1,20 @@ +# Use latest stable channel SDK. +FROM dart:stable AS build + +# Resolve app dependencies. +WORKDIR /app +COPY . . +RUN dart pub get + +# AOT compile app. +RUN dart compile exe bin/server.dart -o bin/server + +# Build minimal serving image from AOT-compiled `/server` +# and the pre-built AOT-runtime in the `/runtime/` directory of the base image. +FROM scratch +COPY --from=build /runtime/ / +COPY --from=build /app/bin/server /app/bin/ + +# Start server. +EXPOSE 8080 +CMD ["/app/bin/server"] diff --git a/code_sharing/server/README.md b/code_sharing/server/README.md new file mode 100644 index 000000000..e695d9de5 --- /dev/null +++ b/code_sharing/server/README.md @@ -0,0 +1,49 @@ +A server app built using [Shelf](https://pub.dev/packages/shelf), +configured to enable running with [Docker](https://www.docker.com/). + +This sample code handles HTTP GET requests to `/` and `/echo/` + +# Running the sample + +## Running with the Dart SDK + +You can run the example with the [Dart SDK](https://dart.dev/get-dart) +like this: + +``` +$ dart run bin/server.dart +Server listening on port 8080 +``` + +And then from a second terminal: +``` +$ curl http://0.0.0.0:8080 +Hello, World! +$ curl http://0.0.0.0:8080/echo/I_love_Dart +I_love_Dart +``` + +## Running with Docker + +If you have [Docker Desktop](https://www.docker.com/get-started) installed, you +can build and run with the `docker` command: + +``` +$ docker build . -t myserver +$ docker run -it -p 8080:8080 myserver +Server listening on port 8080 +``` + +And then from a second terminal: +``` +$ curl http://0.0.0.0:8080 +Hello, World! +$ curl http://0.0.0.0:8080/echo/I_love_Dart +I_love_Dart +``` + +You should see the logging printed in the first terminal: +``` +2021-05-06T15:47:04.620417 0:00:00.000158 GET [200] / +2021-05-06T15:47:08.392928 0:00:00.001216 GET [200] /echo/I_love_Dart +``` diff --git a/code_sharing/server/analysis_options.yaml b/code_sharing/server/analysis_options.yaml new file mode 100644 index 000000000..dee8927aa --- /dev/null +++ b/code_sharing/server/analysis_options.yaml @@ -0,0 +1,30 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +# linter: +# rules: +# - camel_case_types + +# analyzer: +# exclude: +# - path/to/excluded/files/** + +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/code_sharing/server/bin/server.dart b/code_sharing/server/bin/server.dart new file mode 100644 index 000000000..f27ec5f23 --- /dev/null +++ b/code_sharing/server/bin/server.dart @@ -0,0 +1,36 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:shared/shared.dart'; +import 'package:shelf/shelf.dart'; +import 'package:shelf/shelf_io.dart'; +import 'package:shelf_router/shelf_router.dart'; + +int count = 0; + +// Configure routes. +final _router = Router() + ..post('/', _incrementHandler) + ..get('/', _getValueHandler); + +Future _incrementHandler(Request request) async { + final incr = Increment.fromJson(json.decode(await request.readAsString())); + count += incr.by; + return Response.ok(json.encode(Count(count).toJson())); +} + +Response _getValueHandler(Request request) => + Response.ok(json.encode(Count(count).toJson())); + +void main(List args) async { + // Use any available host or container IP (usually `0.0.0.0`). + final ip = InternetAddress.anyIPv4; + + // Configure a pipeline that logs requests. + final handler = Pipeline().addMiddleware(logRequests()).addHandler(_router); + + // For running in containers, we respect the PORT environment variable. + final port = int.parse(Platform.environment['PORT'] ?? '8080'); + final server = await serve(handler, ip, port); + print('Server listening on port ${server.port}'); +} diff --git a/code_sharing/server/pubspec.yaml b/code_sharing/server/pubspec.yaml new file mode 100644 index 000000000..d89bbeedd --- /dev/null +++ b/code_sharing/server/pubspec.yaml @@ -0,0 +1,19 @@ +name: server +description: A server app using the shelf package and Docker. +version: 1.0.0 +publish_to: "none" + +environment: + sdk: ">=2.18.1 <3.0.0" + +dependencies: + args: ^2.0.0 + shelf: ^1.1.0 + shelf_router: ^1.0.0 + shared: + path: ./shared + +dev_dependencies: + http: ^0.13.0 + lints: ^2.0.0 + test: ^1.15.0 diff --git a/code_sharing/server/shared/.gitignore b/code_sharing/server/shared/.gitignore new file mode 100644 index 000000000..65c34dc86 --- /dev/null +++ b/code_sharing/server/shared/.gitignore @@ -0,0 +1,10 @@ +# Files and directories created by pub. +.dart_tool/ +.packages + +# Conventional directory for build outputs. +build/ + +# Omit committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock diff --git a/code_sharing/server/shared/CHANGELOG.md b/code_sharing/server/shared/CHANGELOG.md new file mode 100644 index 000000000..effe43c82 --- /dev/null +++ b/code_sharing/server/shared/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version. diff --git a/code_sharing/server/shared/README.md b/code_sharing/server/shared/README.md new file mode 100644 index 000000000..8b55e735b --- /dev/null +++ b/code_sharing/server/shared/README.md @@ -0,0 +1,39 @@ + + +TODO: Put a short description of the package here that helps potential users +know whether this package might be useful for them. + +## Features + +TODO: List what your package can do. Maybe include images, gifs, or videos. + +## Getting started + +TODO: List prerequisites and provide or point to information on how to +start using the package. + +## Usage + +TODO: Include short and useful examples for package users. Add longer examples +to `/example` folder. + +```dart +const like = 'sample'; +``` + +## Additional information + +TODO: Tell users more about the package: where to find more information, how to +contribute to the package, how to file issues, what response they can expect +from the package authors, and more. diff --git a/code_sharing/server/shared/analysis_options.yaml b/code_sharing/server/shared/analysis_options.yaml new file mode 100644 index 000000000..bab7a0c0c --- /dev/null +++ b/code_sharing/server/shared/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +# linter: +# rules: +# - camel_case_types + +analyzer: + exclude: + - "**/*.g.dart" +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/code_sharing/server/shared/lib/shared.dart b/code_sharing/server/shared/lib/shared.dart new file mode 100644 index 000000000..f8d3c81d0 --- /dev/null +++ b/code_sharing/server/shared/lib/shared.dart @@ -0,0 +1,4 @@ +/// Common data models required by our client and server. +library shared; + +export 'src/models.dart'; diff --git a/code_sharing/server/shared/lib/src/models.dart b/code_sharing/server/shared/lib/src/models.dart new file mode 100644 index 000000000..12f4a6617 --- /dev/null +++ b/code_sharing/server/shared/lib/src/models.dart @@ -0,0 +1,19 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'models.freezed.dart'; +part 'models.g.dart'; + +@Freezed() +class Increment with _$Increment { + const factory Increment({required int by}) = _Increment; + + factory Increment.fromJson(Map json) => + _$IncrementFromJson(json); +} + +@Freezed() +class Count with _$Count { + const factory Count(int value) = _Count; + + factory Count.fromJson(Map json) => _$CountFromJson(json); +} diff --git a/code_sharing/server/shared/lib/src/models.freezed.dart b/code_sharing/server/shared/lib/src/models.freezed.dart new file mode 100644 index 000000000..fe2a2e8e3 --- /dev/null +++ b/code_sharing/server/shared/lib/src/models.freezed.dart @@ -0,0 +1,271 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target + +part of 'models.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); + +Increment _$IncrementFromJson(Map json) { + return _Increment.fromJson(json); +} + +/// @nodoc +mixin _$Increment { + int get by => throw _privateConstructorUsedError; + + Map toJson() => throw _privateConstructorUsedError; + @JsonKey(ignore: true) + $IncrementCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $IncrementCopyWith<$Res> { + factory $IncrementCopyWith(Increment value, $Res Function(Increment) then) = + _$IncrementCopyWithImpl<$Res>; + $Res call({int by}); +} + +/// @nodoc +class _$IncrementCopyWithImpl<$Res> implements $IncrementCopyWith<$Res> { + _$IncrementCopyWithImpl(this._value, this._then); + + final Increment _value; + // ignore: unused_field + final $Res Function(Increment) _then; + + @override + $Res call({ + Object? by = freezed, + }) { + return _then(_value.copyWith( + by: by == freezed + ? _value.by + : by // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +abstract class _$$_IncrementCopyWith<$Res> implements $IncrementCopyWith<$Res> { + factory _$$_IncrementCopyWith( + _$_Increment value, $Res Function(_$_Increment) then) = + __$$_IncrementCopyWithImpl<$Res>; + @override + $Res call({int by}); +} + +/// @nodoc +class __$$_IncrementCopyWithImpl<$Res> extends _$IncrementCopyWithImpl<$Res> + implements _$$_IncrementCopyWith<$Res> { + __$$_IncrementCopyWithImpl( + _$_Increment _value, $Res Function(_$_Increment) _then) + : super(_value, (v) => _then(v as _$_Increment)); + + @override + _$_Increment get _value => super._value as _$_Increment; + + @override + $Res call({ + Object? by = freezed, + }) { + return _then(_$_Increment( + by: by == freezed + ? _value.by + : by // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$_Increment implements _Increment { + const _$_Increment({required this.by}); + + factory _$_Increment.fromJson(Map json) => + _$$_IncrementFromJson(json); + + @override + final int by; + + @override + String toString() { + return 'Increment(by: $by)'; + } + + @override + bool operator ==(dynamic other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$_Increment && + const DeepCollectionEquality().equals(other.by, by)); + } + + @JsonKey(ignore: true) + @override + int get hashCode => + Object.hash(runtimeType, const DeepCollectionEquality().hash(by)); + + @JsonKey(ignore: true) + @override + _$$_IncrementCopyWith<_$_Increment> get copyWith => + __$$_IncrementCopyWithImpl<_$_Increment>(this, _$identity); + + @override + Map toJson() { + return _$$_IncrementToJson( + this, + ); + } +} + +abstract class _Increment implements Increment { + const factory _Increment({required final int by}) = _$_Increment; + + factory _Increment.fromJson(Map json) = + _$_Increment.fromJson; + + @override + int get by; + @override + @JsonKey(ignore: true) + _$$_IncrementCopyWith<_$_Increment> get copyWith => + throw _privateConstructorUsedError; +} + +Count _$CountFromJson(Map json) { + return _Count.fromJson(json); +} + +/// @nodoc +mixin _$Count { + int get value => throw _privateConstructorUsedError; + + Map toJson() => throw _privateConstructorUsedError; + @JsonKey(ignore: true) + $CountCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CountCopyWith<$Res> { + factory $CountCopyWith(Count value, $Res Function(Count) then) = + _$CountCopyWithImpl<$Res>; + $Res call({int value}); +} + +/// @nodoc +class _$CountCopyWithImpl<$Res> implements $CountCopyWith<$Res> { + _$CountCopyWithImpl(this._value, this._then); + + final Count _value; + // ignore: unused_field + final $Res Function(Count) _then; + + @override + $Res call({ + Object? value = freezed, + }) { + return _then(_value.copyWith( + value: value == freezed + ? _value.value + : value // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +abstract class _$$_CountCopyWith<$Res> implements $CountCopyWith<$Res> { + factory _$$_CountCopyWith(_$_Count value, $Res Function(_$_Count) then) = + __$$_CountCopyWithImpl<$Res>; + @override + $Res call({int value}); +} + +/// @nodoc +class __$$_CountCopyWithImpl<$Res> extends _$CountCopyWithImpl<$Res> + implements _$$_CountCopyWith<$Res> { + __$$_CountCopyWithImpl(_$_Count _value, $Res Function(_$_Count) _then) + : super(_value, (v) => _then(v as _$_Count)); + + @override + _$_Count get _value => super._value as _$_Count; + + @override + $Res call({ + Object? value = freezed, + }) { + return _then(_$_Count( + value == freezed + ? _value.value + : value // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$_Count implements _Count { + const _$_Count(this.value); + + factory _$_Count.fromJson(Map json) => + _$$_CountFromJson(json); + + @override + final int value; + + @override + String toString() { + return 'Count(value: $value)'; + } + + @override + bool operator ==(dynamic other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$_Count && + const DeepCollectionEquality().equals(other.value, value)); + } + + @JsonKey(ignore: true) + @override + int get hashCode => + Object.hash(runtimeType, const DeepCollectionEquality().hash(value)); + + @JsonKey(ignore: true) + @override + _$$_CountCopyWith<_$_Count> get copyWith => + __$$_CountCopyWithImpl<_$_Count>(this, _$identity); + + @override + Map toJson() { + return _$$_CountToJson( + this, + ); + } +} + +abstract class _Count implements Count { + const factory _Count(final int value) = _$_Count; + + factory _Count.fromJson(Map json) = _$_Count.fromJson; + + @override + int get value; + @override + @JsonKey(ignore: true) + _$$_CountCopyWith<_$_Count> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/code_sharing/server/shared/lib/src/models.g.dart b/code_sharing/server/shared/lib/src/models.g.dart new file mode 100644 index 000000000..ad3ee04e4 --- /dev/null +++ b/code_sharing/server/shared/lib/src/models.g.dart @@ -0,0 +1,24 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'models.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$_Increment _$$_IncrementFromJson(Map json) => _$_Increment( + by: json['by'] as int, + ); + +Map _$$_IncrementToJson(_$_Increment instance) => + { + 'by': instance.by, + }; + +_$_Count _$$_CountFromJson(Map json) => _$_Count( + json['value'] as int, + ); + +Map _$$_CountToJson(_$_Count instance) => { + 'value': instance.value, + }; diff --git a/code_sharing/server/shared/pubspec.yaml b/code_sharing/server/shared/pubspec.yaml new file mode 100644 index 000000000..49a76916c --- /dev/null +++ b/code_sharing/server/shared/pubspec.yaml @@ -0,0 +1,17 @@ +name: shared +description: Common data models required by our client and server +version: 1.0.0 + +environment: + sdk: ">=2.18.1 <3.0.0" + +dependencies: + freezed_annotation: ^2.1.0 + json_annotation: ^4.7.0 + +dev_dependencies: + build_runner: ^2.2.1 + freezed: ^2.1.1 + json_serializable: ^6.4.0 + lints: ^2.0.0 + test: ^1.16.0 diff --git a/code_sharing/server/shared/test/shared_test.dart b/code_sharing/server/shared/test/shared_test.dart new file mode 100644 index 000000000..990cbc667 --- /dev/null +++ b/code_sharing/server/shared/test/shared_test.dart @@ -0,0 +1,17 @@ +import 'package:shared/shared.dart'; +import 'package:test/test.dart'; + +void main() { + test('Increment serialization', () { + expect(Increment(by: 3).toJson(), {'by': 3}); + }); + test('Increment derialization', () { + expect(Increment.fromJson({'by': 5}), Increment(by: 5)); + }); + test('Count serialization', () { + expect(Count(3).toJson(), {'value': 3}); + }); + test('Count derialization', () { + expect(Count.fromJson({'value': 5}), Count(5)); + }); +} diff --git a/code_sharing/server/test/server_test.dart b/code_sharing/server/test/server_test.dart new file mode 100644 index 000000000..3d178004e --- /dev/null +++ b/code_sharing/server/test/server_test.dart @@ -0,0 +1,40 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:http/http.dart'; +import 'package:test/test.dart'; + +// Manual test: +// $ dart bin/server.dart +// $ curl -X POST -d '{"by": 1}' -H "Content-Type: application/json" localhost:8080/ + +void main() { + final port = '8080'; + final host = 'http://0.0.0.0:$port'; + late Process p; + + setUp(() async { + p = await Process.start( + 'dart', + ['run', 'bin/server.dart'], + environment: {'PORT': port}, + ); + // Wait for server to start and print to stdout. + await p.stdout.first; + }); + + tearDown(() => p.kill()); + + test('Increment', () async { + final response = await post(Uri.parse('$host/'), body: '{"by": 1}'); + expect(response.statusCode, 200); + expect(response.body, '{"value":1}'); + }); + + test('Get', () async { + final response = await get(Uri.parse('$host/')); + expect(response.statusCode, 200); + final resp = json.decode(response.body) as Map; + expect(resp.containsKey('value'), true); + }); +} diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index 173d237c2..69fcfd6fe 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -15,6 +15,9 @@ declare -ar PROJECT_NAMES=( "add_to_app/prebuilt_module/flutter_module" "android_splash_screen" "animations" + "code_sharing/client" + "code_sharing/server" + "code_sharing/server/shared" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index 6a07361e3..a5b4759d9 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -15,6 +15,8 @@ declare -ar PROJECT_NAMES=( "add_to_app/prebuilt_module/flutter_module" "android_splash_screen" "animations" + "code_sharing/client" + "code_sharing/server" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" @@ -23,7 +25,7 @@ declare -ar PROJECT_NAMES=( # "experimental/linting_tool" "experimental/material_3_demo" "flutter_maps_firestore" - # TODO(domesticmouse): 'errorColor' is deprecated and shouldn't be used. + # TODO(domesticmouse): 'errorColor' is deprecated and shouldn't be used. # "form_app" "game_template" "infinite_list" diff --git a/tool/flutter_ci_script_stable.sh b/tool/flutter_ci_script_stable.sh index 40ecf362f..2c5f1bbb4 100755 --- a/tool/flutter_ci_script_stable.sh +++ b/tool/flutter_ci_script_stable.sh @@ -15,6 +15,8 @@ declare -ar PROJECT_NAMES=( "add_to_app/prebuilt_module/flutter_module" "android_splash_screen" "animations" + "code_sharing/client" + "code_sharing/server" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" diff --git a/web/samples_index/lib/src/samples.yaml b/web/samples_index/lib/src/samples.yaml index 7697f087b..04ff95ab0 100644 --- a/web/samples_index/lib/src/samples.yaml +++ b/web/samples_index/lib/src/samples.yaml @@ -109,6 +109,24 @@ samples: links: [] type: sample + - name: Code Sharing + author: Flutter + screenshots: + - url: images/code_sharing.jpg + alt: Counter app communicating with server + source: https://github.com/flutter/samples/tree/main/code_sharing + description: > + Demonstrates simple way to share business logic between a Flutter app and + a server running Dart. + difficulty: intermediate + packages: + - freezed + - shelf + tags: ['intermediate', 'sample', 'code-sharing', 'dart', 'server'] + platforms: ['android', 'ios', 'linux', 'macos', 'web', 'windows'] + links: [] + type: sample + - name: Animations author: Flutter screenshots: diff --git a/web/samples_index/web/images/code_sharing.jpg b/web/samples_index/web/images/code_sharing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e1acb731cc9bd5857e48085e3cad393765798360 GIT binary patch literal 114647 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig b/code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index 4aab5a43b..000000000 --- a/code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// Application-level settings for the Runner target. -// -// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the -// future. If not, the values below would default to using the project name when this becomes a -// 'flutter create' template. - -// The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = client - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.example.client - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. diff --git a/code_sharing/client/macos/Runner/Configs/Debug.xcconfig b/code_sharing/client/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd946..000000000 --- a/code_sharing/client/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/code_sharing/client/macos/Runner/Configs/Release.xcconfig b/code_sharing/client/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f4956..000000000 --- a/code_sharing/client/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/code_sharing/client/macos/Runner/Configs/Warnings.xcconfig b/code_sharing/client/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf478..000000000 --- a/code_sharing/client/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings -GCC_WARN_UNDECLARED_SELECTOR = YES -CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES -CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES -CLANG_WARN_PRAGMA_PACK = YES -CLANG_WARN_STRICT_PROTOTYPES = YES -CLANG_WARN_COMMA = YES -GCC_WARN_STRICT_SELECTOR_MATCH = YES -CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES -CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES -GCC_WARN_SHADOW = YES -CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/code_sharing/client/macos/Runner/DebugProfile.entitlements b/code_sharing/client/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index 3ba6c1266..000000000 --- a/code_sharing/client/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,14 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.client - - com.apple.security.network.server - - - diff --git a/code_sharing/client/macos/Runner/Info.plist b/code_sharing/client/macos/Runner/Info.plist deleted file mode 100644 index 4789daa6a..000000000 --- a/code_sharing/client/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/code_sharing/client/macos/Runner/MainFlutterWindow.swift b/code_sharing/client/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 2722837ec..000000000 --- a/code_sharing/client/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController.init() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/code_sharing/client/macos/Runner/Release.entitlements b/code_sharing/client/macos/Runner/Release.entitlements deleted file mode 100644 index 852fa1a47..000000000 --- a/code_sharing/client/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/code_sharing/client/pubspec.yaml b/code_sharing/client/pubspec.yaml deleted file mode 100644 index f46c1210c..000000000 --- a/code_sharing/client/pubspec.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: client -description: A Flutter app which communicates with a Dart backend using shared business logic. -publish_to: "none" -version: 1.0.0+1 - -environment: - sdk: ">=2.18.1 <3.0.0" - -dependencies: - cupertino_icons: ^1.0.2 - flutter: - sdk: flutter - http: ^0.13.5 - shared: - path: ../server/shared - -dev_dependencies: - flutter_lints: ^2.0.0 - flutter_test: - sdk: flutter - -flutter: - uses-material-design: true diff --git a/code_sharing/client/test/widget_test.dart b/code_sharing/client/test/widget_test.dart deleted file mode 100644 index 87ae42dd6..000000000 --- a/code_sharing/client/test/widget_test.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:client/main.dart'; - -void main() { - group('App should', () { - testWidgets('build its widgets', (WidgetTester tester) async { - await tester.pumpWidget( - MyApp( - getCount: () => Future.value(1), - increment: (int x) => Future.value(x), - ), - ); - }); - }); -} diff --git a/code_sharing/client/web/favicon.png b/code_sharing/client/web/favicon.png deleted file mode 100644 index 8aaa46ac1ae21512746f852a42ba87e4165dfdd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM diff --git a/code_sharing/client/web/icons/Icon-192.png b/code_sharing/client/web/icons/Icon-192.png deleted file mode 100644 index b749bfef07473333cf1dd31e9eed89862a5d52aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5292 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 diff --git a/code_sharing/client/web/icons/Icon-512.png b/code_sharing/client/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48dff1169879ba46840804b412fe02fefd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8252 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 diff --git a/code_sharing/client/web/icons/Icon-maskable-192.png b/code_sharing/client/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d76e525556d5d89141648c724331630325d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! diff --git a/code_sharing/client/web/icons/Icon-maskable-512.png b/code_sharing/client/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c56691fbdb0b7efa65097c7cc1edac12a6d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20998 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 MPgg&ebxsLQ025IeI{*Lx diff --git a/code_sharing/client/web/index.html b/code_sharing/client/web/index.html deleted file mode 100644 index ddafccc76..000000000 --- a/code_sharing/client/web/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - client - - - - - - - - - - diff --git a/code_sharing/client/web/manifest.json b/code_sharing/client/web/manifest.json deleted file mode 100644 index 554b75eec..000000000 --- a/code_sharing/client/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "client", - "short_name": "client", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "A new Flutter project.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "icons/Icon-maskable-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "icons/Icon-maskable-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -} diff --git a/code_sharing/client/windows/.gitignore b/code_sharing/client/windows/.gitignore deleted file mode 100644 index d492d0d98..000000000 --- a/code_sharing/client/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ephemeral/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/code_sharing/client/windows/CMakeLists.txt b/code_sharing/client/windows/CMakeLists.txt deleted file mode 100644 index e6f6ba69d..000000000 --- a/code_sharing/client/windows/CMakeLists.txt +++ /dev/null @@ -1,101 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project(client LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "client") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Define build configuration option. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") - endif() -endif() -# Define settings for the Profile build mode. -set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_17) - target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner") - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/code_sharing/client/windows/flutter/CMakeLists.txt b/code_sharing/client/windows/flutter/CMakeLists.txt deleted file mode 100644 index 930d2071a..000000000 --- a/code_sharing/client/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,104 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.14) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/code_sharing/client/windows/flutter/generated_plugin_registrant.cc b/code_sharing/client/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 8b6d4680a..000000000 --- a/code_sharing/client/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void RegisterPlugins(flutter::PluginRegistry* registry) { -} diff --git a/code_sharing/client/windows/flutter/generated_plugin_registrant.h b/code_sharing/client/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85a..000000000 --- a/code_sharing/client/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/code_sharing/client/windows/flutter/generated_plugins.cmake b/code_sharing/client/windows/flutter/generated_plugins.cmake deleted file mode 100644 index b93c4c30c..000000000 --- a/code_sharing/client/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/code_sharing/client/windows/runner/CMakeLists.txt b/code_sharing/client/windows/runner/CMakeLists.txt deleted file mode 100644 index 394917c05..000000000 --- a/code_sharing/client/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(runner LANGUAGES CXX) - -# Define the application target. To change its name, change BINARY_NAME in the -# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer -# work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} WIN32 - "flutter_window.cpp" - "main.cpp" - "utils.cpp" - "win32_window.cpp" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - "Runner.rc" - "runner.exe.manifest" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add preprocessor definitions for the build version. -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") - -# Disable Windows macros that collide with C++ standard library functions. -target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") - -# Add dependency libraries and include directories. Add any application-specific -# dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) -target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") -target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/code_sharing/client/windows/runner/Runner.rc b/code_sharing/client/windows/runner/Runner.rc deleted file mode 100644 index 88f5545b8..000000000 --- a/code_sharing/client/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APP_ICON ICON "resources\\app_icon.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) -#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD -#else -#define VERSION_AS_NUMBER 1,0,0,0 -#endif - -#if defined(FLUTTER_VERSION) -#define VERSION_AS_STRING FLUTTER_VERSION -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "client" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "client" "\0" - VALUE "LegalCopyright", "Copyright (C) 2022 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "client.exe" "\0" - VALUE "ProductName", "client" "\0" - VALUE "ProductVersion", VERSION_AS_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/code_sharing/client/windows/runner/flutter_window.cpp b/code_sharing/client/windows/runner/flutter_window.cpp deleted file mode 100644 index b25e363ef..000000000 --- a/code_sharing/client/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - - flutter_controller_->engine()->SetNextFrameCallback([&]() { - this->Show(); - }); - - return true; -} - -void FlutterWindow::OnDestroy() { - if (flutter_controller_) { - flutter_controller_ = nullptr; - } - - Win32Window::OnDestroy(); -} - -LRESULT -FlutterWindow::MessageHandler(HWND hwnd, UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - // Give Flutter, including plugins, an opportunity to handle window messages. - if (flutter_controller_) { - std::optional result = - flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, - lparam); - if (result) { - return *result; - } - } - - switch (message) { - case WM_FONTCHANGE: - flutter_controller_->engine()->ReloadSystemFonts(); - break; - } - - return Win32Window::MessageHandler(hwnd, message, wparam, lparam); -} diff --git a/code_sharing/client/windows/runner/flutter_window.h b/code_sharing/client/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652f0..000000000 --- a/code_sharing/client/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RUNNER_FLUTTER_WINDOW_H_ -#define RUNNER_FLUTTER_WINDOW_H_ - -#include -#include - -#include - -#include "win32_window.h" - -// A window that does nothing but host a Flutter view. -class FlutterWindow : public Win32Window { - public: - // Creates a new FlutterWindow hosting a Flutter view running |project|. - explicit FlutterWindow(const flutter::DartProject& project); - virtual ~FlutterWindow(); - - protected: - // Win32Window: - bool OnCreate() override; - void OnDestroy() override; - LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, - LPARAM const lparam) noexcept override; - - private: - // The project to run. - flutter::DartProject project_; - - // The Flutter instance hosted by this window. - std::unique_ptr flutter_controller_; -}; - -#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/code_sharing/client/windows/runner/main.cpp b/code_sharing/client/windows/runner/main.cpp deleted file mode 100644 index 01431ddd3..000000000 --- a/code_sharing/client/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.Create(L"client", origin, size)) { - return EXIT_FAILURE; - } - window.SetQuitOnClose(true); - - ::MSG msg; - while (::GetMessage(&msg, nullptr, 0, 0)) { - ::TranslateMessage(&msg); - ::DispatchMessage(&msg); - } - - ::CoUninitialize(); - return EXIT_SUCCESS; -} diff --git a/code_sharing/client/windows/runner/resource.h b/code_sharing/client/windows/runner/resource.h deleted file mode 100644 index 66a65d1e4..000000000 --- a/code_sharing/client/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Runner.rc -// -#define IDI_APP_ICON 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/code_sharing/client/windows/runner/resources/app_icon.ico b/code_sharing/client/windows/runner/resources/app_icon.ico deleted file mode 100644 index c04e20caf6370ebb9253ad831cc31de4a9c965f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33772 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 diff --git a/code_sharing/client/windows/runner/runner.exe.manifest b/code_sharing/client/windows/runner/runner.exe.manifest deleted file mode 100644 index a42ea7687..000000000 --- a/code_sharing/client/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/code_sharing/client/windows/runner/utils.cpp b/code_sharing/client/windows/runner/utils.cpp deleted file mode 100644 index f5bf9fa0f..000000000 --- a/code_sharing/client/windows/runner/utils.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::string(); - } - int target_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr); - std::string utf8_string; - if (target_length == 0 || target_length > utf8_string.max_size()) { - return utf8_string; - } - utf8_string.resize(target_length); - int converted_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, utf8_string.data(), - target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/code_sharing/client/windows/runner/utils.h b/code_sharing/client/windows/runner/utils.h deleted file mode 100644 index 3879d5475..000000000 --- a/code_sharing/client/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RUNNER_UTILS_H_ -#define RUNNER_UTILS_H_ - -#include -#include - -// Creates a console for the process, and redirects stdout and stderr to -// it for both the runner and the Flutter library. -void CreateAndAttachConsole(); - -// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string -// encoded in UTF-8. Returns an empty std::string on failure. -std::string Utf8FromUtf16(const wchar_t* utf16_string); - -// Gets the command line arguments passed in as a std::vector, -// encoded in UTF-8. Returns an empty std::vector on failure. -std::vector GetCommandLineArguments(); - -#endif // RUNNER_UTILS_H_ diff --git a/code_sharing/client/windows/runner/win32_window.cpp b/code_sharing/client/windows/runner/win32_window.cpp deleted file mode 100644 index 041a38554..000000000 --- a/code_sharing/client/windows/runner/win32_window.cpp +++ /dev/null @@ -1,288 +0,0 @@ -#include "win32_window.h" - -#include -#include - -#include "resource.h" - -namespace { - -/// Window attribute that enables dark mode window decorations. -/// -/// Redefined in case the developer's machine has a Windows SDK older than -/// version 10.0.22000.0. -/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute -#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE -#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 -#endif - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -/// Registry key for app theme preference. -/// -/// A value of 0 indicates apps should use dark mode. A non-zero or missing -/// value indicates apps should use light mode. -constexpr const wchar_t kGetPreferredBrightnessRegKey[] = - L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; -constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - } - FreeLibrary(user32_module); -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registar instance. - static WindowClassRegistrar* GetInstance() { - if (!instance_) { - instance_ = new WindowClassRegistrar(); - } - return instance_; - } - - // Returns the name of the window class, registering the class if it hasn't - // previously been registered. - const wchar_t* GetWindowClass(); - - // Unregisters the window class. Should only be called if there are no - // instances of the window. - void UnregisterWindowClass(); - - private: - WindowClassRegistrar() = default; - - static WindowClassRegistrar* instance_; - - bool class_registered_ = false; -}; - -WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; - -const wchar_t* WindowClassRegistrar::GetWindowClass() { - if (!class_registered_) { - WNDCLASS window_class{}; - window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); - window_class.lpszClassName = kWindowClassName; - window_class.style = CS_HREDRAW | CS_VREDRAW; - window_class.cbClsExtra = 0; - window_class.cbWndExtra = 0; - window_class.hInstance = GetModuleHandle(nullptr); - window_class.hIcon = - LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); - window_class.hbrBackground = 0; - window_class.lpszMenuName = nullptr; - window_class.lpfnWndProc = Win32Window::WndProc; - RegisterClass(&window_class); - class_registered_ = true; - } - return kWindowClassName; -} - -void WindowClassRegistrar::UnregisterWindowClass() { - UnregisterClass(kWindowClassName, nullptr); - class_registered_ = false; -} - -Win32Window::Win32Window() { - ++g_active_window_count; -} - -Win32Window::~Win32Window() { - --g_active_window_count; - Destroy(); -} - -bool Win32Window::Create(const std::wstring& title, - const Point& origin, - const Size& size) { - Destroy(); - - const wchar_t* window_class = - WindowClassRegistrar::GetInstance()->GetWindowClass(); - - const POINT target_point = {static_cast(origin.x), - static_cast(origin.y)}; - HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); - UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); - double scale_factor = dpi / 96.0; - - HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW, - Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), - Scale(size.width, scale_factor), Scale(size.height, scale_factor), - nullptr, nullptr, GetModuleHandle(nullptr), this); - - if (!window) { - return false; - } - - UpdateTheme(window); - - return OnCreate(); -} - -bool Win32Window::Show() { - return ShowWindow(window_handle_, SW_SHOWNORMAL); -} - -// static -LRESULT CALLBACK Win32Window::WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - if (message == WM_NCCREATE) { - auto window_struct = reinterpret_cast(lparam); - SetWindowLongPtr(window, GWLP_USERDATA, - reinterpret_cast(window_struct->lpCreateParams)); - - auto that = static_cast(window_struct->lpCreateParams); - EnableFullDpiSupportIfAvailable(window); - that->window_handle_ = window; - } else if (Win32Window* that = GetThisFromHandle(window)) { - return that->MessageHandler(window, message, wparam, lparam); - } - - return DefWindowProc(window, message, wparam, lparam); -} - -LRESULT -Win32Window::MessageHandler(HWND hwnd, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - switch (message) { - case WM_DESTROY: - window_handle_ = nullptr; - Destroy(); - if (quit_on_close_) { - PostQuitMessage(0); - } - return 0; - - case WM_DPICHANGED: { - auto newRectSize = reinterpret_cast(lparam); - LONG newWidth = newRectSize->right - newRectSize->left; - LONG newHeight = newRectSize->bottom - newRectSize->top; - - SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, - newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; - } - case WM_SIZE: { - RECT rect = GetClientArea(); - if (child_content_ != nullptr) { - // Size and position the child window. - MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, - rect.bottom - rect.top, TRUE); - } - return 0; - } - - case WM_ACTIVATE: - if (child_content_ != nullptr) { - SetFocus(child_content_); - } - return 0; - - case WM_DWMCOLORIZATIONCOLORCHANGED: - UpdateTheme(hwnd); - return 0; - } - - return DefWindowProc(window_handle_, message, wparam, lparam); -} - -void Win32Window::Destroy() { - OnDestroy(); - - if (window_handle_) { - DestroyWindow(window_handle_); - window_handle_ = nullptr; - } - if (g_active_window_count == 0) { - WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); - } -} - -Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { - return reinterpret_cast( - GetWindowLongPtr(window, GWLP_USERDATA)); -} - -void Win32Window::SetChildContent(HWND content) { - child_content_ = content; - SetParent(content, window_handle_); - RECT frame = GetClientArea(); - - MoveWindow(content, frame.left, frame.top, frame.right - frame.left, - frame.bottom - frame.top, true); - - SetFocus(child_content_); -} - -RECT Win32Window::GetClientArea() { - RECT frame; - GetClientRect(window_handle_, &frame); - return frame; -} - -HWND Win32Window::GetHandle() { - return window_handle_; -} - -void Win32Window::SetQuitOnClose(bool quit_on_close) { - quit_on_close_ = quit_on_close; -} - -bool Win32Window::OnCreate() { - // No-op; provided for subclasses. - return true; -} - -void Win32Window::OnDestroy() { - // No-op; provided for subclasses. -} - -void Win32Window::UpdateTheme(HWND const window) { - DWORD light_mode; - DWORD light_mode_size = sizeof(light_mode); - LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, - kGetPreferredBrightnessRegValue, - RRF_RT_REG_DWORD, nullptr, &light_mode, - &light_mode_size); - - if (result == ERROR_SUCCESS) { - BOOL enable_dark_mode = light_mode == 0; - DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, - &enable_dark_mode, sizeof(enable_dark_mode)); - } -} diff --git a/code_sharing/client/windows/runner/win32_window.h b/code_sharing/client/windows/runner/win32_window.h deleted file mode 100644 index c86632d8a..000000000 --- a/code_sharing/client/windows/runner/win32_window.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates a win32 window with |title| that is positioned and sized using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size this function will scale the inputted width and height as - // as appropriate for the default monitor. The window is invisible until - // |Show| is called. Returns true if the window was created successfully. - bool Create(const std::wstring& title, const Point& origin, const Size& size); - - // Show the current window. Returns true if the window was successfully shown. - bool Show(); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responsponds to changes in DPI. All other messages are handled by - // MessageHandler. - static LRESULT CALLBACK WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Retrieves a class instance pointer for |window| - static Win32Window* GetThisFromHandle(HWND const window) noexcept; - - // Update the window frame's theme to match the system theme. - static void UpdateTheme(HWND const window); - - bool quit_on_close_ = false; - - // window handle for top level window. - HWND window_handle_ = nullptr; - - // window handle for hosted content. - HWND child_content_ = nullptr; -}; - -#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/code_sharing/docker-compose.yml b/code_sharing/docker-compose.yml deleted file mode 100644 index bf378f004..000000000 --- a/code_sharing/docker-compose.yml +++ /dev/null @@ -1,11 +0,0 @@ -version: "3.7" -services: - server: - build: - context: server - ports: - - 8080:8080 - environment: - SERVER_PORT: "8080" - SERVER_URL: "localhost" - SERVER_SCHEME: "http" diff --git a/code_sharing/server/.dockerignore b/code_sharing/server/.dockerignore deleted file mode 100644 index 21504f8fe..000000000 --- a/code_sharing/server/.dockerignore +++ /dev/null @@ -1,9 +0,0 @@ -.dockerignore -Dockerfile -build/ -.dart_tool/ -.git/ -.github/ -.gitignore -.idea/ -.packages diff --git a/code_sharing/server/.gitignore b/code_sharing/server/.gitignore deleted file mode 100644 index 3c8a15727..000000000 --- a/code_sharing/server/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -# Files and directories created by pub. -.dart_tool/ -.packages - -# Conventional directory for build output. -build/ diff --git a/code_sharing/server/CHANGELOG.md b/code_sharing/server/CHANGELOG.md deleted file mode 100644 index effe43c82..000000000 --- a/code_sharing/server/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.0 - -- Initial version. diff --git a/code_sharing/server/Dockerfile b/code_sharing/server/Dockerfile deleted file mode 100644 index f07aec295..000000000 --- a/code_sharing/server/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -# Use latest stable channel SDK. -FROM dart:stable AS build - -# Resolve app dependencies. -WORKDIR /app -COPY . . -RUN dart pub get - -# AOT compile app. -RUN dart compile exe bin/server.dart -o bin/server - -# Build minimal serving image from AOT-compiled `/server` -# and the pre-built AOT-runtime in the `/runtime/` directory of the base image. -FROM scratch -COPY --from=build /runtime/ / -COPY --from=build /app/bin/server /app/bin/ - -# Start server. -EXPOSE 8080 -CMD ["/app/bin/server"] diff --git a/code_sharing/server/README.md b/code_sharing/server/README.md deleted file mode 100644 index e695d9de5..000000000 --- a/code_sharing/server/README.md +++ /dev/null @@ -1,49 +0,0 @@ -A server app built using [Shelf](https://pub.dev/packages/shelf), -configured to enable running with [Docker](https://www.docker.com/). - -This sample code handles HTTP GET requests to `/` and `/echo/` - -# Running the sample - -## Running with the Dart SDK - -You can run the example with the [Dart SDK](https://dart.dev/get-dart) -like this: - -``` -$ dart run bin/server.dart -Server listening on port 8080 -``` - -And then from a second terminal: -``` -$ curl http://0.0.0.0:8080 -Hello, World! -$ curl http://0.0.0.0:8080/echo/I_love_Dart -I_love_Dart -``` - -## Running with Docker - -If you have [Docker Desktop](https://www.docker.com/get-started) installed, you -can build and run with the `docker` command: - -``` -$ docker build . -t myserver -$ docker run -it -p 8080:8080 myserver -Server listening on port 8080 -``` - -And then from a second terminal: -``` -$ curl http://0.0.0.0:8080 -Hello, World! -$ curl http://0.0.0.0:8080/echo/I_love_Dart -I_love_Dart -``` - -You should see the logging printed in the first terminal: -``` -2021-05-06T15:47:04.620417 0:00:00.000158 GET [200] / -2021-05-06T15:47:08.392928 0:00:00.001216 GET [200] /echo/I_love_Dart -``` diff --git a/code_sharing/server/analysis_options.yaml b/code_sharing/server/analysis_options.yaml deleted file mode 100644 index dee8927aa..000000000 --- a/code_sharing/server/analysis_options.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# This file configures the static analysis results for your project (errors, -# warnings, and lints). -# -# This enables the 'recommended' set of lints from `package:lints`. -# This set helps identify many issues that may lead to problems when running -# or consuming Dart code, and enforces writing Dart using a single, idiomatic -# style and format. -# -# If you want a smaller set of lints you can change this to specify -# 'package:lints/core.yaml'. These are just the most critical lints -# (the recommended set includes the core lints). -# The core lints are also what is used by pub.dev for scoring packages. - -include: package:lints/recommended.yaml - -# Uncomment the following section to specify additional rules. - -# linter: -# rules: -# - camel_case_types - -# analyzer: -# exclude: -# - path/to/excluded/files/** - -# For more information about the core and recommended set of lints, see -# https://dart.dev/go/core-lints - -# For additional information about configuring this file, see -# https://dart.dev/guides/language/analysis-options diff --git a/code_sharing/server/bin/server.dart b/code_sharing/server/bin/server.dart deleted file mode 100644 index f27ec5f23..000000000 --- a/code_sharing/server/bin/server.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; - -import 'package:shared/shared.dart'; -import 'package:shelf/shelf.dart'; -import 'package:shelf/shelf_io.dart'; -import 'package:shelf_router/shelf_router.dart'; - -int count = 0; - -// Configure routes. -final _router = Router() - ..post('/', _incrementHandler) - ..get('/', _getValueHandler); - -Future _incrementHandler(Request request) async { - final incr = Increment.fromJson(json.decode(await request.readAsString())); - count += incr.by; - return Response.ok(json.encode(Count(count).toJson())); -} - -Response _getValueHandler(Request request) => - Response.ok(json.encode(Count(count).toJson())); - -void main(List args) async { - // Use any available host or container IP (usually `0.0.0.0`). - final ip = InternetAddress.anyIPv4; - - // Configure a pipeline that logs requests. - final handler = Pipeline().addMiddleware(logRequests()).addHandler(_router); - - // For running in containers, we respect the PORT environment variable. - final port = int.parse(Platform.environment['PORT'] ?? '8080'); - final server = await serve(handler, ip, port); - print('Server listening on port ${server.port}'); -} diff --git a/code_sharing/server/pubspec.yaml b/code_sharing/server/pubspec.yaml deleted file mode 100644 index d89bbeedd..000000000 --- a/code_sharing/server/pubspec.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: server -description: A server app using the shelf package and Docker. -version: 1.0.0 -publish_to: "none" - -environment: - sdk: ">=2.18.1 <3.0.0" - -dependencies: - args: ^2.0.0 - shelf: ^1.1.0 - shelf_router: ^1.0.0 - shared: - path: ./shared - -dev_dependencies: - http: ^0.13.0 - lints: ^2.0.0 - test: ^1.15.0 diff --git a/code_sharing/server/shared/.gitignore b/code_sharing/server/shared/.gitignore deleted file mode 100644 index 65c34dc86..000000000 --- a/code_sharing/server/shared/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -# Files and directories created by pub. -.dart_tool/ -.packages - -# Conventional directory for build outputs. -build/ - -# Omit committing pubspec.lock for library packages; see -# https://dart.dev/guides/libraries/private-files#pubspeclock. -pubspec.lock diff --git a/code_sharing/server/shared/CHANGELOG.md b/code_sharing/server/shared/CHANGELOG.md deleted file mode 100644 index effe43c82..000000000 --- a/code_sharing/server/shared/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.0 - -- Initial version. diff --git a/code_sharing/server/shared/README.md b/code_sharing/server/shared/README.md deleted file mode 100644 index 8b55e735b..000000000 --- a/code_sharing/server/shared/README.md +++ /dev/null @@ -1,39 +0,0 @@ - - -TODO: Put a short description of the package here that helps potential users -know whether this package might be useful for them. - -## Features - -TODO: List what your package can do. Maybe include images, gifs, or videos. - -## Getting started - -TODO: List prerequisites and provide or point to information on how to -start using the package. - -## Usage - -TODO: Include short and useful examples for package users. Add longer examples -to `/example` folder. - -```dart -const like = 'sample'; -``` - -## Additional information - -TODO: Tell users more about the package: where to find more information, how to -contribute to the package, how to file issues, what response they can expect -from the package authors, and more. diff --git a/code_sharing/server/shared/analysis_options.yaml b/code_sharing/server/shared/analysis_options.yaml deleted file mode 100644 index bab7a0c0c..000000000 --- a/code_sharing/server/shared/analysis_options.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# This file configures the static analysis results for your project (errors, -# warnings, and lints). -# -# This enables the 'recommended' set of lints from `package:lints`. -# This set helps identify many issues that may lead to problems when running -# or consuming Dart code, and enforces writing Dart using a single, idiomatic -# style and format. -# -# If you want a smaller set of lints you can change this to specify -# 'package:lints/core.yaml'. These are just the most critical lints -# (the recommended set includes the core lints). -# The core lints are also what is used by pub.dev for scoring packages. - -include: package:lints/recommended.yaml - -# Uncomment the following section to specify additional rules. - -# linter: -# rules: -# - camel_case_types - -analyzer: - exclude: - - "**/*.g.dart" -# For more information about the core and recommended set of lints, see -# https://dart.dev/go/core-lints - -# For additional information about configuring this file, see -# https://dart.dev/guides/language/analysis-options diff --git a/code_sharing/server/shared/lib/shared.dart b/code_sharing/server/shared/lib/shared.dart deleted file mode 100644 index f8d3c81d0..000000000 --- a/code_sharing/server/shared/lib/shared.dart +++ /dev/null @@ -1,4 +0,0 @@ -/// Common data models required by our client and server. -library shared; - -export 'src/models.dart'; diff --git a/code_sharing/server/shared/lib/src/models.dart b/code_sharing/server/shared/lib/src/models.dart deleted file mode 100644 index 12f4a6617..000000000 --- a/code_sharing/server/shared/lib/src/models.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; - -part 'models.freezed.dart'; -part 'models.g.dart'; - -@Freezed() -class Increment with _$Increment { - const factory Increment({required int by}) = _Increment; - - factory Increment.fromJson(Map json) => - _$IncrementFromJson(json); -} - -@Freezed() -class Count with _$Count { - const factory Count(int value) = _Count; - - factory Count.fromJson(Map json) => _$CountFromJson(json); -} diff --git a/code_sharing/server/shared/lib/src/models.freezed.dart b/code_sharing/server/shared/lib/src/models.freezed.dart deleted file mode 100644 index fe2a2e8e3..000000000 --- a/code_sharing/server/shared/lib/src/models.freezed.dart +++ /dev/null @@ -1,271 +0,0 @@ -// coverage:ignore-file -// GENERATED CODE - DO NOT MODIFY BY HAND -// ignore_for_file: type=lint -// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target - -part of 'models.dart'; - -// ************************************************************************** -// FreezedGenerator -// ************************************************************************** - -T _$identity(T value) => value; - -final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); - -Increment _$IncrementFromJson(Map json) { - return _Increment.fromJson(json); -} - -/// @nodoc -mixin _$Increment { - int get by => throw _privateConstructorUsedError; - - Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) - $IncrementCopyWith get copyWith => - throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $IncrementCopyWith<$Res> { - factory $IncrementCopyWith(Increment value, $Res Function(Increment) then) = - _$IncrementCopyWithImpl<$Res>; - $Res call({int by}); -} - -/// @nodoc -class _$IncrementCopyWithImpl<$Res> implements $IncrementCopyWith<$Res> { - _$IncrementCopyWithImpl(this._value, this._then); - - final Increment _value; - // ignore: unused_field - final $Res Function(Increment) _then; - - @override - $Res call({ - Object? by = freezed, - }) { - return _then(_value.copyWith( - by: by == freezed - ? _value.by - : by // ignore: cast_nullable_to_non_nullable - as int, - )); - } -} - -/// @nodoc -abstract class _$$_IncrementCopyWith<$Res> implements $IncrementCopyWith<$Res> { - factory _$$_IncrementCopyWith( - _$_Increment value, $Res Function(_$_Increment) then) = - __$$_IncrementCopyWithImpl<$Res>; - @override - $Res call({int by}); -} - -/// @nodoc -class __$$_IncrementCopyWithImpl<$Res> extends _$IncrementCopyWithImpl<$Res> - implements _$$_IncrementCopyWith<$Res> { - __$$_IncrementCopyWithImpl( - _$_Increment _value, $Res Function(_$_Increment) _then) - : super(_value, (v) => _then(v as _$_Increment)); - - @override - _$_Increment get _value => super._value as _$_Increment; - - @override - $Res call({ - Object? by = freezed, - }) { - return _then(_$_Increment( - by: by == freezed - ? _value.by - : by // ignore: cast_nullable_to_non_nullable - as int, - )); - } -} - -/// @nodoc -@JsonSerializable() -class _$_Increment implements _Increment { - const _$_Increment({required this.by}); - - factory _$_Increment.fromJson(Map json) => - _$$_IncrementFromJson(json); - - @override - final int by; - - @override - String toString() { - return 'Increment(by: $by)'; - } - - @override - bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$_Increment && - const DeepCollectionEquality().equals(other.by, by)); - } - - @JsonKey(ignore: true) - @override - int get hashCode => - Object.hash(runtimeType, const DeepCollectionEquality().hash(by)); - - @JsonKey(ignore: true) - @override - _$$_IncrementCopyWith<_$_Increment> get copyWith => - __$$_IncrementCopyWithImpl<_$_Increment>(this, _$identity); - - @override - Map toJson() { - return _$$_IncrementToJson( - this, - ); - } -} - -abstract class _Increment implements Increment { - const factory _Increment({required final int by}) = _$_Increment; - - factory _Increment.fromJson(Map json) = - _$_Increment.fromJson; - - @override - int get by; - @override - @JsonKey(ignore: true) - _$$_IncrementCopyWith<_$_Increment> get copyWith => - throw _privateConstructorUsedError; -} - -Count _$CountFromJson(Map json) { - return _Count.fromJson(json); -} - -/// @nodoc -mixin _$Count { - int get value => throw _privateConstructorUsedError; - - Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) - $CountCopyWith get copyWith => throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $CountCopyWith<$Res> { - factory $CountCopyWith(Count value, $Res Function(Count) then) = - _$CountCopyWithImpl<$Res>; - $Res call({int value}); -} - -/// @nodoc -class _$CountCopyWithImpl<$Res> implements $CountCopyWith<$Res> { - _$CountCopyWithImpl(this._value, this._then); - - final Count _value; - // ignore: unused_field - final $Res Function(Count) _then; - - @override - $Res call({ - Object? value = freezed, - }) { - return _then(_value.copyWith( - value: value == freezed - ? _value.value - : value // ignore: cast_nullable_to_non_nullable - as int, - )); - } -} - -/// @nodoc -abstract class _$$_CountCopyWith<$Res> implements $CountCopyWith<$Res> { - factory _$$_CountCopyWith(_$_Count value, $Res Function(_$_Count) then) = - __$$_CountCopyWithImpl<$Res>; - @override - $Res call({int value}); -} - -/// @nodoc -class __$$_CountCopyWithImpl<$Res> extends _$CountCopyWithImpl<$Res> - implements _$$_CountCopyWith<$Res> { - __$$_CountCopyWithImpl(_$_Count _value, $Res Function(_$_Count) _then) - : super(_value, (v) => _then(v as _$_Count)); - - @override - _$_Count get _value => super._value as _$_Count; - - @override - $Res call({ - Object? value = freezed, - }) { - return _then(_$_Count( - value == freezed - ? _value.value - : value // ignore: cast_nullable_to_non_nullable - as int, - )); - } -} - -/// @nodoc -@JsonSerializable() -class _$_Count implements _Count { - const _$_Count(this.value); - - factory _$_Count.fromJson(Map json) => - _$$_CountFromJson(json); - - @override - final int value; - - @override - String toString() { - return 'Count(value: $value)'; - } - - @override - bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$_Count && - const DeepCollectionEquality().equals(other.value, value)); - } - - @JsonKey(ignore: true) - @override - int get hashCode => - Object.hash(runtimeType, const DeepCollectionEquality().hash(value)); - - @JsonKey(ignore: true) - @override - _$$_CountCopyWith<_$_Count> get copyWith => - __$$_CountCopyWithImpl<_$_Count>(this, _$identity); - - @override - Map toJson() { - return _$$_CountToJson( - this, - ); - } -} - -abstract class _Count implements Count { - const factory _Count(final int value) = _$_Count; - - factory _Count.fromJson(Map json) = _$_Count.fromJson; - - @override - int get value; - @override - @JsonKey(ignore: true) - _$$_CountCopyWith<_$_Count> get copyWith => - throw _privateConstructorUsedError; -} diff --git a/code_sharing/server/shared/lib/src/models.g.dart b/code_sharing/server/shared/lib/src/models.g.dart deleted file mode 100644 index ad3ee04e4..000000000 --- a/code_sharing/server/shared/lib/src/models.g.dart +++ /dev/null @@ -1,24 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'models.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -_$_Increment _$$_IncrementFromJson(Map json) => _$_Increment( - by: json['by'] as int, - ); - -Map _$$_IncrementToJson(_$_Increment instance) => - { - 'by': instance.by, - }; - -_$_Count _$$_CountFromJson(Map json) => _$_Count( - json['value'] as int, - ); - -Map _$$_CountToJson(_$_Count instance) => { - 'value': instance.value, - }; diff --git a/code_sharing/server/shared/pubspec.yaml b/code_sharing/server/shared/pubspec.yaml deleted file mode 100644 index 49a76916c..000000000 --- a/code_sharing/server/shared/pubspec.yaml +++ /dev/null @@ -1,17 +0,0 @@ -name: shared -description: Common data models required by our client and server -version: 1.0.0 - -environment: - sdk: ">=2.18.1 <3.0.0" - -dependencies: - freezed_annotation: ^2.1.0 - json_annotation: ^4.7.0 - -dev_dependencies: - build_runner: ^2.2.1 - freezed: ^2.1.1 - json_serializable: ^6.4.0 - lints: ^2.0.0 - test: ^1.16.0 diff --git a/code_sharing/server/shared/test/shared_test.dart b/code_sharing/server/shared/test/shared_test.dart deleted file mode 100644 index 990cbc667..000000000 --- a/code_sharing/server/shared/test/shared_test.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:shared/shared.dart'; -import 'package:test/test.dart'; - -void main() { - test('Increment serialization', () { - expect(Increment(by: 3).toJson(), {'by': 3}); - }); - test('Increment derialization', () { - expect(Increment.fromJson({'by': 5}), Increment(by: 5)); - }); - test('Count serialization', () { - expect(Count(3).toJson(), {'value': 3}); - }); - test('Count derialization', () { - expect(Count.fromJson({'value': 5}), Count(5)); - }); -} diff --git a/code_sharing/server/test/server_test.dart b/code_sharing/server/test/server_test.dart deleted file mode 100644 index 3d178004e..000000000 --- a/code_sharing/server/test/server_test.dart +++ /dev/null @@ -1,40 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; - -import 'package:http/http.dart'; -import 'package:test/test.dart'; - -// Manual test: -// $ dart bin/server.dart -// $ curl -X POST -d '{"by": 1}' -H "Content-Type: application/json" localhost:8080/ - -void main() { - final port = '8080'; - final host = 'http://0.0.0.0:$port'; - late Process p; - - setUp(() async { - p = await Process.start( - 'dart', - ['run', 'bin/server.dart'], - environment: {'PORT': port}, - ); - // Wait for server to start and print to stdout. - await p.stdout.first; - }); - - tearDown(() => p.kill()); - - test('Increment', () async { - final response = await post(Uri.parse('$host/'), body: '{"by": 1}'); - expect(response.statusCode, 200); - expect(response.body, '{"value":1}'); - }); - - test('Get', () async { - final response = await get(Uri.parse('$host/')); - expect(response.statusCode, 200); - final resp = json.decode(response.body) as Map; - expect(resp.containsKey('value'), true); - }); -} diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index 69fcfd6fe..173d237c2 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -15,9 +15,6 @@ declare -ar PROJECT_NAMES=( "add_to_app/prebuilt_module/flutter_module" "android_splash_screen" "animations" - "code_sharing/client" - "code_sharing/server" - "code_sharing/server/shared" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index a5b4759d9..6a07361e3 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -15,8 +15,6 @@ declare -ar PROJECT_NAMES=( "add_to_app/prebuilt_module/flutter_module" "android_splash_screen" "animations" - "code_sharing/client" - "code_sharing/server" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" @@ -25,7 +23,7 @@ declare -ar PROJECT_NAMES=( # "experimental/linting_tool" "experimental/material_3_demo" "flutter_maps_firestore" - # TODO(domesticmouse): 'errorColor' is deprecated and shouldn't be used. + # TODO(domesticmouse): 'errorColor' is deprecated and shouldn't be used. # "form_app" "game_template" "infinite_list" diff --git a/tool/flutter_ci_script_stable.sh b/tool/flutter_ci_script_stable.sh index 2c5f1bbb4..40ecf362f 100755 --- a/tool/flutter_ci_script_stable.sh +++ b/tool/flutter_ci_script_stable.sh @@ -15,8 +15,6 @@ declare -ar PROJECT_NAMES=( "add_to_app/prebuilt_module/flutter_module" "android_splash_screen" "animations" - "code_sharing/client" - "code_sharing/server" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" diff --git a/web/samples_index/lib/src/samples.yaml b/web/samples_index/lib/src/samples.yaml index 04ff95ab0..7697f087b 100644 --- a/web/samples_index/lib/src/samples.yaml +++ b/web/samples_index/lib/src/samples.yaml @@ -109,24 +109,6 @@ samples: links: [] type: sample - - name: Code Sharing - author: Flutter - screenshots: - - url: images/code_sharing.jpg - alt: Counter app communicating with server - source: https://github.com/flutter/samples/tree/main/code_sharing - description: > - Demonstrates simple way to share business logic between a Flutter app and - a server running Dart. - difficulty: intermediate - packages: - - freezed - - shelf - tags: ['intermediate', 'sample', 'code-sharing', 'dart', 'server'] - platforms: ['android', 'ios', 'linux', 'macos', 'web', 'windows'] - links: [] - type: sample - - name: Animations author: Flutter screenshots: diff --git a/web/samples_index/web/images/code_sharing.jpg b/web/samples_index/web/images/code_sharing.jpg deleted file mode 100644 index e1acb731cc9bd5857e48085e3cad393765798360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114647 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig b/code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 000000000..4aab5a43b --- /dev/null +++ b/code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = client + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.client + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. diff --git a/code_sharing/client/macos/Runner/Configs/Debug.xcconfig b/code_sharing/client/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 000000000..36b0fd946 --- /dev/null +++ b/code_sharing/client/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/code_sharing/client/macos/Runner/Configs/Release.xcconfig b/code_sharing/client/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 000000000..dff4f4956 --- /dev/null +++ b/code_sharing/client/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/code_sharing/client/macos/Runner/Configs/Warnings.xcconfig b/code_sharing/client/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 000000000..42bcbf478 --- /dev/null +++ b/code_sharing/client/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/code_sharing/client/macos/Runner/DebugProfile.entitlements b/code_sharing/client/macos/Runner/DebugProfile.entitlements new file mode 100644 index 000000000..3ba6c1266 --- /dev/null +++ b/code_sharing/client/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/code_sharing/client/macos/Runner/Info.plist b/code_sharing/client/macos/Runner/Info.plist new file mode 100644 index 000000000..4789daa6a --- /dev/null +++ b/code_sharing/client/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/code_sharing/client/macos/Runner/MainFlutterWindow.swift b/code_sharing/client/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 000000000..2722837ec --- /dev/null +++ b/code_sharing/client/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/code_sharing/client/macos/Runner/Release.entitlements b/code_sharing/client/macos/Runner/Release.entitlements new file mode 100644 index 000000000..852fa1a47 --- /dev/null +++ b/code_sharing/client/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/code_sharing/client/pubspec.yaml b/code_sharing/client/pubspec.yaml new file mode 100644 index 000000000..f46c1210c --- /dev/null +++ b/code_sharing/client/pubspec.yaml @@ -0,0 +1,23 @@ +name: client +description: A Flutter app which communicates with a Dart backend using shared business logic. +publish_to: "none" +version: 1.0.0+1 + +environment: + sdk: ">=2.18.1 <3.0.0" + +dependencies: + cupertino_icons: ^1.0.2 + flutter: + sdk: flutter + http: ^0.13.5 + shared: + path: ../server/shared + +dev_dependencies: + flutter_lints: ^2.0.0 + flutter_test: + sdk: flutter + +flutter: + uses-material-design: true diff --git a/code_sharing/client/test/widget_test.dart b/code_sharing/client/test/widget_test.dart new file mode 100644 index 000000000..87ae42dd6 --- /dev/null +++ b/code_sharing/client/test/widget_test.dart @@ -0,0 +1,15 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:client/main.dart'; + +void main() { + group('App should', () { + testWidgets('build its widgets', (WidgetTester tester) async { + await tester.pumpWidget( + MyApp( + getCount: () => Future.value(1), + increment: (int x) => Future.value(x), + ), + ); + }); + }); +} diff --git a/code_sharing/client/web/favicon.png b/code_sharing/client/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/icons/Icon-192.png b/code_sharing/client/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/icons/Icon-512.png b/code_sharing/client/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/icons/Icon-maskable-192.png b/code_sharing/client/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/icons/Icon-maskable-512.png b/code_sharing/client/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/code_sharing/client/web/index.html b/code_sharing/client/web/index.html new file mode 100644 index 000000000..ddafccc76 --- /dev/null +++ b/code_sharing/client/web/index.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + client + + + + + + + + + + diff --git a/code_sharing/client/web/manifest.json b/code_sharing/client/web/manifest.json new file mode 100644 index 000000000..554b75eec --- /dev/null +++ b/code_sharing/client/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "client", + "short_name": "client", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/code_sharing/client/windows/.gitignore b/code_sharing/client/windows/.gitignore new file mode 100644 index 000000000..d492d0d98 --- /dev/null +++ b/code_sharing/client/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/code_sharing/client/windows/CMakeLists.txt b/code_sharing/client/windows/CMakeLists.txt new file mode 100644 index 000000000..e6f6ba69d --- /dev/null +++ b/code_sharing/client/windows/CMakeLists.txt @@ -0,0 +1,101 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(client LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "client") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/code_sharing/client/windows/flutter/CMakeLists.txt b/code_sharing/client/windows/flutter/CMakeLists.txt new file mode 100644 index 000000000..930d2071a --- /dev/null +++ b/code_sharing/client/windows/flutter/CMakeLists.txt @@ -0,0 +1,104 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/code_sharing/client/windows/flutter/generated_plugin_registrant.cc b/code_sharing/client/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 000000000..8b6d4680a --- /dev/null +++ b/code_sharing/client/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void RegisterPlugins(flutter::PluginRegistry* registry) { +} diff --git a/code_sharing/client/windows/flutter/generated_plugin_registrant.h b/code_sharing/client/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 000000000..dc139d85a --- /dev/null +++ b/code_sharing/client/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/code_sharing/client/windows/flutter/generated_plugins.cmake b/code_sharing/client/windows/flutter/generated_plugins.cmake new file mode 100644 index 000000000..b93c4c30c --- /dev/null +++ b/code_sharing/client/windows/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/code_sharing/client/windows/runner/CMakeLists.txt b/code_sharing/client/windows/runner/CMakeLists.txt new file mode 100644 index 000000000..394917c05 --- /dev/null +++ b/code_sharing/client/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/code_sharing/client/windows/runner/Runner.rc b/code_sharing/client/windows/runner/Runner.rc new file mode 100644 index 000000000..88f5545b8 --- /dev/null +++ b/code_sharing/client/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example" "\0" + VALUE "FileDescription", "client" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "client" "\0" + VALUE "LegalCopyright", "Copyright (C) 2022 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "client.exe" "\0" + VALUE "ProductName", "client" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/code_sharing/client/windows/runner/flutter_window.cpp b/code_sharing/client/windows/runner/flutter_window.cpp new file mode 100644 index 000000000..b25e363ef --- /dev/null +++ b/code_sharing/client/windows/runner/flutter_window.cpp @@ -0,0 +1,66 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/code_sharing/client/windows/runner/flutter_window.h b/code_sharing/client/windows/runner/flutter_window.h new file mode 100644 index 000000000..6da0652f0 --- /dev/null +++ b/code_sharing/client/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/code_sharing/client/windows/runner/main.cpp b/code_sharing/client/windows/runner/main.cpp new file mode 100644 index 000000000..01431ddd3 --- /dev/null +++ b/code_sharing/client/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"client", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/code_sharing/client/windows/runner/resource.h b/code_sharing/client/windows/runner/resource.h new file mode 100644 index 000000000..66a65d1e4 --- /dev/null +++ b/code_sharing/client/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/code_sharing/client/windows/runner/resources/app_icon.ico b/code_sharing/client/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/windows/runner/runner.exe.manifest b/code_sharing/client/windows/runner/runner.exe.manifest new file mode 100644 index 000000000..a42ea7687 --- /dev/null +++ b/code_sharing/client/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/code_sharing/client/windows/runner/utils.cpp b/code_sharing/client/windows/runner/utils.cpp new file mode 100644 index 000000000..f5bf9fa0f --- /dev/null +++ b/code_sharing/client/windows/runner/utils.cpp @@ -0,0 +1,64 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, utf8_string.data(), + target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/code_sharing/client/windows/runner/utils.h b/code_sharing/client/windows/runner/utils.h new file mode 100644 index 000000000..3879d5475 --- /dev/null +++ b/code_sharing/client/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/code_sharing/client/windows/runner/win32_window.cpp b/code_sharing/client/windows/runner/win32_window.cpp new file mode 100644 index 000000000..041a38554 --- /dev/null +++ b/code_sharing/client/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/code_sharing/client/windows/runner/win32_window.h b/code_sharing/client/windows/runner/win32_window.h new file mode 100644 index 000000000..c86632d8a --- /dev/null +++ b/code_sharing/client/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responsponds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/code_sharing/docker-compose.yml b/code_sharing/docker-compose.yml new file mode 100644 index 000000000..bf378f004 --- /dev/null +++ b/code_sharing/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3.7" +services: + server: + build: + context: server + ports: + - 8080:8080 + environment: + SERVER_PORT: "8080" + SERVER_URL: "localhost" + SERVER_SCHEME: "http" diff --git a/code_sharing/server/.dockerignore b/code_sharing/server/.dockerignore new file mode 100644 index 000000000..21504f8fe --- /dev/null +++ b/code_sharing/server/.dockerignore @@ -0,0 +1,9 @@ +.dockerignore +Dockerfile +build/ +.dart_tool/ +.git/ +.github/ +.gitignore +.idea/ +.packages diff --git a/code_sharing/server/.gitignore b/code_sharing/server/.gitignore new file mode 100644 index 000000000..3c8a15727 --- /dev/null +++ b/code_sharing/server/.gitignore @@ -0,0 +1,6 @@ +# Files and directories created by pub. +.dart_tool/ +.packages + +# Conventional directory for build output. +build/ diff --git a/code_sharing/server/CHANGELOG.md b/code_sharing/server/CHANGELOG.md new file mode 100644 index 000000000..effe43c82 --- /dev/null +++ b/code_sharing/server/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version. diff --git a/code_sharing/server/Dockerfile b/code_sharing/server/Dockerfile new file mode 100644 index 000000000..f07aec295 --- /dev/null +++ b/code_sharing/server/Dockerfile @@ -0,0 +1,20 @@ +# Use latest stable channel SDK. +FROM dart:stable AS build + +# Resolve app dependencies. +WORKDIR /app +COPY . . +RUN dart pub get + +# AOT compile app. +RUN dart compile exe bin/server.dart -o bin/server + +# Build minimal serving image from AOT-compiled `/server` +# and the pre-built AOT-runtime in the `/runtime/` directory of the base image. +FROM scratch +COPY --from=build /runtime/ / +COPY --from=build /app/bin/server /app/bin/ + +# Start server. +EXPOSE 8080 +CMD ["/app/bin/server"] diff --git a/code_sharing/server/README.md b/code_sharing/server/README.md new file mode 100644 index 000000000..e695d9de5 --- /dev/null +++ b/code_sharing/server/README.md @@ -0,0 +1,49 @@ +A server app built using [Shelf](https://pub.dev/packages/shelf), +configured to enable running with [Docker](https://www.docker.com/). + +This sample code handles HTTP GET requests to `/` and `/echo/` + +# Running the sample + +## Running with the Dart SDK + +You can run the example with the [Dart SDK](https://dart.dev/get-dart) +like this: + +``` +$ dart run bin/server.dart +Server listening on port 8080 +``` + +And then from a second terminal: +``` +$ curl http://0.0.0.0:8080 +Hello, World! +$ curl http://0.0.0.0:8080/echo/I_love_Dart +I_love_Dart +``` + +## Running with Docker + +If you have [Docker Desktop](https://www.docker.com/get-started) installed, you +can build and run with the `docker` command: + +``` +$ docker build . -t myserver +$ docker run -it -p 8080:8080 myserver +Server listening on port 8080 +``` + +And then from a second terminal: +``` +$ curl http://0.0.0.0:8080 +Hello, World! +$ curl http://0.0.0.0:8080/echo/I_love_Dart +I_love_Dart +``` + +You should see the logging printed in the first terminal: +``` +2021-05-06T15:47:04.620417 0:00:00.000158 GET [200] / +2021-05-06T15:47:08.392928 0:00:00.001216 GET [200] /echo/I_love_Dart +``` diff --git a/code_sharing/server/analysis_options.yaml b/code_sharing/server/analysis_options.yaml new file mode 100644 index 000000000..dee8927aa --- /dev/null +++ b/code_sharing/server/analysis_options.yaml @@ -0,0 +1,30 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +# linter: +# rules: +# - camel_case_types + +# analyzer: +# exclude: +# - path/to/excluded/files/** + +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/code_sharing/server/bin/server.dart b/code_sharing/server/bin/server.dart new file mode 100644 index 000000000..f27ec5f23 --- /dev/null +++ b/code_sharing/server/bin/server.dart @@ -0,0 +1,36 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:shared/shared.dart'; +import 'package:shelf/shelf.dart'; +import 'package:shelf/shelf_io.dart'; +import 'package:shelf_router/shelf_router.dart'; + +int count = 0; + +// Configure routes. +final _router = Router() + ..post('/', _incrementHandler) + ..get('/', _getValueHandler); + +Future _incrementHandler(Request request) async { + final incr = Increment.fromJson(json.decode(await request.readAsString())); + count += incr.by; + return Response.ok(json.encode(Count(count).toJson())); +} + +Response _getValueHandler(Request request) => + Response.ok(json.encode(Count(count).toJson())); + +void main(List args) async { + // Use any available host or container IP (usually `0.0.0.0`). + final ip = InternetAddress.anyIPv4; + + // Configure a pipeline that logs requests. + final handler = Pipeline().addMiddleware(logRequests()).addHandler(_router); + + // For running in containers, we respect the PORT environment variable. + final port = int.parse(Platform.environment['PORT'] ?? '8080'); + final server = await serve(handler, ip, port); + print('Server listening on port ${server.port}'); +} diff --git a/code_sharing/server/pubspec.yaml b/code_sharing/server/pubspec.yaml new file mode 100644 index 000000000..d89bbeedd --- /dev/null +++ b/code_sharing/server/pubspec.yaml @@ -0,0 +1,19 @@ +name: server +description: A server app using the shelf package and Docker. +version: 1.0.0 +publish_to: "none" + +environment: + sdk: ">=2.18.1 <3.0.0" + +dependencies: + args: ^2.0.0 + shelf: ^1.1.0 + shelf_router: ^1.0.0 + shared: + path: ./shared + +dev_dependencies: + http: ^0.13.0 + lints: ^2.0.0 + test: ^1.15.0 diff --git a/code_sharing/server/shared/.gitignore b/code_sharing/server/shared/.gitignore new file mode 100644 index 000000000..65c34dc86 --- /dev/null +++ b/code_sharing/server/shared/.gitignore @@ -0,0 +1,10 @@ +# Files and directories created by pub. +.dart_tool/ +.packages + +# Conventional directory for build outputs. +build/ + +# Omit committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock diff --git a/code_sharing/server/shared/CHANGELOG.md b/code_sharing/server/shared/CHANGELOG.md new file mode 100644 index 000000000..effe43c82 --- /dev/null +++ b/code_sharing/server/shared/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version. diff --git a/code_sharing/server/shared/README.md b/code_sharing/server/shared/README.md new file mode 100644 index 000000000..8b55e735b --- /dev/null +++ b/code_sharing/server/shared/README.md @@ -0,0 +1,39 @@ + + +TODO: Put a short description of the package here that helps potential users +know whether this package might be useful for them. + +## Features + +TODO: List what your package can do. Maybe include images, gifs, or videos. + +## Getting started + +TODO: List prerequisites and provide or point to information on how to +start using the package. + +## Usage + +TODO: Include short and useful examples for package users. Add longer examples +to `/example` folder. + +```dart +const like = 'sample'; +``` + +## Additional information + +TODO: Tell users more about the package: where to find more information, how to +contribute to the package, how to file issues, what response they can expect +from the package authors, and more. diff --git a/code_sharing/server/shared/analysis_options.yaml b/code_sharing/server/shared/analysis_options.yaml new file mode 100644 index 000000000..bab7a0c0c --- /dev/null +++ b/code_sharing/server/shared/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +# linter: +# rules: +# - camel_case_types + +analyzer: + exclude: + - "**/*.g.dart" +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/code_sharing/server/shared/lib/shared.dart b/code_sharing/server/shared/lib/shared.dart new file mode 100644 index 000000000..f8d3c81d0 --- /dev/null +++ b/code_sharing/server/shared/lib/shared.dart @@ -0,0 +1,4 @@ +/// Common data models required by our client and server. +library shared; + +export 'src/models.dart'; diff --git a/code_sharing/server/shared/lib/src/models.dart b/code_sharing/server/shared/lib/src/models.dart new file mode 100644 index 000000000..12f4a6617 --- /dev/null +++ b/code_sharing/server/shared/lib/src/models.dart @@ -0,0 +1,19 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'models.freezed.dart'; +part 'models.g.dart'; + +@Freezed() +class Increment with _$Increment { + const factory Increment({required int by}) = _Increment; + + factory Increment.fromJson(Map json) => + _$IncrementFromJson(json); +} + +@Freezed() +class Count with _$Count { + const factory Count(int value) = _Count; + + factory Count.fromJson(Map json) => _$CountFromJson(json); +} diff --git a/code_sharing/server/shared/lib/src/models.freezed.dart b/code_sharing/server/shared/lib/src/models.freezed.dart new file mode 100644 index 000000000..fe2a2e8e3 --- /dev/null +++ b/code_sharing/server/shared/lib/src/models.freezed.dart @@ -0,0 +1,271 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target + +part of 'models.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); + +Increment _$IncrementFromJson(Map json) { + return _Increment.fromJson(json); +} + +/// @nodoc +mixin _$Increment { + int get by => throw _privateConstructorUsedError; + + Map toJson() => throw _privateConstructorUsedError; + @JsonKey(ignore: true) + $IncrementCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $IncrementCopyWith<$Res> { + factory $IncrementCopyWith(Increment value, $Res Function(Increment) then) = + _$IncrementCopyWithImpl<$Res>; + $Res call({int by}); +} + +/// @nodoc +class _$IncrementCopyWithImpl<$Res> implements $IncrementCopyWith<$Res> { + _$IncrementCopyWithImpl(this._value, this._then); + + final Increment _value; + // ignore: unused_field + final $Res Function(Increment) _then; + + @override + $Res call({ + Object? by = freezed, + }) { + return _then(_value.copyWith( + by: by == freezed + ? _value.by + : by // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +abstract class _$$_IncrementCopyWith<$Res> implements $IncrementCopyWith<$Res> { + factory _$$_IncrementCopyWith( + _$_Increment value, $Res Function(_$_Increment) then) = + __$$_IncrementCopyWithImpl<$Res>; + @override + $Res call({int by}); +} + +/// @nodoc +class __$$_IncrementCopyWithImpl<$Res> extends _$IncrementCopyWithImpl<$Res> + implements _$$_IncrementCopyWith<$Res> { + __$$_IncrementCopyWithImpl( + _$_Increment _value, $Res Function(_$_Increment) _then) + : super(_value, (v) => _then(v as _$_Increment)); + + @override + _$_Increment get _value => super._value as _$_Increment; + + @override + $Res call({ + Object? by = freezed, + }) { + return _then(_$_Increment( + by: by == freezed + ? _value.by + : by // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$_Increment implements _Increment { + const _$_Increment({required this.by}); + + factory _$_Increment.fromJson(Map json) => + _$$_IncrementFromJson(json); + + @override + final int by; + + @override + String toString() { + return 'Increment(by: $by)'; + } + + @override + bool operator ==(dynamic other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$_Increment && + const DeepCollectionEquality().equals(other.by, by)); + } + + @JsonKey(ignore: true) + @override + int get hashCode => + Object.hash(runtimeType, const DeepCollectionEquality().hash(by)); + + @JsonKey(ignore: true) + @override + _$$_IncrementCopyWith<_$_Increment> get copyWith => + __$$_IncrementCopyWithImpl<_$_Increment>(this, _$identity); + + @override + Map toJson() { + return _$$_IncrementToJson( + this, + ); + } +} + +abstract class _Increment implements Increment { + const factory _Increment({required final int by}) = _$_Increment; + + factory _Increment.fromJson(Map json) = + _$_Increment.fromJson; + + @override + int get by; + @override + @JsonKey(ignore: true) + _$$_IncrementCopyWith<_$_Increment> get copyWith => + throw _privateConstructorUsedError; +} + +Count _$CountFromJson(Map json) { + return _Count.fromJson(json); +} + +/// @nodoc +mixin _$Count { + int get value => throw _privateConstructorUsedError; + + Map toJson() => throw _privateConstructorUsedError; + @JsonKey(ignore: true) + $CountCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CountCopyWith<$Res> { + factory $CountCopyWith(Count value, $Res Function(Count) then) = + _$CountCopyWithImpl<$Res>; + $Res call({int value}); +} + +/// @nodoc +class _$CountCopyWithImpl<$Res> implements $CountCopyWith<$Res> { + _$CountCopyWithImpl(this._value, this._then); + + final Count _value; + // ignore: unused_field + final $Res Function(Count) _then; + + @override + $Res call({ + Object? value = freezed, + }) { + return _then(_value.copyWith( + value: value == freezed + ? _value.value + : value // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +abstract class _$$_CountCopyWith<$Res> implements $CountCopyWith<$Res> { + factory _$$_CountCopyWith(_$_Count value, $Res Function(_$_Count) then) = + __$$_CountCopyWithImpl<$Res>; + @override + $Res call({int value}); +} + +/// @nodoc +class __$$_CountCopyWithImpl<$Res> extends _$CountCopyWithImpl<$Res> + implements _$$_CountCopyWith<$Res> { + __$$_CountCopyWithImpl(_$_Count _value, $Res Function(_$_Count) _then) + : super(_value, (v) => _then(v as _$_Count)); + + @override + _$_Count get _value => super._value as _$_Count; + + @override + $Res call({ + Object? value = freezed, + }) { + return _then(_$_Count( + value == freezed + ? _value.value + : value // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$_Count implements _Count { + const _$_Count(this.value); + + factory _$_Count.fromJson(Map json) => + _$$_CountFromJson(json); + + @override + final int value; + + @override + String toString() { + return 'Count(value: $value)'; + } + + @override + bool operator ==(dynamic other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$_Count && + const DeepCollectionEquality().equals(other.value, value)); + } + + @JsonKey(ignore: true) + @override + int get hashCode => + Object.hash(runtimeType, const DeepCollectionEquality().hash(value)); + + @JsonKey(ignore: true) + @override + _$$_CountCopyWith<_$_Count> get copyWith => + __$$_CountCopyWithImpl<_$_Count>(this, _$identity); + + @override + Map toJson() { + return _$$_CountToJson( + this, + ); + } +} + +abstract class _Count implements Count { + const factory _Count(final int value) = _$_Count; + + factory _Count.fromJson(Map json) = _$_Count.fromJson; + + @override + int get value; + @override + @JsonKey(ignore: true) + _$$_CountCopyWith<_$_Count> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/code_sharing/server/shared/lib/src/models.g.dart b/code_sharing/server/shared/lib/src/models.g.dart new file mode 100644 index 000000000..ad3ee04e4 --- /dev/null +++ b/code_sharing/server/shared/lib/src/models.g.dart @@ -0,0 +1,24 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'models.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$_Increment _$$_IncrementFromJson(Map json) => _$_Increment( + by: json['by'] as int, + ); + +Map _$$_IncrementToJson(_$_Increment instance) => + { + 'by': instance.by, + }; + +_$_Count _$$_CountFromJson(Map json) => _$_Count( + json['value'] as int, + ); + +Map _$$_CountToJson(_$_Count instance) => { + 'value': instance.value, + }; diff --git a/code_sharing/server/shared/pubspec.yaml b/code_sharing/server/shared/pubspec.yaml new file mode 100644 index 000000000..49a76916c --- /dev/null +++ b/code_sharing/server/shared/pubspec.yaml @@ -0,0 +1,17 @@ +name: shared +description: Common data models required by our client and server +version: 1.0.0 + +environment: + sdk: ">=2.18.1 <3.0.0" + +dependencies: + freezed_annotation: ^2.1.0 + json_annotation: ^4.7.0 + +dev_dependencies: + build_runner: ^2.2.1 + freezed: ^2.1.1 + json_serializable: ^6.4.0 + lints: ^2.0.0 + test: ^1.16.0 diff --git a/code_sharing/server/shared/test/shared_test.dart b/code_sharing/server/shared/test/shared_test.dart new file mode 100644 index 000000000..990cbc667 --- /dev/null +++ b/code_sharing/server/shared/test/shared_test.dart @@ -0,0 +1,17 @@ +import 'package:shared/shared.dart'; +import 'package:test/test.dart'; + +void main() { + test('Increment serialization', () { + expect(Increment(by: 3).toJson(), {'by': 3}); + }); + test('Increment derialization', () { + expect(Increment.fromJson({'by': 5}), Increment(by: 5)); + }); + test('Count serialization', () { + expect(Count(3).toJson(), {'value': 3}); + }); + test('Count derialization', () { + expect(Count.fromJson({'value': 5}), Count(5)); + }); +} diff --git a/code_sharing/server/test/server_test.dart b/code_sharing/server/test/server_test.dart new file mode 100644 index 000000000..31f3d95ca --- /dev/null +++ b/code_sharing/server/test/server_test.dart @@ -0,0 +1,50 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:http/http.dart'; +import 'package:test/test.dart'; + +// Manual test: +// $ dart bin/server.dart +// $ curl -X POST -d '{"by": 1}' -H "Content-Type: application/json" localhost:8080/ + +void main() { + final port = '8080'; + final host = 'http://0.0.0.0:$port'; + late Process p; + + group( + 'Integration test should', + () { + setUp(() async { + p = await Process.start( + 'dart', + ['run', 'bin/server.dart'], + environment: {'PORT': port}, + ); + // Wait for server to start and print to stdout. + await p.stdout.first; + }); + + tearDown(() => p.kill()); + + test('Increment', () async { + final response = await post(Uri.parse('$host/'), body: '{"by": 1}'); + expect(response.statusCode, 200); + expect(response.body, '{"value":1}'); + }); + + test('Get', () async { + final response = await get(Uri.parse('$host/')); + expect(response.statusCode, 200); + final resp = json.decode(response.body) as Map; + expect(resp.containsKey('value'), true); + }); + }, + onPlatform: { + 'windows': [ + Skip('Failing on Windows CI'), + ] + }, + ); +} diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index ddf916a97..5457b0ecc 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -15,6 +15,9 @@ declare -ar PROJECT_NAMES=( "add_to_app/prebuilt_module/flutter_module" "android_splash_screen" "animations" + "code_sharing/client" + "code_sharing/server" + "code_sharing/server/shared" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index 27668ea28..295562947 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -15,6 +15,8 @@ declare -ar PROJECT_NAMES=( "add_to_app/prebuilt_module/flutter_module" "android_splash_screen" "animations" + "code_sharing/client" + "code_sharing/server" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" @@ -23,7 +25,7 @@ declare -ar PROJECT_NAMES=( # "experimental/linting_tool" "experimental/material_3_demo" "flutter_maps_firestore" - # TODO(domesticmouse): 'errorColor' is deprecated and shouldn't be used. + # TODO(domesticmouse): 'errorColor' is deprecated and shouldn't be used. # "form_app" "game_template" "infinite_list" diff --git a/tool/flutter_ci_script_stable.sh b/tool/flutter_ci_script_stable.sh index 9c5824c67..b8db87db8 100755 --- a/tool/flutter_ci_script_stable.sh +++ b/tool/flutter_ci_script_stable.sh @@ -15,6 +15,8 @@ declare -ar PROJECT_NAMES=( "add_to_app/prebuilt_module/flutter_module" "android_splash_screen" "animations" + "code_sharing/client" + "code_sharing/server" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" diff --git a/web/samples_index/lib/src/samples.yaml b/web/samples_index/lib/src/samples.yaml index 7d74f8064..c702b0b91 100644 --- a/web/samples_index/lib/src/samples.yaml +++ b/web/samples_index/lib/src/samples.yaml @@ -109,6 +109,24 @@ samples: links: [] type: sample + - name: Code Sharing + author: Flutter + screenshots: + - url: images/code_sharing.jpg + alt: Counter app communicating with server + source: https://github.com/flutter/samples/tree/main/code_sharing + description: > + Demonstrates simple way to share business logic between a Flutter app and + a server running Dart. + difficulty: intermediate + packages: + - freezed + - shelf + tags: ['intermediate', 'sample', 'code-sharing', 'dart', 'server'] + platforms: ['android', 'ios', 'linux', 'macos', 'web', 'windows'] + links: [] + type: sample + - name: Animations author: Flutter screenshots: diff --git a/web/samples_index/web/images/code_sharing.jpg b/web/samples_index/web/images/code_sharing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e1acb731cc9bd5857e48085e3cad393765798360 GIT binary patch literal 114647 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 mMEHWFK`GHbO|1y# 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 Date: Thu, 27 Oct 2022 04:19:36 -0500 Subject: [PATCH 038/134] Bump github/codeql-action from 2.1.28 to 2.1.29 (#1492) --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index b57f82301..883889607 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@cc7986c02bac29104a72998e67239bb5ee2ee110 + uses: github/codeql-action/upload-sarif@ec3cf9c605b848da5f1e41e8452719eb1ccfb9a6 with: sarif_file: results.sarif From 19081c72ff82e7241c2de4823096a76b20002610 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Nov 2022 06:43:33 +0400 Subject: [PATCH 039/134] Bump github/codeql-action from 2.1.29 to 2.1.30 (#1493) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.29 to 2.1.30. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/ec3cf9c605b848da5f1e41e8452719eb1ccfb9a6...18fe527fa8b29f134bb91f32f1a5dc5abb15ed7f) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 883889607..d94ca5aeb 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ec3cf9c605b848da5f1e41e8452719eb1ccfb9a6 + uses: github/codeql-action/upload-sarif@18fe527fa8b29f134bb91f32f1a5dc5abb15ed7f with: sarif_file: results.sarif From 886b91b005062f43a8014aee509976e331f84b44 Mon Sep 17 00:00:00 2001 From: Filip Hracek Date: Fri, 4 Nov 2022 03:45:05 +0100 Subject: [PATCH 040/134] Upgrade Firebase plugins to next major version (#1495) --- game_template/README.md | 23 +++++++++++++++++++++++ game_template/pubspec.yaml | 4 ++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/game_template/README.md b/game_template/README.md index 7fa92a079..ad89acec9 100644 --- a/game_template/README.md +++ b/game_template/README.md @@ -536,3 +536,26 @@ flutter pub run flutter_launcher_icons:main You can [configure](https://github.com/fluttercommunity/flutter_launcher_icons#book-guide) the look of the icon in the `flutter_icons:` section of `pubspec.yaml`. + + +# Troubleshooting + +## CocoaPods + +When upgrading to higher versions of Flutter or plugins, you might encounter an error when +building the iOS or macOS app. A good first thing to try is to delete the `ios/Podfile.lock` +file (or `macos/Podfile.lock`, respectively), then trying to build again. (You can achieve +a more thorough cleanup by running `flutter clean` instead.) + +## Warnings in console + +When running the game for the first time, you might see warnings like the following: + +> Note: Some input files use or override a deprecated API. + +or + +> warning: 'viewState' was deprecated in macOS 11.0: Use -initWithState: instead + +These warning come from the various plugins that are used by the template. They are not harmful +and can be ignored. The warnings are meant for the plugin authors, not for you, the game developer. diff --git a/game_template/pubspec.yaml b/game_template/pubspec.yaml index 61966c7da..8227b2138 100644 --- a/game_template/pubspec.yaml +++ b/game_template/pubspec.yaml @@ -23,8 +23,8 @@ dependencies: # If you don't need one of the following dependencies, # delete the relevant line below, and get rid of any Dart code # that references the dependency. - firebase_core: ^1.15.0 # Needed for Crashlytics below - firebase_crashlytics: ^2.8.1 # Error reporting + firebase_core: ^2.1.1 # Needed for Crashlytics below + firebase_crashlytics: ^3.0.3 # Error reporting games_services: ^3.0.0 # Achievements and leaderboards google_mobile_ads: ^2.0.1 # Ads in_app_purchase: ^3.0.1 # In-app purchases From 847a960e02780258a7e3308cd05f18baad753555 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Fri, 4 Nov 2022 22:03:43 -0500 Subject: [PATCH 041/134] Replace tuneup in samples_index (#1497) --- web/samples_index/pubspec.yaml | 1 - web/samples_index/tool/grind.dart | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/web/samples_index/pubspec.yaml b/web/samples_index/pubspec.yaml index 80e5dffc9..72bc584f8 100644 --- a/web/samples_index/pubspec.yaml +++ b/web/samples_index/pubspec.yaml @@ -23,7 +23,6 @@ dev_dependencies: build: ^2.0.3 build_runner: ^2.0.6 build_web_compilers: ^3.0.0 - tuneup: ^0.3.8 image: ^3.0.2 # waiting for the next material-components-web release. # Once released, it will need to be rolled into package:mdc_web. diff --git a/web/samples_index/tool/grind.dart b/web/samples_index/tool/grind.dart index 96b8f7992..229ad2402 100644 --- a/web/samples_index/tool/grind.dart +++ b/web/samples_index/tool/grind.dart @@ -20,7 +20,7 @@ Future testCli() async => @Task() void analyze() { - PubApp.local('tuneup').run(['check']); + run('dart', arguments: const ['analyze', '--fatal-infos', '.']); } @Task('deploy') From 070ce7303aeba4583fb123c6aafedd42fde8ed9f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Nov 2022 01:51:52 -0600 Subject: [PATCH 042/134] Bump github/codeql-action from 2.1.30 to 2.1.31 (#1498) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.30 to 2.1.31. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/18fe527fa8b29f134bb91f32f1a5dc5abb15ed7f...c3b6fce4ee2ca25bc1066aa3bf73962fda0e8898) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index d94ca5aeb..1a42c05ab 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@18fe527fa8b29f134bb91f32f1a5dc5abb15ed7f + uses: github/codeql-action/upload-sarif@c3b6fce4ee2ca25bc1066aa3bf73962fda0e8898 with: sarif_file: results.sarif From 41571eae07b31c080c9ea0bc5d77ddea18bb619b Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Tue, 8 Nov 2022 22:42:25 -0800 Subject: [PATCH 043/134] Custom context menu example (#1463) * flutter create * Copied in from 'contextual-menu-examples' repo * Works again with the latest updates to the branch * Clean up anywhere example * Clean up other examples * Add to CI * Updated with release version of context menus, and added platform switcher * Generated files * Home icon on your original platform * Remove web_dashboard from ci, not sure why that change was there... * Add context_menu to beta channel, but commented out, for the future * +x permissions on the master script, which I may have accidentally changed before? * Actual bash comment * dart format * Natural default platform' * A working test, for the email page * Import order fix * Test some pages * More tests * dart format --- experimental/context_menus/.gitignore | 44 ++ experimental/context_menus/.metadata | 45 ++ experimental/context_menus/README.md | 16 + .../context_menus/analysis_options.yaml | 29 + experimental/context_menus/android/.gitignore | 13 + .../context_menus/android/app/build.gradle | 71 ++ .../android/app/src/debug/AndroidManifest.xml | 8 + .../android/app/src/main/AndroidManifest.xml | 34 + .../com/example/context_menus/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + .../app/src/main/res/values/styles.xml | 18 + .../app/src/profile/AndroidManifest.xml | 8 + .../context_menus/android/build.gradle | 31 + .../context_menus/android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../context_menus/android/settings.gradle | 11 + experimental/context_menus/ios/.gitignore | 34 + .../ios/Flutter/AppFrameworkInfo.plist | 26 + .../context_menus/ios/Flutter/Debug.xcconfig | 2 + .../ios/Flutter/Release.xcconfig | 2 + experimental/context_menus/ios/Podfile | 41 ++ .../ios/Runner.xcodeproj/project.pbxproj | 486 ++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 ++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + .../ios/Runner/Base.lproj/Main.storyboard | 26 + .../context_menus/ios/Runner/Info.plist | 51 ++ .../ios/Runner/Runner-Bridging-Header.h | 1 + .../context_menus/lib/anywhere_page.dart | 101 +++ experimental/context_menus/lib/constants.dart | 2 + .../lib/context_menu_region.dart | 97 +++ .../lib/custom_buttons_page.dart | 86 +++ .../lib/default_values_page.dart | 111 +++ .../context_menus/lib/email_button_page.dart | 95 +++ .../context_menus/lib/field_types_page.dart | 135 ++++ experimental/context_menus/lib/full_page.dart | 161 +++++ .../lib/global_selection_page.dart | 81 +++ .../context_menus/lib/image_page.dart | 83 +++ .../context_menus/lib/is_valid_email.dart | 10 + experimental/context_menus/lib/main.dart | 180 +++++ .../lib/modified_action_page.dart | 98 +++ .../context_menus/lib/platform_selector.dart | 61 ++ .../lib/reordered_buttons_page.dart | 97 +++ experimental/context_menus/linux/.gitignore | 1 + .../context_menus/linux/CMakeLists.txt | 138 ++++ .../linux/flutter/CMakeLists.txt | 88 +++ .../flutter/generated_plugin_registrant.cc | 15 + .../flutter/generated_plugin_registrant.h | 15 + .../linux/flutter/generated_plugins.cmake | 24 + experimental/context_menus/linux/main.cc | 6 + .../context_menus/linux/my_application.cc | 104 +++ .../context_menus/linux/my_application.h | 18 + experimental/context_menus/macos/.gitignore | 7 + .../macos/Flutter/Flutter-Debug.xcconfig | 2 + .../macos/Flutter/Flutter-Release.xcconfig | 2 + .../Flutter/GeneratedPluginRegistrant.swift | 12 + experimental/context_menus/macos/Podfile | 40 ++ .../macos/Runner.xcodeproj/project.pbxproj | 633 ++++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 ++++++++++ .../macos/Runner/Configs/AppInfo.xcconfig | 14 + .../macos/Runner/Configs/Debug.xcconfig | 2 + .../macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 12 + .../context_menus/macos/Runner/Info.plist | 32 + .../macos/Runner/MainFlutterWindow.swift | 15 + .../macos/Runner/Release.entitlements | 8 + experimental/context_menus/pubspec.yaml | 92 +++ .../test/anywhere_page_test.dart | 36 + .../test/custom_buttons_page_test.dart | 59 ++ .../test/default_values_page_test.dart | 104 +++ .../test/email_button_page_test.dart | 118 ++++ .../test/field_types_page_test.dart | 192 ++++++ .../test/global_selection_page_test.dart | 48 ++ .../context_menus/test/image_page_test.dart | 48 ++ experimental/context_menus/test/utils.dart | 46 ++ experimental/context_menus/web/favicon.png | Bin 0 -> 917 bytes .../context_menus/web/icons/Icon-192.png | Bin 0 -> 5292 bytes .../context_menus/web/icons/Icon-512.png | Bin 0 -> 8252 bytes .../web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes .../web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes experimental/context_menus/web/index.html | 59 ++ experimental/context_menus/web/manifest.json | 35 + experimental/context_menus/windows/.gitignore | 17 + .../context_menus/windows/CMakeLists.txt | 101 +++ .../windows/flutter/CMakeLists.txt | 104 +++ .../flutter/generated_plugin_registrant.cc | 14 + .../flutter/generated_plugin_registrant.h | 15 + .../windows/flutter/generated_plugins.cmake | 24 + .../windows/runner/CMakeLists.txt | 39 ++ .../context_menus/windows/runner/Runner.rc | 121 ++++ .../windows/runner/flutter_window.cpp | 66 ++ .../windows/runner/flutter_window.h | 33 + .../context_menus/windows/runner/main.cpp | 43 ++ .../context_menus/windows/runner/resource.h | 16 + .../windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes .../windows/runner/runner.exe.manifest | 20 + .../context_menus/windows/runner/utils.cpp | 64 ++ .../context_menus/windows/runner/utils.h | 19 + .../windows/runner/win32_window.cpp | 249 +++++++ .../windows/runner/win32_window.h | 99 +++ tool/flutter_ci_script_beta.sh | 3 + tool/flutter_ci_script_master.sh | 1 + 150 files changed, 6405 insertions(+) create mode 100644 experimental/context_menus/.gitignore create mode 100644 experimental/context_menus/.metadata create mode 100644 experimental/context_menus/README.md create mode 100644 experimental/context_menus/analysis_options.yaml create mode 100644 experimental/context_menus/android/.gitignore create mode 100644 experimental/context_menus/android/app/build.gradle create mode 100644 experimental/context_menus/android/app/src/debug/AndroidManifest.xml create mode 100644 experimental/context_menus/android/app/src/main/AndroidManifest.xml create mode 100644 experimental/context_menus/android/app/src/main/kotlin/com/example/context_menus/MainActivity.kt create mode 100644 experimental/context_menus/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 experimental/context_menus/android/app/src/main/res/drawable/launch_background.xml create mode 100644 experimental/context_menus/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 experimental/context_menus/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 experimental/context_menus/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 experimental/context_menus/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 experimental/context_menus/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 experimental/context_menus/android/app/src/main/res/values-night/styles.xml create mode 100644 experimental/context_menus/android/app/src/main/res/values/styles.xml create mode 100644 experimental/context_menus/android/app/src/profile/AndroidManifest.xml create mode 100644 experimental/context_menus/android/build.gradle create mode 100644 experimental/context_menus/android/gradle.properties create mode 100644 experimental/context_menus/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 experimental/context_menus/android/settings.gradle create mode 100644 experimental/context_menus/ios/.gitignore create mode 100644 experimental/context_menus/ios/Flutter/AppFrameworkInfo.plist create mode 100644 experimental/context_menus/ios/Flutter/Debug.xcconfig create mode 100644 experimental/context_menus/ios/Flutter/Release.xcconfig create mode 100644 experimental/context_menus/ios/Podfile create mode 100644 experimental/context_menus/ios/Runner.xcodeproj/project.pbxproj create mode 100644 experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 experimental/context_menus/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 experimental/context_menus/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 experimental/context_menus/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 experimental/context_menus/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 experimental/context_menus/ios/Runner/AppDelegate.swift create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 experimental/context_menus/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 experimental/context_menus/ios/Runner/Base.lproj/Main.storyboard create mode 100644 experimental/context_menus/ios/Runner/Info.plist create mode 100644 experimental/context_menus/ios/Runner/Runner-Bridging-Header.h create mode 100644 experimental/context_menus/lib/anywhere_page.dart create mode 100644 experimental/context_menus/lib/constants.dart create mode 100644 experimental/context_menus/lib/context_menu_region.dart create mode 100644 experimental/context_menus/lib/custom_buttons_page.dart create mode 100644 experimental/context_menus/lib/default_values_page.dart create mode 100644 experimental/context_menus/lib/email_button_page.dart create mode 100644 experimental/context_menus/lib/field_types_page.dart create mode 100644 experimental/context_menus/lib/full_page.dart create mode 100644 experimental/context_menus/lib/global_selection_page.dart create mode 100644 experimental/context_menus/lib/image_page.dart create mode 100644 experimental/context_menus/lib/is_valid_email.dart create mode 100644 experimental/context_menus/lib/main.dart create mode 100644 experimental/context_menus/lib/modified_action_page.dart create mode 100644 experimental/context_menus/lib/platform_selector.dart create mode 100644 experimental/context_menus/lib/reordered_buttons_page.dart create mode 100644 experimental/context_menus/linux/.gitignore create mode 100644 experimental/context_menus/linux/CMakeLists.txt create mode 100644 experimental/context_menus/linux/flutter/CMakeLists.txt create mode 100644 experimental/context_menus/linux/flutter/generated_plugin_registrant.cc create mode 100644 experimental/context_menus/linux/flutter/generated_plugin_registrant.h create mode 100644 experimental/context_menus/linux/flutter/generated_plugins.cmake create mode 100644 experimental/context_menus/linux/main.cc create mode 100644 experimental/context_menus/linux/my_application.cc create mode 100644 experimental/context_menus/linux/my_application.h create mode 100644 experimental/context_menus/macos/.gitignore create mode 100644 experimental/context_menus/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 experimental/context_menus/macos/Flutter/Flutter-Release.xcconfig create mode 100644 experimental/context_menus/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 experimental/context_menus/macos/Podfile create mode 100644 experimental/context_menus/macos/Runner.xcodeproj/project.pbxproj create mode 100644 experimental/context_menus/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 experimental/context_menus/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 experimental/context_menus/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 experimental/context_menus/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 experimental/context_menus/macos/Runner/AppDelegate.swift create mode 100644 experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 experimental/context_menus/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 experimental/context_menus/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 experimental/context_menus/macos/Runner/Configs/Debug.xcconfig create mode 100644 experimental/context_menus/macos/Runner/Configs/Release.xcconfig create mode 100644 experimental/context_menus/macos/Runner/Configs/Warnings.xcconfig create mode 100644 experimental/context_menus/macos/Runner/DebugProfile.entitlements create mode 100644 experimental/context_menus/macos/Runner/Info.plist create mode 100644 experimental/context_menus/macos/Runner/MainFlutterWindow.swift create mode 100644 experimental/context_menus/macos/Runner/Release.entitlements create mode 100644 experimental/context_menus/pubspec.yaml create mode 100644 experimental/context_menus/test/anywhere_page_test.dart create mode 100644 experimental/context_menus/test/custom_buttons_page_test.dart create mode 100644 experimental/context_menus/test/default_values_page_test.dart create mode 100644 experimental/context_menus/test/email_button_page_test.dart create mode 100644 experimental/context_menus/test/field_types_page_test.dart create mode 100644 experimental/context_menus/test/global_selection_page_test.dart create mode 100644 experimental/context_menus/test/image_page_test.dart create mode 100644 experimental/context_menus/test/utils.dart create mode 100644 experimental/context_menus/web/favicon.png create mode 100644 experimental/context_menus/web/icons/Icon-192.png create mode 100644 experimental/context_menus/web/icons/Icon-512.png create mode 100644 experimental/context_menus/web/icons/Icon-maskable-192.png create mode 100644 experimental/context_menus/web/icons/Icon-maskable-512.png create mode 100644 experimental/context_menus/web/index.html create mode 100644 experimental/context_menus/web/manifest.json create mode 100644 experimental/context_menus/windows/.gitignore create mode 100644 experimental/context_menus/windows/CMakeLists.txt create mode 100644 experimental/context_menus/windows/flutter/CMakeLists.txt create mode 100644 experimental/context_menus/windows/flutter/generated_plugin_registrant.cc create mode 100644 experimental/context_menus/windows/flutter/generated_plugin_registrant.h create mode 100644 experimental/context_menus/windows/flutter/generated_plugins.cmake create mode 100644 experimental/context_menus/windows/runner/CMakeLists.txt create mode 100644 experimental/context_menus/windows/runner/Runner.rc create mode 100644 experimental/context_menus/windows/runner/flutter_window.cpp create mode 100644 experimental/context_menus/windows/runner/flutter_window.h create mode 100644 experimental/context_menus/windows/runner/main.cpp create mode 100644 experimental/context_menus/windows/runner/resource.h create mode 100644 experimental/context_menus/windows/runner/resources/app_icon.ico create mode 100644 experimental/context_menus/windows/runner/runner.exe.manifest create mode 100644 experimental/context_menus/windows/runner/utils.cpp create mode 100644 experimental/context_menus/windows/runner/utils.h create mode 100644 experimental/context_menus/windows/runner/win32_window.cpp create mode 100644 experimental/context_menus/windows/runner/win32_window.h diff --git a/experimental/context_menus/.gitignore b/experimental/context_menus/.gitignore new file mode 100644 index 000000000..24476c5d1 --- /dev/null +++ b/experimental/context_menus/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/experimental/context_menus/.metadata b/experimental/context_menus/.metadata new file mode 100644 index 000000000..4f8a2af1f --- /dev/null +++ b/experimental/context_menus/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: d2434a2b6008698a6d805fce87b310098465bf4c + channel: unknown + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: d2434a2b6008698a6d805fce87b310098465bf4c + base_revision: d2434a2b6008698a6d805fce87b310098465bf4c + - platform: android + create_revision: d2434a2b6008698a6d805fce87b310098465bf4c + base_revision: d2434a2b6008698a6d805fce87b310098465bf4c + - platform: ios + create_revision: d2434a2b6008698a6d805fce87b310098465bf4c + base_revision: d2434a2b6008698a6d805fce87b310098465bf4c + - platform: linux + create_revision: d2434a2b6008698a6d805fce87b310098465bf4c + base_revision: d2434a2b6008698a6d805fce87b310098465bf4c + - platform: macos + create_revision: d2434a2b6008698a6d805fce87b310098465bf4c + base_revision: d2434a2b6008698a6d805fce87b310098465bf4c + - platform: web + create_revision: d2434a2b6008698a6d805fce87b310098465bf4c + base_revision: d2434a2b6008698a6d805fce87b310098465bf4c + - platform: windows + create_revision: d2434a2b6008698a6d805fce87b310098465bf4c + base_revision: d2434a2b6008698a6d805fce87b310098465bf4c + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/experimental/context_menus/README.md b/experimental/context_menus/README.md new file mode 100644 index 000000000..a805c6563 --- /dev/null +++ b/experimental/context_menus/README.md @@ -0,0 +1,16 @@ +# context_menus + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/experimental/context_menus/analysis_options.yaml b/experimental/context_menus/analysis_options.yaml new file mode 100644 index 000000000..61b6c4de1 --- /dev/null +++ b/experimental/context_menus/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/experimental/context_menus/android/.gitignore b/experimental/context_menus/android/.gitignore new file mode 100644 index 000000000..6f568019d --- /dev/null +++ b/experimental/context_menus/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/experimental/context_menus/android/app/build.gradle b/experimental/context_menus/android/app/build.gradle new file mode 100644 index 000000000..fc319d015 --- /dev/null +++ b/experimental/context_menus/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.context_menus" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/experimental/context_menus/android/app/src/debug/AndroidManifest.xml b/experimental/context_menus/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..4c8d7f592 --- /dev/null +++ b/experimental/context_menus/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/experimental/context_menus/android/app/src/main/AndroidManifest.xml b/experimental/context_menus/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..6dab9cbc9 --- /dev/null +++ b/experimental/context_menus/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/experimental/context_menus/android/app/src/main/kotlin/com/example/context_menus/MainActivity.kt b/experimental/context_menus/android/app/src/main/kotlin/com/example/context_menus/MainActivity.kt new file mode 100644 index 000000000..ab0cf89ae --- /dev/null +++ b/experimental/context_menus/android/app/src/main/kotlin/com/example/context_menus/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.context_menus + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/experimental/context_menus/android/app/src/main/res/drawable-v21/launch_background.xml b/experimental/context_menus/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/experimental/context_menus/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/experimental/context_menus/android/app/src/main/res/drawable/launch_background.xml b/experimental/context_menus/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/experimental/context_menus/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/experimental/context_menus/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/experimental/context_menus/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/experimental/context_menus/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/experimental/context_menus/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/experimental/context_menus/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/experimental/context_menus/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/experimental/context_menus/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/experimental/context_menus/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/experimental/context_menus/android/app/src/main/res/values-night/styles.xml b/experimental/context_menus/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/experimental/context_menus/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/experimental/context_menus/android/app/src/main/res/values/styles.xml b/experimental/context_menus/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/experimental/context_menus/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/experimental/context_menus/android/app/src/profile/AndroidManifest.xml b/experimental/context_menus/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..4c8d7f592 --- /dev/null +++ b/experimental/context_menus/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/experimental/context_menus/android/build.gradle b/experimental/context_menus/android/build.gradle new file mode 100644 index 000000000..58a8c74b1 --- /dev/null +++ b/experimental/context_menus/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.7.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.2.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/experimental/context_menus/android/gradle.properties b/experimental/context_menus/android/gradle.properties new file mode 100644 index 000000000..94adc3a3f --- /dev/null +++ b/experimental/context_menus/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/experimental/context_menus/android/gradle/wrapper/gradle-wrapper.properties b/experimental/context_menus/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..3c472b99c --- /dev/null +++ b/experimental/context_menus/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/experimental/context_menus/android/settings.gradle b/experimental/context_menus/android/settings.gradle new file mode 100644 index 000000000..44e62bcf0 --- /dev/null +++ b/experimental/context_menus/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/experimental/context_menus/ios/.gitignore b/experimental/context_menus/ios/.gitignore new file mode 100644 index 000000000..7a7f9873a --- /dev/null +++ b/experimental/context_menus/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/experimental/context_menus/ios/Flutter/AppFrameworkInfo.plist b/experimental/context_menus/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..9625e105d --- /dev/null +++ b/experimental/context_menus/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/experimental/context_menus/ios/Flutter/Debug.xcconfig b/experimental/context_menus/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..ec97fc6f3 --- /dev/null +++ b/experimental/context_menus/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/experimental/context_menus/ios/Flutter/Release.xcconfig b/experimental/context_menus/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..c4855bfe2 --- /dev/null +++ b/experimental/context_menus/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/experimental/context_menus/ios/Podfile b/experimental/context_menus/ios/Podfile new file mode 100644 index 000000000..88359b225 --- /dev/null +++ b/experimental/context_menus/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '11.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/experimental/context_menus/ios/Runner.xcodeproj/project.pbxproj b/experimental/context_menus/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..16712b4a4 --- /dev/null +++ b/experimental/context_menus/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,486 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7F77QC7ABZ; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.contextMenus; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7F77QC7ABZ; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.contextMenus; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7F77QC7ABZ; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.contextMenus; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/experimental/context_menus/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/experimental/context_menus/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/experimental/context_menus/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..c87d15a33 --- /dev/null +++ b/experimental/context_menus/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/experimental/context_menus/ios/Runner.xcworkspace/contents.xcworkspacedata b/experimental/context_menus/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/experimental/context_menus/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/experimental/context_menus/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/context_menus/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/experimental/context_menus/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/experimental/context_menus/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/experimental/context_menus/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/experimental/context_menus/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/experimental/context_menus/ios/Runner/AppDelegate.swift b/experimental/context_menus/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..70693e4a8 --- /dev/null +++ b/experimental/context_menus/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 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 literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..0bedcf2fd --- /dev/null +++ b/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/experimental/context_menus/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/experimental/context_menus/ios/Runner/Base.lproj/LaunchScreen.storyboard b/experimental/context_menus/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/experimental/context_menus/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/experimental/context_menus/ios/Runner/Base.lproj/Main.storyboard b/experimental/context_menus/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/experimental/context_menus/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/experimental/context_menus/ios/Runner/Info.plist b/experimental/context_menus/ios/Runner/Info.plist new file mode 100644 index 000000000..d2a721f23 --- /dev/null +++ b/experimental/context_menus/ios/Runner/Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Context Menus + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + context_menus + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/experimental/context_menus/ios/Runner/Runner-Bridging-Header.h b/experimental/context_menus/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/experimental/context_menus/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/experimental/context_menus/lib/anywhere_page.dart b/experimental/context_menus/lib/anywhere_page.dart new file mode 100644 index 000000000..8d6b6e790 --- /dev/null +++ b/experimental/context_menus/lib/anywhere_page.dart @@ -0,0 +1,101 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'context_menu_region.dart'; +import 'platform_selector.dart'; + +class AnywherePage extends StatelessWidget { + AnywherePage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'anywhere'; + static const String title = 'Context Menu Anywhere Example'; + static const String subtitle = 'A ContextMenu outside of a text field'; + + final PlatformCallback onChangedPlatform; + + final TextEditingController _materialController = TextEditingController( + text: 'TextField shows the default menu still.', + ); + final TextEditingController _cupertinoController = TextEditingController( + text: 'CupertinoTextField shows the default menu still.', + ); + final TextEditingController _editableController = TextEditingController( + text: 'EditableText has no default menu, so it shows the custom one.', + ); + + static const String url = '$kCodeUrl/anywhere_page.dart'; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(AnywherePage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: ContextMenuRegion( + contextMenuBuilder: (BuildContext context, Offset primaryAnchor, + [Offset? secondaryAnchor]) { + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: TextSelectionToolbarAnchors( + primaryAnchor: primaryAnchor, + secondaryAnchor: secondaryAnchor, + ), + buttonItems: [ + ContextMenuButtonItem( + onPressed: () { + ContextMenuController.removeAny(); + Navigator.of(context).pop(); + }, + label: 'Back', + ), + ], + ); + }, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 64.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container(height: 20.0), + const Text( + 'Right click anywhere outside of a field to show a custom menu.', + ), + Container(height: 140.0), + CupertinoTextField(controller: _cupertinoController), + Container(height: 40.0), + TextField(controller: _materialController), + Container(height: 40.0), + Container( + color: Colors.white, + child: EditableText( + controller: _editableController, + focusNode: FocusNode(), + style: Typography.material2021().black.displayMedium!, + cursorColor: Colors.blue, + backgroundCursorColor: Colors.white, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/lib/constants.dart b/experimental/context_menus/lib/constants.dart new file mode 100644 index 000000000..05936346c --- /dev/null +++ b/experimental/context_menus/lib/constants.dart @@ -0,0 +1,2 @@ +const String kCodeUrl = + 'https://github.com/flutter/samples/blob/experimental/context_menus/lib'; diff --git a/experimental/context_menus/lib/context_menu_region.dart b/experimental/context_menus/lib/context_menu_region.dart new file mode 100644 index 000000000..077b73b00 --- /dev/null +++ b/experimental/context_menus/lib/context_menu_region.dart @@ -0,0 +1,97 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +typedef ContextMenuBuilder = Widget Function( + BuildContext context, Offset offset); + +/// Shows and hides the context menu based on user gestures. +/// +/// By default, shows the menu on right clicks and long presses. +class ContextMenuRegion extends StatefulWidget { + /// Creates an instance of [ContextMenuRegion]. + const ContextMenuRegion({ + super.key, + required this.child, + required this.contextMenuBuilder, + }); + + /// Builds the context menu. + final ContextMenuBuilder contextMenuBuilder; + + /// The child widget that will be listened to for gestures. + final Widget child; + + @override + State createState() => _ContextMenuRegionState(); +} + +class _ContextMenuRegionState extends State { + Offset? _longPressOffset; + + final ContextMenuController _contextMenuController = ContextMenuController(); + + static bool get _longPressEnabled { + switch (defaultTargetPlatform) { + case TargetPlatform.android: + case TargetPlatform.iOS: + return true; + case TargetPlatform.macOS: + case TargetPlatform.fuchsia: + case TargetPlatform.linux: + case TargetPlatform.windows: + return false; + } + } + + void _onSecondaryTapUp(TapUpDetails details) { + _show(details.globalPosition); + } + + void _onTap() { + if (!_contextMenuController.isShown) { + return; + } + _hide(); + } + + void _onLongPressStart(LongPressStartDetails details) { + _longPressOffset = details.globalPosition; + } + + void _onLongPress() { + assert(_longPressOffset != null); + _show(_longPressOffset!); + _longPressOffset = null; + } + + void _show(Offset position) { + _contextMenuController.show( + context: context, + contextMenuBuilder: (BuildContext context) { + return widget.contextMenuBuilder(context, position); + }, + ); + } + + void _hide() { + _contextMenuController.remove(); + } + + @override + void dispose() { + _hide(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + behavior: HitTestBehavior.opaque, + onSecondaryTapUp: _onSecondaryTapUp, + onTap: _onTap, + onLongPress: _longPressEnabled ? _onLongPress : null, + onLongPressStart: _longPressEnabled ? _onLongPressStart : null, + child: widget.child, + ); + } +} diff --git a/experimental/context_menus/lib/custom_buttons_page.dart b/experimental/context_menus/lib/custom_buttons_page.dart new file mode 100644 index 000000000..e1d1ea547 --- /dev/null +++ b/experimental/context_menus/lib/custom_buttons_page.dart @@ -0,0 +1,86 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'platform_selector.dart'; + +class CustomButtonsPage extends StatelessWidget { + CustomButtonsPage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'custom-buttons'; + static const String title = 'Custom Buttons'; + static const String subtitle = + 'The usual buttons, but with a custom appearance.'; + + final PlatformCallback onChangedPlatform; + + final TextEditingController _controller = TextEditingController( + text: + 'Show the menu to see the usual default buttons, but with a custom appearance.', + ); + + static const String url = '$kCodeUrl/custom_buttons_page.dart'; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(CustomButtonsPage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: Center( + child: SizedBox( + width: 300.0, + child: TextField( + controller: _controller, + maxLines: 4, + minLines: 2, + contextMenuBuilder: + (BuildContext context, EditableTextState editableTextState) { + return AdaptiveTextSelectionToolbar( + anchors: editableTextState.contextMenuAnchors, + // Build the default buttons, but make them look custom. + // Note that in a real project you may want to build + // different buttons depending on the platform. + children: editableTextState.contextMenuButtonItems + .map((ContextMenuButtonItem buttonItem) { + return CupertinoButton( + borderRadius: null, + color: const Color(0xffaaaa00), + disabledColor: const Color(0xffaaaaff), + onPressed: buttonItem.onPressed, + padding: const EdgeInsets.all(10.0), + pressedOpacity: 0.7, + child: SizedBox( + width: 200.0, + child: Text( + CupertinoTextSelectionToolbarButton.getButtonLabel( + context, buttonItem), + ), + ), + ); + }).toList(), + ); + }, + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/lib/default_values_page.dart b/experimental/context_menus/lib/default_values_page.dart new file mode 100644 index 000000000..ab87c87c0 --- /dev/null +++ b/experimental/context_menus/lib/default_values_page.dart @@ -0,0 +1,111 @@ +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'platform_selector.dart'; + +class DefaultValuesPage extends StatelessWidget { + DefaultValuesPage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'default-values'; + static const String title = 'Default API Values Example'; + static const String subtitle = + 'Shows what happens when you pass various things into contextMenuBuilder.'; + + final PlatformCallback onChangedPlatform; + + final TextEditingController _controllerNone = TextEditingController( + text: "When contextMenuBuilder isn't given anything at all.", + ); + + final TextEditingController _controllerNull = TextEditingController( + text: "When contextMenuBuilder is explicitly given null.", + ); + + final TextEditingController _controllerCustom = TextEditingController( + text: "When something custom is passed to contextMenuBuilder.", + ); + + static const String url = '$kCodeUrl/default_values_page.dart'; + + DialogRoute _showDialog(BuildContext context, String message) { + return DialogRoute( + context: context, + builder: (BuildContext context) => AlertDialog(title: Text(message)), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(DefaultValuesPage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: Center( + child: SizedBox( + width: 400.0, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'This example simply shows what happens when contextMenuBuilder is given null, a custom value, or omitted altogether.', + ), + const SizedBox( + height: 40.0, + ), + TextField( + maxLines: 2, + minLines: 2, + controller: _controllerNone, + ), + TextField( + maxLines: 2, + minLines: 2, + controller: _controllerNull, + contextMenuBuilder: null, + ), + TextField( + maxLines: 2, + minLines: 2, + controller: _controllerCustom, + contextMenuBuilder: (BuildContext context, + EditableTextState editableTextState) { + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: editableTextState.contextMenuAnchors, + buttonItems: [ + ContextMenuButtonItem( + label: 'Custom button', + onPressed: () { + ContextMenuController.removeAny(); + Navigator.of(context).push(_showDialog( + context, 'You clicked the custom button.')); + }, + ), + ...editableTextState.contextMenuButtonItems, + ], + ); + }, + ), + ], + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/lib/email_button_page.dart b/experimental/context_menus/lib/email_button_page.dart new file mode 100644 index 000000000..c761c6bb0 --- /dev/null +++ b/experimental/context_menus/lib/email_button_page.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'is_valid_email.dart'; +import 'platform_selector.dart'; + +class EmailButtonPage extends StatelessWidget { + EmailButtonPage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'email-button'; + static const String title = 'Email Button'; + static const String subtitle = 'A selection-aware email button'; + static const String url = '$kCodeUrl/email_button_page.dart'; + + final PlatformCallback onChangedPlatform; + + final TextEditingController _controller = TextEditingController( + text: 'Select the email address and open the menu: me@example.com', + ); + + DialogRoute _showDialog(BuildContext context) { + return DialogRoute( + context: context, + builder: (BuildContext context) => + const AlertDialog(title: Text('You clicked send email!')), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(EmailButtonPage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: Center( + child: SizedBox( + width: 300.0, + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + const SizedBox(height: 20.0), + const Text( + 'This example shows how to add a special button to the context menu depending on the current selection.', + ), + const SizedBox(height: 40.0), + TextField( + maxLines: 2, + controller: _controller, + contextMenuBuilder: (BuildContext context, + EditableTextState editableTextState) { + final TextEditingValue value = + editableTextState.textEditingValue; + final List buttonItems = + editableTextState.contextMenuButtonItems; + if (isValidEmail(value.selection.textInside(value.text))) { + buttonItems.insert( + 0, + ContextMenuButtonItem( + label: 'Send email', + onPressed: () { + ContextMenuController.removeAny(); + Navigator.of(context).push(_showDialog(context)); + }, + )); + } + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: editableTextState.contextMenuAnchors, + buttonItems: buttonItems, + ); + }, + ), + ], + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/lib/field_types_page.dart b/experimental/context_menus/lib/field_types_page.dart new file mode 100644 index 000000000..606ff53c0 --- /dev/null +++ b/experimental/context_menus/lib/field_types_page.dart @@ -0,0 +1,135 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'platform_selector.dart'; + +class FieldTypesPage extends StatelessWidget { + FieldTypesPage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'field-types'; + static const String title = 'The Context Menu in Different Field Types'; + static const String subtitle = + 'How contextual menus work in TextField, CupertinoTextField, and EditableText'; + static const String url = '$kCodeUrl/field_types_page.dart'; + + final PlatformCallback onChangedPlatform; + + final TextEditingController _controller = TextEditingController( + text: + "Material text field shows the menu for any platform by default. You'll see the correct menu for your platform here.", + ); + + final TextEditingController _cupertinoController = TextEditingController( + text: + "CupertinoTextField can't show Material menus by default. On non-Apple platforms, you'll still see a Cupertino menu here.", + ); + + final TextEditingController _cupertinoControllerFixed = TextEditingController( + text: + "But CupertinoTextField can be made to adaptively show any menu. You'll see the correct menu for your platform here.", + ); + + final TextEditingController _cupertinoControllerForced = + TextEditingController( + text: 'Or forced to always show a specific menu (Material desktop menu).', + ); + + final TextEditingController _editableController = TextEditingController( + text: + "EditableText doesn't show any selection menu by itself, even when contextMenuBuilder is passed.", + ); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(FieldTypesPage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: Center( + child: SizedBox( + width: 400.0, + child: ListView( + children: [ + const SizedBox(height: 20.0), + TextField( + maxLines: 3, + controller: _controller, + ), + const SizedBox(height: 60.0), + CupertinoTextField( + maxLines: 3, + controller: _cupertinoController, + ), + const SizedBox(height: 20.0), + CupertinoTextField( + maxLines: 3, + controller: _cupertinoControllerFixed, + contextMenuBuilder: (BuildContext context, + EditableTextState editableTextState) { + return AdaptiveTextSelectionToolbar.editableText( + editableTextState: editableTextState, + ); + }, + ), + const SizedBox(height: 20.0), + CupertinoTextField( + maxLines: 3, + controller: _cupertinoControllerForced, + contextMenuBuilder: (BuildContext context, + EditableTextState editableTextState) { + return DesktopTextSelectionToolbar( + anchor: editableTextState.contextMenuAnchors.primaryAnchor, + children: AdaptiveTextSelectionToolbar.getAdaptiveButtons( + context, + editableTextState.contextMenuButtonItems, + ).toList(), + ); + }, + ), + const SizedBox(height: 60.0), + Container( + color: Colors.white, + child: EditableText( + maxLines: 3, + controller: _editableController, + focusNode: FocusNode(), + style: Typography.material2021().black.displayMedium!, + cursorColor: Colors.blue, + backgroundCursorColor: Colors.white, + // contextMenuBuilder doesn't do anything here! + // EditableText has no built-in gesture detection for + // selection. A wrapper would have to implement + // TextSelectionGestureDetectorBuilderDelegate, etc. + contextMenuBuilder: (BuildContext context, + EditableTextState editableTextState) { + return AdaptiveTextSelectionToolbar.editableText( + editableTextState: editableTextState, + ); + }, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/lib/full_page.dart b/experimental/context_menus/lib/full_page.dart new file mode 100644 index 000000000..dffc842c2 --- /dev/null +++ b/experimental/context_menus/lib/full_page.dart @@ -0,0 +1,161 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'context_menu_region.dart'; +import 'is_valid_email.dart'; +import 'platform_selector.dart'; + +class FullPage extends StatelessWidget { + FullPage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'full'; + static const String title = 'Combined Example'; + static const String subtitle = + 'Combining several different types of custom menus.'; + static const String url = '$kCodeUrl/full_page.dart'; + + final PlatformCallback onChangedPlatform; + + final TextEditingController _controller = TextEditingController( + text: 'Custom menus everywhere. me@example.com', + ); + + DialogRoute _showDialog(BuildContext context, String message) { + return DialogRoute( + context: context, + builder: (BuildContext context) => AlertDialog(title: Text(message)), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(FullPage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: ContextMenuRegion( + contextMenuBuilder: (BuildContext context, Offset offset) { + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: TextSelectionToolbarAnchors( + primaryAnchor: offset, + ), + buttonItems: [ + ContextMenuButtonItem( + onPressed: () { + ContextMenuController.removeAny(); + Navigator.of(context).pop(); + }, + label: 'Back', + ), + ], + ); + }, + child: Center( + child: SizedBox( + width: 400.0, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'This example simply shows how many of the previous examples can be combined in a single app.', + ), + const SizedBox( + height: 60.0, + ), + ContextMenuRegion( + contextMenuBuilder: (BuildContext context, Offset offset) { + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: TextSelectionToolbarAnchors( + primaryAnchor: offset, + ), + buttonItems: [ + ContextMenuButtonItem( + onPressed: () { + ContextMenuController.removeAny(); + Navigator.of(context).push(_showDialog( + context, 'Image saved! (not really though)')); + }, + label: 'Save', + ), + ], + ); + }, + child: const SizedBox( + width: 200.0, + height: 200.0, + child: FlutterLogo(), + ), + ), + Container(height: 20.0), + TextField( + controller: _controller, + contextMenuBuilder: (BuildContext context, + EditableTextState editableTextState) { + final TextEditingValue value = + editableTextState.textEditingValue; + final List buttonItems = + editableTextState.contextMenuButtonItems; + if (isValidEmail(value.selection.textInside(value.text))) { + buttonItems.insert( + 0, + ContextMenuButtonItem( + label: 'Send email', + onPressed: () { + ContextMenuController.removeAny(); + Navigator.of(context).push(_showDialog( + context, 'You clicked send email')); + }, + )); + } + return AdaptiveTextSelectionToolbar( + anchors: editableTextState.contextMenuAnchors, + // Build the default buttons, but make them look crazy. + // Note that in a real project you may want to build + // different buttons depending on the platform. + children: + buttonItems.map((ContextMenuButtonItem buttonItem) { + return CupertinoButton( + borderRadius: null, + color: const Color(0xffaaaa00), + disabledColor: const Color(0xffaaaaff), + onPressed: buttonItem.onPressed, + padding: const EdgeInsets.all(10.0), + pressedOpacity: 0.7, + child: SizedBox( + width: 200.0, + child: Text( + CupertinoTextSelectionToolbarButton + .getButtonLabel(context, buttonItem), + ), + ), + ); + }).toList(), + ); + }, + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/lib/global_selection_page.dart b/experimental/context_menus/lib/global_selection_page.dart new file mode 100644 index 000000000..a302f8d24 --- /dev/null +++ b/experimental/context_menus/lib/global_selection_page.dart @@ -0,0 +1,81 @@ +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'platform_selector.dart'; + +class GlobalSelectionPage extends StatelessWidget { + GlobalSelectionPage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'global-selection'; + static const String title = 'Global Selection Example'; + static const String subtitle = 'Context menus in and out of global selection'; + static const String url = '$kCodeUrl/global_selection_page.dart'; + + final PlatformCallback onChangedPlatform; + + final TextEditingController _controller = TextEditingController( + text: 'TextFields still show their specific context menu.', + ); + + @override + Widget build(BuildContext context) { + return SelectionArea( + contextMenuBuilder: + (BuildContext context, SelectableRegionState selectableRegionState) { + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: selectableRegionState.contextMenuAnchors, + buttonItems: [ + ...selectableRegionState.contextMenuButtonItems, + ContextMenuButtonItem( + onPressed: () { + ContextMenuController.removeAny(); + Navigator.of(context).pop(); + }, + label: 'Back', + ), + ], + ); + }, + child: Scaffold( + appBar: AppBar( + title: const Text(GlobalSelectionPage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: Center( + child: SizedBox( + width: 400.0, + child: ListView( + children: [ + const SizedBox(height: 20.0), + const Text( + 'This entire page is wrapped in a SelectionArea with a custom context menu. Clicking on any of the plain text, including the AppBar title, will show the custom menu.', + ), + const SizedBox(height: 40.0), + TextField(controller: _controller), + const SizedBox(height: 40.0), + const SelectableText( + 'SelectableText also shows its own separate context menu.'), + ], + ), + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/lib/image_page.dart b/experimental/context_menus/lib/image_page.dart new file mode 100644 index 000000000..a8dd9ff9a --- /dev/null +++ b/experimental/context_menus/lib/image_page.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'context_menu_region.dart'; +import 'platform_selector.dart'; + +class ImagePage extends StatelessWidget { + const ImagePage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'image'; + static const String title = 'ContextMenu on an Image'; + static const String subtitle = + 'A ContextMenu the displays on an Image widget'; + static const String url = '$kCodeUrl/image_page.dart'; + + final PlatformCallback onChangedPlatform; + + DialogRoute _showDialog(BuildContext context) { + return DialogRoute( + context: context, + builder: (BuildContext context) => + const AlertDialog(title: Text('Image saved! (not really though)')), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(ImagePage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ContextMenuRegion( + contextMenuBuilder: (BuildContext context, Offset offset) { + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: TextSelectionToolbarAnchors( + primaryAnchor: offset, + ), + buttonItems: [ + ContextMenuButtonItem( + onPressed: () { + ContextMenuController.removeAny(); + Navigator.of(context).push(_showDialog(context)); + }, + label: 'Save', + ), + ], + ); + }, + child: const SizedBox( + width: 200.0, + height: 200.0, + child: FlutterLogo(), + ), + ), + Container(height: 20.0), + const Text( + 'Right click or long press on the image to see a special menu.', + ), + ], + ), + ); + } +} diff --git a/experimental/context_menus/lib/is_valid_email.dart b/experimental/context_menus/lib/is_valid_email.dart new file mode 100644 index 000000000..b4e4d05e6 --- /dev/null +++ b/experimental/context_menus/lib/is_valid_email.dart @@ -0,0 +1,10 @@ +/// Returns true if the given String is a valid email address. +bool isValidEmail(String text) { + return RegExp( + r'(?[a-zA-Z0-9]+)' + r'@' + r'(?[a-zA-Z0-9]+)' + r'\.' + r'(?[a-zA-Z0-9]+)', + ).hasMatch(text); +} diff --git a/experimental/context_menus/lib/main.dart b/experimental/context_menus/lib/main.dart new file mode 100644 index 000000000..e7e656471 --- /dev/null +++ b/experimental/context_menus/lib/main.dart @@ -0,0 +1,180 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'anywhere_page.dart'; +import 'custom_buttons_page.dart'; +import 'default_values_page.dart'; +import 'email_button_page.dart'; +import 'field_types_page.dart'; +import 'full_page.dart'; +import 'global_selection_page.dart'; +import 'image_page.dart'; +import 'modified_action_page.dart'; +import 'platform_selector.dart'; +import 'reordered_buttons_page.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({ + super.key, + }); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + void onChangedPlatform(TargetPlatform platform) { + setState(() { + debugDefaultTargetPlatformOverride = platform; + }); + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + debugShowCheckedModeBanner: false, + title: 'Flutter Context Menu Examples', + theme: ThemeData( + primarySwatch: Colors.blue, + platform: defaultTargetPlatform, + ), + initialRoute: '/', + routes: { + '/': (BuildContext context) => + MyHomePage(onChangedPlatform: onChangedPlatform), + AnywherePage.route: (BuildContext context) => + AnywherePage(onChangedPlatform: onChangedPlatform), + CustomButtonsPage.route: (BuildContext context) => + CustomButtonsPage(onChangedPlatform: onChangedPlatform), + ReorderedButtonsPage.route: (BuildContext context) => + ReorderedButtonsPage(onChangedPlatform: onChangedPlatform), + EmailButtonPage.route: (BuildContext context) => + EmailButtonPage(onChangedPlatform: onChangedPlatform), + ImagePage.route: (BuildContext context) => + ImagePage(onChangedPlatform: onChangedPlatform), + FieldTypesPage.route: (BuildContext context) => + FieldTypesPage(onChangedPlatform: onChangedPlatform), + FullPage.route: (BuildContext context) => + FullPage(onChangedPlatform: onChangedPlatform), + ModifiedActionPage.route: (BuildContext context) => + ModifiedActionPage(onChangedPlatform: onChangedPlatform), + GlobalSelectionPage.route: (BuildContext context) => + GlobalSelectionPage(onChangedPlatform: onChangedPlatform), + DefaultValuesPage.route: (BuildContext context) => + DefaultValuesPage(onChangedPlatform: onChangedPlatform), + }, + ); + } +} + +class MyHomePage extends StatelessWidget { + const MyHomePage({ + super.key, + required this.onChangedPlatform, + }); + + final PlatformCallback onChangedPlatform; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Context Menu Demos'), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + ], + ), + body: ListView( + children: const [ + _MyListItem( + route: AnywherePage.route, + title: AnywherePage.title, + subtitle: AnywherePage.subtitle, + ), + _MyListItem( + route: GlobalSelectionPage.route, + title: GlobalSelectionPage.title, + subtitle: GlobalSelectionPage.subtitle, + ), + _MyListItem( + route: ImagePage.route, + title: ImagePage.title, + subtitle: ImagePage.subtitle, + ), + _MyListItem( + route: CustomButtonsPage.route, + title: CustomButtonsPage.title, + subtitle: CustomButtonsPage.subtitle, + ), + _MyListItem( + route: EmailButtonPage.route, + title: EmailButtonPage.title, + subtitle: EmailButtonPage.subtitle, + ), + _MyListItem( + route: ReorderedButtonsPage.route, + title: ReorderedButtonsPage.title, + subtitle: ReorderedButtonsPage.subtitle, + ), + _MyListItem( + route: ModifiedActionPage.route, + title: ModifiedActionPage.title, + subtitle: ModifiedActionPage.subtitle, + ), + _MyListItem( + route: FieldTypesPage.route, + title: FieldTypesPage.title, + subtitle: FieldTypesPage.subtitle, + ), + _MyListItem( + route: DefaultValuesPage.route, + title: DefaultValuesPage.title, + subtitle: DefaultValuesPage.subtitle, + ), + _MyListItem( + route: FullPage.route, + title: FullPage.title, + subtitle: FullPage.subtitle, + ), + ], + ), + ); + } +} + +class _MyListItem extends StatelessWidget { + const _MyListItem({ + required this.route, + required this.subtitle, + required this.title, + }); + + final String route; + final String subtitle; + final String title; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + Navigator.of(context).pushNamed(route); + }, + child: Card( + margin: const EdgeInsets.all(12.0), + child: Padding( + padding: const EdgeInsets.all(24.0), + child: ListTile( + title: Text(title), + subtitle: Text(subtitle), + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/lib/modified_action_page.dart b/experimental/context_menus/lib/modified_action_page.dart new file mode 100644 index 000000000..a0d0f8b33 --- /dev/null +++ b/experimental/context_menus/lib/modified_action_page.dart @@ -0,0 +1,98 @@ +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'platform_selector.dart'; + +class ModifiedActionPage extends StatelessWidget { + ModifiedActionPage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'modified-action'; + static const String title = 'Modified Action'; + static const String subtitle = + 'The copy button copies but also shows a menu.'; + static const String url = '$kCodeUrl/modified_action_page.dart'; + + final PlatformCallback onChangedPlatform; + + final TextEditingController _controller = TextEditingController( + text: 'Try using the copy button.', + ); + + DialogRoute _showDialog(BuildContext context) { + return DialogRoute( + context: context, + builder: (BuildContext context) => const AlertDialog( + title: Text('Copied, but also showed this dialog.')), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(ModifiedActionPage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: Center( + child: SizedBox( + width: 300.0, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'This example shows adding to the behavior of a default button.', + ), + const SizedBox( + height: 30.0, + ), + TextField( + controller: _controller, + contextMenuBuilder: (BuildContext context, + EditableTextState editableTextState) { + final List buttonItems = + editableTextState.contextMenuButtonItems; + // Modify the copy buttonItem to show a dialog after copying. + final int copyButtonIndex = buttonItems.indexWhere( + (ContextMenuButtonItem buttonItem) { + return buttonItem.type == ContextMenuButtonType.copy; + }, + ); + if (copyButtonIndex >= 0) { + final ContextMenuButtonItem copyButtonItem = + buttonItems[copyButtonIndex]; + buttonItems[copyButtonIndex] = copyButtonItem.copyWith( + onPressed: () { + copyButtonItem.onPressed(); + Navigator.of(context).push(_showDialog(context)); + }, + ); + } + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: editableTextState.contextMenuAnchors, + buttonItems: buttonItems, + ); + }, + ), + ], + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/lib/platform_selector.dart b/experimental/context_menus/lib/platform_selector.dart new file mode 100644 index 000000000..3bf4ce3c2 --- /dev/null +++ b/experimental/context_menus/lib/platform_selector.dart @@ -0,0 +1,61 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +typedef PlatformCallback = void Function(TargetPlatform platform); + +class PlatformSelector extends StatefulWidget { + const PlatformSelector({ + super.key, + required this.onChangedPlatform, + }); + + final PlatformCallback onChangedPlatform; + + @override + State createState() => _PlatformSelectorState(); +} + +class _PlatformSelectorState extends State { + static const int targetPlatformStringLength = 15; // 'TargetPlatform.'.length + + static String _platformToString(TargetPlatform platform) { + return platform.toString().substring(targetPlatformStringLength); + } + + final TargetPlatform originaPlatform = defaultTargetPlatform; + + @override + Widget build(BuildContext context) { + return SizedBox( + width: 160.0, + child: DropdownButton( + value: defaultTargetPlatform, + icon: const Icon(Icons.arrow_downward), + elevation: 16, + onChanged: (TargetPlatform? value) { + if (value == null) { + return; + } + + widget.onChangedPlatform(value); + setState(() {}); + }, + items: TargetPlatform.values.map((TargetPlatform platform) { + return DropdownMenuItem( + value: platform, + child: Row( + children: [ + if (platform == originaPlatform) + const Icon( + Icons.home, + color: Color(0xff616161), + ), + Text(_platformToString(platform)), + ], + ), + ); + }).toList(), + ), + ); + } +} diff --git a/experimental/context_menus/lib/reordered_buttons_page.dart b/experimental/context_menus/lib/reordered_buttons_page.dart new file mode 100644 index 000000000..cbb5ed1c1 --- /dev/null +++ b/experimental/context_menus/lib/reordered_buttons_page.dart @@ -0,0 +1,97 @@ +import 'dart:collection'; + +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'platform_selector.dart'; + +class ReorderedButtonsPage extends StatelessWidget { + ReorderedButtonsPage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'reordered-buttons'; + static const String title = 'Reordered Buttons'; + static const String subtitle = 'The usual buttons, but in a different order.'; + static const String url = '$kCodeUrl/reordered_buttons_page.dart'; + + final PlatformCallback onChangedPlatform; + + final TextEditingController _controllerNormal = TextEditingController( + text: 'This button has the default buttons for reference.', + ); + + final TextEditingController _controllerReordered = TextEditingController( + text: 'This field has reordered buttons.', + ); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(ReorderedButtonsPage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: Center( + child: SizedBox( + width: 300.0, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + TextField( + maxLines: 2, + controller: _controllerNormal, + ), + const SizedBox(height: 20.0), + TextField( + controller: _controllerReordered, + maxLines: 2, + contextMenuBuilder: (BuildContext context, + EditableTextState editableTextState) { + // Reorder the button datas by type. + final HashMap + buttonItemsMap = + HashMap(); + for (ContextMenuButtonItem buttonItem + in editableTextState.contextMenuButtonItems) { + buttonItemsMap[buttonItem.type] = buttonItem; + } + final List reorderedButtonItems = + [ + if (buttonItemsMap + .containsKey(ContextMenuButtonType.selectAll)) + buttonItemsMap[ContextMenuButtonType.selectAll]!, + if (buttonItemsMap.containsKey(ContextMenuButtonType.paste)) + buttonItemsMap[ContextMenuButtonType.paste]!, + if (buttonItemsMap.containsKey(ContextMenuButtonType.copy)) + buttonItemsMap[ContextMenuButtonType.copy]!, + if (buttonItemsMap.containsKey(ContextMenuButtonType.cut)) + buttonItemsMap[ContextMenuButtonType.cut]!, + ]; + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: editableTextState.contextMenuAnchors, + buttonItems: reorderedButtonItems, + ); + }, + ), + ], + ), + ), + ), + ); + } +} diff --git a/experimental/context_menus/linux/.gitignore b/experimental/context_menus/linux/.gitignore new file mode 100644 index 000000000..d3896c984 --- /dev/null +++ b/experimental/context_menus/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/experimental/context_menus/linux/CMakeLists.txt b/experimental/context_menus/linux/CMakeLists.txt new file mode 100644 index 000000000..e1529a7de --- /dev/null +++ b/experimental/context_menus/linux/CMakeLists.txt @@ -0,0 +1,138 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "context_menus") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.context_menus") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/experimental/context_menus/linux/flutter/CMakeLists.txt b/experimental/context_menus/linux/flutter/CMakeLists.txt new file mode 100644 index 000000000..d5bd01648 --- /dev/null +++ b/experimental/context_menus/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/experimental/context_menus/linux/flutter/generated_plugin_registrant.cc b/experimental/context_menus/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 000000000..f6f23bfe9 --- /dev/null +++ b/experimental/context_menus/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); +} diff --git a/experimental/context_menus/linux/flutter/generated_plugin_registrant.h b/experimental/context_menus/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 000000000..e0f0a47bc --- /dev/null +++ b/experimental/context_menus/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/experimental/context_menus/linux/flutter/generated_plugins.cmake b/experimental/context_menus/linux/flutter/generated_plugins.cmake new file mode 100644 index 000000000..f16b4c342 --- /dev/null +++ b/experimental/context_menus/linux/flutter/generated_plugins.cmake @@ -0,0 +1,24 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_linux +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/experimental/context_menus/linux/main.cc b/experimental/context_menus/linux/main.cc new file mode 100644 index 000000000..e7c5c5437 --- /dev/null +++ b/experimental/context_menus/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/experimental/context_menus/linux/my_application.cc b/experimental/context_menus/linux/my_application.cc new file mode 100644 index 000000000..c5c0f5612 --- /dev/null +++ b/experimental/context_menus/linux/my_application.cc @@ -0,0 +1,104 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "context_menus"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "context_menus"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/experimental/context_menus/linux/my_application.h b/experimental/context_menus/linux/my_application.h new file mode 100644 index 000000000..72271d5e4 --- /dev/null +++ b/experimental/context_menus/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/experimental/context_menus/macos/.gitignore b/experimental/context_menus/macos/.gitignore new file mode 100644 index 000000000..746adbb6b --- /dev/null +++ b/experimental/context_menus/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/experimental/context_menus/macos/Flutter/Flutter-Debug.xcconfig b/experimental/context_menus/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 000000000..4b81f9b2d --- /dev/null +++ b/experimental/context_menus/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/experimental/context_menus/macos/Flutter/Flutter-Release.xcconfig b/experimental/context_menus/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 000000000..5caa9d157 --- /dev/null +++ b/experimental/context_menus/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/experimental/context_menus/macos/Flutter/GeneratedPluginRegistrant.swift b/experimental/context_menus/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 000000000..8236f5728 --- /dev/null +++ b/experimental/context_menus/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,12 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import url_launcher_macos + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) +} diff --git a/experimental/context_menus/macos/Podfile b/experimental/context_menus/macos/Podfile new file mode 100644 index 000000000..fe733905d --- /dev/null +++ b/experimental/context_menus/macos/Podfile @@ -0,0 +1,40 @@ +platform :osx, '10.13' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/experimental/context_menus/macos/Runner.xcodeproj/project.pbxproj b/experimental/context_menus/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..608e66a9f --- /dev/null +++ b/experimental/context_menus/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,633 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + B60E1A8B2D8A090432E4F2A5 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B97E5C508CAF1C7116459E3 /* Pods_Runner.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* context_menus.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = context_menus.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 6A3A45C1F45E60A4FD63DAAF /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + 9B97E5C508CAF1C7116459E3 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BB7FD279761B07603F158689 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + BCF88575D7ECDA76889B13B6 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B60E1A8B2D8A090432E4F2A5 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + 4AECC214ED99B3C071437A00 /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* context_menus.app */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + 4AECC214ED99B3C071437A00 /* Pods */ = { + isa = PBXGroup; + children = ( + 6A3A45C1F45E60A4FD63DAAF /* Pods-Runner.debug.xcconfig */, + BB7FD279761B07603F158689 /* Pods-Runner.release.xcconfig */, + BCF88575D7ECDA76889B13B6 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9B97E5C508CAF1C7116459E3 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 6E577C3E3FBB3AA29600811E /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + EBC5B9F10928FDB17032318B /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* context_menus.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; + 6E577C3E3FBB3AA29600811E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + EBC5B9F10928FDB17032318B /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/experimental/context_menus/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/context_menus/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/experimental/context_menus/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/experimental/context_menus/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/experimental/context_menus/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..9ee9cbdf2 --- /dev/null +++ b/experimental/context_menus/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/experimental/context_menus/macos/Runner.xcworkspace/contents.xcworkspacedata b/experimental/context_menus/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..21a3cc14c --- /dev/null +++ b/experimental/context_menus/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/experimental/context_menus/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/context_menus/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/experimental/context_menus/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/experimental/context_menus/macos/Runner/AppDelegate.swift b/experimental/context_menus/macos/Runner/AppDelegate.swift new file mode 100644 index 000000000..d53ef6437 --- /dev/null +++ b/experimental/context_menus/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..a2ec33f19 --- /dev/null +++ b/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/experimental/context_menus/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/experimental/context_menus/macos/Runner/Configs/AppInfo.xcconfig b/experimental/context_menus/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 000000000..8e861dd34 --- /dev/null +++ b/experimental/context_menus/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = context_menus + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.contextMenus + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. diff --git a/experimental/context_menus/macos/Runner/Configs/Debug.xcconfig b/experimental/context_menus/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 000000000..36b0fd946 --- /dev/null +++ b/experimental/context_menus/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/experimental/context_menus/macos/Runner/Configs/Release.xcconfig b/experimental/context_menus/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 000000000..dff4f4956 --- /dev/null +++ b/experimental/context_menus/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/experimental/context_menus/macos/Runner/Configs/Warnings.xcconfig b/experimental/context_menus/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 000000000..42bcbf478 --- /dev/null +++ b/experimental/context_menus/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/experimental/context_menus/macos/Runner/DebugProfile.entitlements b/experimental/context_menus/macos/Runner/DebugProfile.entitlements new file mode 100644 index 000000000..dddb8a30c --- /dev/null +++ b/experimental/context_menus/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/experimental/context_menus/macos/Runner/Info.plist b/experimental/context_menus/macos/Runner/Info.plist new file mode 100644 index 000000000..4789daa6a --- /dev/null +++ b/experimental/context_menus/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/experimental/context_menus/macos/Runner/MainFlutterWindow.swift b/experimental/context_menus/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 000000000..2722837ec --- /dev/null +++ b/experimental/context_menus/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/experimental/context_menus/macos/Runner/Release.entitlements b/experimental/context_menus/macos/Runner/Release.entitlements new file mode 100644 index 000000000..852fa1a47 --- /dev/null +++ b/experimental/context_menus/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/experimental/context_menus/pubspec.yaml b/experimental/context_menus/pubspec.yaml new file mode 100644 index 000000000..8bbbb6af9 --- /dev/null +++ b/experimental/context_menus/pubspec.yaml @@ -0,0 +1,92 @@ +name: context_menus +description: A new Flutter project. + +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+1 + +environment: + sdk: '>=2.19.0-177.0.dev <3.0.0' + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.2 + url_launcher: ^6.1.6 + +dev_dependencies: + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^2.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/experimental/context_menus/test/anywhere_page_test.dart b/experimental/context_menus/test/anywhere_page_test.dart new file mode 100644 index 000000000..cb50f63d8 --- /dev/null +++ b/experimental/context_menus/test/anywhere_page_test.dart @@ -0,0 +1,36 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:context_menus/main.dart'; +import 'package:context_menus/anywhere_page.dart'; + +void main() { + testWidgets('Right click works outside of text', (WidgetTester tester) async { + await tester.pumpWidget(const MyApp()); + + // Navigate to the AnywherePage example. + await tester.dragUntilVisible( + find.text(AnywherePage.title), + find.byType(ListView), + const Offset(0.0, -100.0), + ); + await tester.tap(find.text(AnywherePage.title)); + await tester.pumpAndSettle(); + + // Right click on the background of the app to show the context menu. + final TestGesture gesture = await tester.startGesture( + const Offset(100.0, 100.0), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The context menu is shown, with a custom back button. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + expect(find.text('Back'), findsOneWidget); + }); +} diff --git a/experimental/context_menus/test/custom_buttons_page_test.dart b/experimental/context_menus/test/custom_buttons_page_test.dart new file mode 100644 index 000000000..38dd8857b --- /dev/null +++ b/experimental/context_menus/test/custom_buttons_page_test.dart @@ -0,0 +1,59 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:context_menus/main.dart'; +import 'package:context_menus/custom_buttons_page.dart'; + +void main() { + testWidgets('Shows custom buttons in the built-in context menu', + (WidgetTester tester) async { + await tester.pumpWidget(const MyApp()); + + // Navigate to the CustomButtonsPage example. + await tester.dragUntilVisible( + find.text(CustomButtonsPage.title), + find.byType(ListView), + const Offset(0.0, -100.0), + ); + await tester.tap(find.text(CustomButtonsPage.title)); + await tester.pumpAndSettle(); + + // Right click on the text field to show the context menu. + final TestGesture gesture = await tester.startGesture( + tester.getCenter(find.byType(EditableText)), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The context menu is shown, and the buttons are custom widgets. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + switch (defaultTargetPlatform) { + case TargetPlatform.iOS: + expect(find.byType(CupertinoTextSelectionToolbarButton), findsNothing); + expect(find.byType(CupertinoButton), findsNWidgets(2)); + break; + case TargetPlatform.macOS: + expect(find.byType(CupertinoButton), findsNWidgets(2)); + expect(find.byType(CupertinoDesktopTextSelectionToolbarButton), + findsNothing); + break; + case TargetPlatform.android: + case TargetPlatform.fuchsia: + expect(find.byType(CupertinoButton), findsNWidgets(1)); + expect(find.byType(TextSelectionToolbarTextButton), findsNothing); + break; + case TargetPlatform.linux: + case TargetPlatform.windows: + expect(find.byType(CupertinoButton), findsNWidgets(1)); + expect(find.byType(DesktopTextSelectionToolbarButton), findsNothing); + break; + } + }); +} diff --git a/experimental/context_menus/test/default_values_page_test.dart b/experimental/context_menus/test/default_values_page_test.dart new file mode 100644 index 000000000..4fca5ce42 --- /dev/null +++ b/experimental/context_menus/test/default_values_page_test.dart @@ -0,0 +1,104 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:context_menus/main.dart'; +import 'package:context_menus/default_values_page.dart'; + +void main() { + testWidgets('Gives correct behavior for all values of contextMenuBuilder', + (WidgetTester tester) async { + await tester.pumpWidget(const MyApp()); + + // Navigate to the DefaultValuesPage example. + await tester.dragUntilVisible( + find.text(DefaultValuesPage.title), + find.byType(ListView), + const Offset(0.0, -100.0), + ); + await tester.pumpAndSettle(); + await tester.tap(find.text(DefaultValuesPage.title)); + await tester.pumpAndSettle(); + expect( + find.descendant( + of: find.byType(AppBar), + matching: find.text(DefaultValuesPage.title), + ), + findsOneWidget, + ); + + // Right click on the text field where contextMenuBuilder isn't passed. + TestGesture gesture = await tester.startGesture( + tester.getCenter(find.byType(EditableText).first), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The default context menu is shown. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + switch (defaultTargetPlatform) { + case TargetPlatform.iOS: + expect( + find.byType(CupertinoTextSelectionToolbarButton), findsNWidgets(2)); + break; + case TargetPlatform.macOS: + expect(find.byType(CupertinoDesktopTextSelectionToolbarButton), + findsNWidgets(2)); + break; + case TargetPlatform.android: + case TargetPlatform.fuchsia: + expect(find.byType(TextSelectionToolbarTextButton), findsNWidgets(1)); + break; + case TargetPlatform.linux: + case TargetPlatform.windows: + expect( + find.byType(DesktopTextSelectionToolbarButton), findsNWidgets(1)); + break; + } + + // Tap the next field to hide the context menu. + await tester.tap(find.byType(EditableText).at(1)); + await tester.pumpAndSettle(); + expect(find.byType(AdaptiveTextSelectionToolbar), findsNothing); + + // Right click on the text field where contextMenuBuilder is given null. + gesture = await tester.startGesture( + tester.getCenter(find.byType(EditableText).at(1)), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // No context menu is shown. + expect(find.byType(AdaptiveTextSelectionToolbar), findsNothing); + + // Tap the next field to hide the context menu. + await tester.tap(find.byType(EditableText).at(2)); + await tester.pumpAndSettle(); + expect(find.byType(AdaptiveTextSelectionToolbar), findsNothing); + + // Right click on the text field with the custom contextMenuBuilder. + gesture = await tester.startGesture( + tester.getCenter(find.byType(EditableText).at(2)), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The custom context menu is shown. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + expect(find.text('Custom button'), findsOneWidget); + }); +} diff --git a/experimental/context_menus/test/email_button_page_test.dart b/experimental/context_menus/test/email_button_page_test.dart new file mode 100644 index 000000000..9b3c6f2a6 --- /dev/null +++ b/experimental/context_menus/test/email_button_page_test.dart @@ -0,0 +1,118 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:context_menus/main.dart'; +import 'package:context_menus/email_button_page.dart'; + +import 'utils.dart'; + +void main() { + testWidgets('Selecting the email address shows a custom button', + (WidgetTester tester) async { + await tester.pumpWidget(const MyApp()); + + // Navigate to the EmailButtonPage example. + await tester.dragUntilVisible( + find.text(EmailButtonPage.title), + find.byType(ListView), + const Offset(0.0, -200.0), + ); + await tester.tap(find.text(EmailButtonPage.title)); + await tester.pumpAndSettle(); + + // Select the first word, then right click to show the context menu. + expect(find.byType(TextField), findsOneWidget); + await tester.tapAt(tester.getTopLeft(find.byType(EditableText))); + await tester.pumpAndSettle(); + await tester.sendKeyDownEvent(LogicalKeyboardKey.shift); + for (int i = 0; i < 6; i++) { + await tester.sendKeyEvent(LogicalKeyboardKey.arrowRight); + } + await tester.sendKeyUpEvent(LogicalKeyboardKey.shift); + await tester.pumpAndSettle(); + final TestGesture gesture1 = await tester.startGesture( + textOffsetToPosition(tester, 4), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture1.up(); + await gesture1.removePointer(); + await tester.pumpAndSettle(); + + // The context menu is shown, but no email button appears. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + expect(find.text('Send email'), findsNothing); + switch (defaultTargetPlatform) { + case TargetPlatform.iOS: + expect( + find.byType(CupertinoTextSelectionToolbarButton), findsNWidgets(2)); + break; + case TargetPlatform.macOS: + expect(find.byType(CupertinoDesktopTextSelectionToolbarButton), + findsNWidgets(2)); + break; + case TargetPlatform.android: + case TargetPlatform.fuchsia: + expect(find.byType(TextSelectionToolbarTextButton), findsNWidgets(3)); + break; + case TargetPlatform.linux: + case TargetPlatform.windows: + expect( + find.byType(DesktopTextSelectionToolbarButton), findsNWidgets(3)); + break; + } + + // Click on "Copy" to hide the context menu. + await tester.tap(find.text('Copy')); + await tester.pumpAndSettle(); + expect(find.byType(AdaptiveTextSelectionToolbar), findsNothing); + + // Select the email address, then right click it to show the context menu. + for (int i = 0; i < 38; i++) { + await tester.sendKeyEvent(LogicalKeyboardKey.arrowRight); + } + await tester.pumpAndSettle(); + await tester.sendKeyDownEvent(LogicalKeyboardKey.shift); + for (int i = 0; i < 15; i++) { + await tester.sendKeyEvent(LogicalKeyboardKey.arrowRight); + } + await tester.sendKeyUpEvent(LogicalKeyboardKey.shift); + final TestGesture gesture2 = await tester.startGesture( + textOffsetToPosition(tester, 48), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture2.up(); + await gesture2.removePointer(); + await tester.pumpAndSettle(); + + // The context menu is shown, and the email button now appears. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + expect(find.text('Send email'), findsOneWidget); + switch (defaultTargetPlatform) { + case TargetPlatform.iOS: + expect( + find.byType(CupertinoTextSelectionToolbarButton), findsNWidgets(3)); + break; + case TargetPlatform.macOS: + expect(find.byType(CupertinoDesktopTextSelectionToolbarButton), + findsNWidgets(3)); + break; + case TargetPlatform.android: + case TargetPlatform.fuchsia: + expect(find.byType(TextSelectionToolbarTextButton), findsNWidgets(4)); + break; + case TargetPlatform.linux: + case TargetPlatform.windows: + expect( + find.byType(DesktopTextSelectionToolbarButton), findsNWidgets(4)); + break; + } + }); +} diff --git a/experimental/context_menus/test/field_types_page_test.dart b/experimental/context_menus/test/field_types_page_test.dart new file mode 100644 index 000000000..2ca1cd044 --- /dev/null +++ b/experimental/context_menus/test/field_types_page_test.dart @@ -0,0 +1,192 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:context_menus/main.dart'; +import 'package:context_menus/field_types_page.dart'; + +void main() { + testWidgets( + 'Gives correct behavior for all values of contextMenuBuilder', + (WidgetTester tester) async { + await tester.pumpWidget(const MyApp()); + + // Navigate to the FieldTypesPage example. + await tester.dragUntilVisible( + find.text(FieldTypesPage.title), + find.byType(ListView), + const Offset(0.0, -100.0), + ); + await tester.pumpAndSettle(); + await tester.tap(find.text(FieldTypesPage.title)); + await tester.pumpAndSettle(); + expect( + find.descendant( + of: find.byType(AppBar), + matching: find.text(FieldTypesPage.title), + ), + findsOneWidget, + ); + + // Right click on the TextField. + TestGesture gesture = await tester.startGesture( + tester.getTopLeft(find.byType(TextField)), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The default context menu for the current platform is shown. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + switch (defaultTargetPlatform) { + case TargetPlatform.iOS: + expect(find.byType(CupertinoTextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.android: + expect(find.byType(TextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.fuchsia: + case TargetPlatform.linux: + case TargetPlatform.windows: + expect(find.byType(DesktopTextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.macOS: + expect(find.byType(CupertinoDesktopTextSelectionToolbar), + findsOneWidget); + break; + } + + // Tap the next field to hide the context menu. + await tester.tap(find.byType(EditableText).at(1)); + await tester.pumpAndSettle(); + expect(find.byType(AdaptiveTextSelectionToolbar), findsNothing); + + // Right click on the first CupertinoTextField. + gesture = await tester.startGesture( + tester.getTopLeft(find.byType(CupertinoTextField).first), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The default Cupertino context menu is shown. + expect( + find.byType(CupertinoAdaptiveTextSelectionToolbar), findsOneWidget); + switch (defaultTargetPlatform) { + case TargetPlatform.iOS: + case TargetPlatform.android: + case TargetPlatform.fuchsia: + expect(find.byType(CupertinoTextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.macOS: + case TargetPlatform.linux: + case TargetPlatform.windows: + expect(find.byType(CupertinoDesktopTextSelectionToolbar), + findsOneWidget); + break; + } + + // Tap the next field to hide the context menu. + await tester.tap(find.byType(CupertinoTextField).at(1)); + await tester.pumpAndSettle(); + expect(find.byType(CupertinoAdaptiveTextSelectionToolbar), findsNothing); + + // Right click on the fixed CupertinoTextField. + gesture = await tester.startGesture( + tester.getTopLeft(find.byType(CupertinoTextField).at(1)), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The default adaptive context menu is shown. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + switch (defaultTargetPlatform) { + case TargetPlatform.iOS: + expect(find.byType(CupertinoTextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.android: + expect(find.byType(TextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.fuchsia: + case TargetPlatform.linux: + case TargetPlatform.windows: + expect(find.byType(DesktopTextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.macOS: + expect(find.byType(CupertinoDesktopTextSelectionToolbar), + findsOneWidget); + break; + } + + // Tap the next field to hide the context menu. + await tester.tap(find.byType(CupertinoTextField).at(2)); + await tester.pumpAndSettle(); + expect(find.byType(AdaptiveTextSelectionToolbar), findsNothing); + + // Right click on the forced CupertinoTextField. + gesture = await tester.startGesture( + tester.getTopLeft(find.byType(CupertinoTextField).at(2)), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The DesktopTextSelectionToolbar is shown for all platforms. + expect(find.byType(AdaptiveTextSelectionToolbar), findsNothing); + expect(find.byType(CupertinoAdaptiveTextSelectionToolbar), findsNothing); + expect(find.byType(DesktopTextSelectionToolbar), findsOneWidget); + + // Tap the next field to hide the context menu. + await tester.tap(find.byType(EditableText).last); + await tester.pumpAndSettle(); + expect(find.byType(DesktopTextSelectionToolbar), findsNothing); + + // Right click on the EditableText. + gesture = await tester.startGesture( + tester.getTopLeft(find.byType(EditableText).first), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // Shows the default context menu. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + switch (defaultTargetPlatform) { + case TargetPlatform.iOS: + expect(find.byType(CupertinoTextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.android: + expect(find.byType(TextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.fuchsia: + case TargetPlatform.linux: + case TargetPlatform.windows: + expect(find.byType(DesktopTextSelectionToolbar), findsOneWidget); + break; + case TargetPlatform.macOS: + expect(find.byType(CupertinoDesktopTextSelectionToolbar), + findsOneWidget); + break; + } + }, + variant: TargetPlatformVariant.all(), + ); +} diff --git a/experimental/context_menus/test/global_selection_page_test.dart b/experimental/context_menus/test/global_selection_page_test.dart new file mode 100644 index 000000000..1982da6a4 --- /dev/null +++ b/experimental/context_menus/test/global_selection_page_test.dart @@ -0,0 +1,48 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:context_menus/main.dart'; +import 'package:context_menus/global_selection_page.dart'; + +void main() { + testWidgets('Gives correct behavior for all values of contextMenuBuilder', + (WidgetTester tester) async { + await tester.pumpWidget(const MyApp()); + + // Navigate to the GlobalSelectionPage example. + await tester.dragUntilVisible( + find.text(GlobalSelectionPage.title), + find.byType(ListView), + const Offset(0.0, -100.0), + ); + await tester.pumpAndSettle(); + await tester.tap(find.text(GlobalSelectionPage.title)); + await tester.pumpAndSettle(); + expect( + find.descendant( + of: find.byType(AppBar), + matching: find.text(GlobalSelectionPage.title), + ), + findsOneWidget, + ); + + // Right click on the plain Text widget. + TestGesture gesture = await tester.startGesture( + tester.getCenter(find.descendant( + of: find.byType(ListView), + matching: find.byType(Text), + )), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The default context menu is shown with a custom button. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + expect(find.text('Back'), findsOneWidget); + }); +} diff --git a/experimental/context_menus/test/image_page_test.dart b/experimental/context_menus/test/image_page_test.dart new file mode 100644 index 000000000..cee4d34a6 --- /dev/null +++ b/experimental/context_menus/test/image_page_test.dart @@ -0,0 +1,48 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:context_menus/main.dart'; +import 'package:context_menus/image_page.dart'; + +void main() { + testWidgets( + 'Gives correct behavior for all values of contextMenuBuilder', + (WidgetTester tester) async { + await tester.pumpWidget(const MyApp()); + + // Navigate to the ImagePage example. + await tester.dragUntilVisible( + find.text(ImagePage.title), + find.byType(ListView), + const Offset(0.0, -100.0), + ); + await tester.pumpAndSettle(); + await tester.tap(find.text(ImagePage.title)); + await tester.pumpAndSettle(); + expect( + find.descendant( + of: find.byType(AppBar), + matching: find.text(ImagePage.title), + ), + findsOneWidget, + ); + + // Right click on the FlutterLogo. + TestGesture gesture = await tester.startGesture( + tester.getCenter(find.byType(FlutterLogo)), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The default context menu is shown with a custom button. + expect(find.byType(AdaptiveTextSelectionToolbar), findsOneWidget); + expect(find.text('Save'), findsOneWidget); + }, + variant: TargetPlatformVariant.all(), + ); +} diff --git a/experimental/context_menus/test/utils.dart b/experimental/context_menus/test/utils.dart new file mode 100644 index 000000000..e92b28804 --- /dev/null +++ b/experimental/context_menus/test/utils.dart @@ -0,0 +1,46 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter_test/flutter_test.dart'; + +// Returns the first RenderEditable. +RenderEditable findRenderEditable(WidgetTester tester) { + final RenderObject root = tester.renderObject(find.byType(EditableText)); + expect(root, isNotNull); + + late RenderEditable renderEditable; + void recursiveFinder(RenderObject child) { + if (child is RenderEditable) { + renderEditable = child; + return; + } + child.visitChildren(recursiveFinder); + } + + root.visitChildren(recursiveFinder); + expect(renderEditable, isNotNull); + return renderEditable; +} + +Offset textOffsetToPosition(WidgetTester tester, int offset) { + final RenderEditable renderEditable = findRenderEditable(tester); + final List endpoints = globalize( + renderEditable.getEndpointsForSelection( + TextSelection.collapsed(offset: offset), + ), + renderEditable, + ); + expect(endpoints.length, 1); + return endpoints[0].point + const Offset(kIsWeb ? 1.0 : 0.0, -2.0); +} + +List globalize( + Iterable points, RenderBox box) { + return points.map((TextSelectionPoint point) { + return TextSelectionPoint( + box.localToGlobal(point.point), + point.direction, + ); + }).toList(); +} diff --git a/experimental/context_menus/web/favicon.png b/experimental/context_menus/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/experimental/context_menus/web/icons/Icon-192.png b/experimental/context_menus/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/experimental/context_menus/web/icons/Icon-512.png b/experimental/context_menus/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/experimental/context_menus/web/icons/Icon-maskable-192.png b/experimental/context_menus/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/experimental/context_menus/web/icons/Icon-maskable-512.png b/experimental/context_menus/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/experimental/context_menus/web/index.html b/experimental/context_menus/web/index.html new file mode 100644 index 000000000..a29750b2c --- /dev/null +++ b/experimental/context_menus/web/index.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + context_menus + + + + + + + + + + diff --git a/experimental/context_menus/web/manifest.json b/experimental/context_menus/web/manifest.json new file mode 100644 index 000000000..62bf22a4d --- /dev/null +++ b/experimental/context_menus/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "context_menus", + "short_name": "context_menus", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/experimental/context_menus/windows/.gitignore b/experimental/context_menus/windows/.gitignore new file mode 100644 index 000000000..d492d0d98 --- /dev/null +++ b/experimental/context_menus/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/experimental/context_menus/windows/CMakeLists.txt b/experimental/context_menus/windows/CMakeLists.txt new file mode 100644 index 000000000..521f3efec --- /dev/null +++ b/experimental/context_menus/windows/CMakeLists.txt @@ -0,0 +1,101 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(context_menus LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "context_menus") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/experimental/context_menus/windows/flutter/CMakeLists.txt b/experimental/context_menus/windows/flutter/CMakeLists.txt new file mode 100644 index 000000000..930d2071a --- /dev/null +++ b/experimental/context_menus/windows/flutter/CMakeLists.txt @@ -0,0 +1,104 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/experimental/context_menus/windows/flutter/generated_plugin_registrant.cc b/experimental/context_menus/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 000000000..4f7884874 --- /dev/null +++ b/experimental/context_menus/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,14 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); +} diff --git a/experimental/context_menus/windows/flutter/generated_plugin_registrant.h b/experimental/context_menus/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 000000000..dc139d85a --- /dev/null +++ b/experimental/context_menus/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/experimental/context_menus/windows/flutter/generated_plugins.cmake b/experimental/context_menus/windows/flutter/generated_plugins.cmake new file mode 100644 index 000000000..88b22e5c7 --- /dev/null +++ b/experimental/context_menus/windows/flutter/generated_plugins.cmake @@ -0,0 +1,24 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_windows +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/experimental/context_menus/windows/runner/CMakeLists.txt b/experimental/context_menus/windows/runner/CMakeLists.txt new file mode 100644 index 000000000..17411a8ab --- /dev/null +++ b/experimental/context_menus/windows/runner/CMakeLists.txt @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/experimental/context_menus/windows/runner/Runner.rc b/experimental/context_menus/windows/runner/Runner.rc new file mode 100644 index 000000000..aaf379dea --- /dev/null +++ b/experimental/context_menus/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example" "\0" + VALUE "FileDescription", "context_menus" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "context_menus" "\0" + VALUE "LegalCopyright", "Copyright (C) 2022 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "context_menus.exe" "\0" + VALUE "ProductName", "context_menus" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/experimental/context_menus/windows/runner/flutter_window.cpp b/experimental/context_menus/windows/runner/flutter_window.cpp new file mode 100644 index 000000000..b25e363ef --- /dev/null +++ b/experimental/context_menus/windows/runner/flutter_window.cpp @@ -0,0 +1,66 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/experimental/context_menus/windows/runner/flutter_window.h b/experimental/context_menus/windows/runner/flutter_window.h new file mode 100644 index 000000000..6da0652f0 --- /dev/null +++ b/experimental/context_menus/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/experimental/context_menus/windows/runner/main.cpp b/experimental/context_menus/windows/runner/main.cpp new file mode 100644 index 000000000..c1f3fa011 --- /dev/null +++ b/experimental/context_menus/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"context_menus", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/experimental/context_menus/windows/runner/resource.h b/experimental/context_menus/windows/runner/resource.h new file mode 100644 index 000000000..66a65d1e4 --- /dev/null +++ b/experimental/context_menus/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/experimental/context_menus/windows/runner/resources/app_icon.ico b/experimental/context_menus/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/experimental/context_menus/windows/runner/runner.exe.manifest b/experimental/context_menus/windows/runner/runner.exe.manifest new file mode 100644 index 000000000..a42ea7687 --- /dev/null +++ b/experimental/context_menus/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/experimental/context_menus/windows/runner/utils.cpp b/experimental/context_menus/windows/runner/utils.cpp new file mode 100644 index 000000000..f5bf9fa0f --- /dev/null +++ b/experimental/context_menus/windows/runner/utils.cpp @@ -0,0 +1,64 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, utf8_string.data(), + target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/experimental/context_menus/windows/runner/utils.h b/experimental/context_menus/windows/runner/utils.h new file mode 100644 index 000000000..3879d5475 --- /dev/null +++ b/experimental/context_menus/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/experimental/context_menus/windows/runner/win32_window.cpp b/experimental/context_menus/windows/runner/win32_window.cpp new file mode 100644 index 000000000..c7bcb4df4 --- /dev/null +++ b/experimental/context_menus/windows/runner/win32_window.cpp @@ -0,0 +1,249 @@ +#include "win32_window.h" + +#include + +#include "resource.h" + +namespace { + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} diff --git a/experimental/context_menus/windows/runner/win32_window.h b/experimental/context_menus/windows/runner/win32_window.h new file mode 100644 index 000000000..a4b8f1f0e --- /dev/null +++ b/experimental/context_menus/windows/runner/win32_window.h @@ -0,0 +1,99 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responsponds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index e9ebc70e1..555ed6c1a 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -20,6 +20,9 @@ declare -ar PROJECT_NAMES=( "code_sharing/shared" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" + # TODO(justinmc): To be enabled when its PR hits the master channel. + # https://github.com/flutter/flutter/pull/107193 + # "experimental/context_menus" "experimental/federated_plugin/federated_plugin" "experimental/web_dashboard" # TODO(DomesticMouse): Needs to be re-formatted for Flutter beta diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index 295562947..5ac29bc8d 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -19,6 +19,7 @@ declare -ar PROJECT_NAMES=( "code_sharing/server" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" + "experimental/context_menus" "experimental/federated_plugin/federated_plugin" "experimental/web_dashboard" # TODO(DomesticMouse): Needs to be re-formatted for Flutter beta From 9fc00df6324a49dbca51aed45afd65f14741aa97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Nov 2022 00:50:34 -0600 Subject: [PATCH 044/134] Bump github/codeql-action from 2.1.31 to 2.1.32 (#1499) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.31 to 2.1.32. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/c3b6fce4ee2ca25bc1066aa3bf73962fda0e8898...4238421316c33d73aeea2801274dd286f157c2bb) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 1a42c05ab..546ccda23 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@c3b6fce4ee2ca25bc1066aa3bf73962fda0e8898 + uses: github/codeql-action/upload-sarif@4238421316c33d73aeea2801274dd286f157c2bb with: sarif_file: results.sarif From 7d3f2cea87d09b9b7b1ce6ffdca971709d215c99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Nov 2022 18:14:20 +1100 Subject: [PATCH 045/134] Bump github/codeql-action from 2.1.32 to 2.1.33 (#1502) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.32 to 2.1.33. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4238421316c33d73aeea2801274dd286f157c2bb...678fc3afe258fb2e0cdc165ccf77b85719de7b3c) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 546ccda23..ee6d1771d 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4238421316c33d73aeea2801274dd286f157c2bb + uses: github/codeql-action/upload-sarif@678fc3afe258fb2e0cdc165ccf77b85719de7b3c with: sarif_file: results.sarif From f8117cc8857a615215e348ab2e71d61e7ab96554 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Nov 2022 18:14:33 +1100 Subject: [PATCH 046/134] Bump flutter_launcher_icons from 0.10.0 to 0.11.0 in /veggieseasons (#1503) Bumps [flutter_launcher_icons](https://github.com/fluttercommunity/flutter_launcher_icons) from 0.10.0 to 0.11.0. - [Release notes](https://github.com/fluttercommunity/flutter_launcher_icons/releases) - [Changelog](https://github.com/fluttercommunity/flutter_launcher_icons/blob/master/CHANGELOG.md) - [Commits](https://github.com/fluttercommunity/flutter_launcher_icons/compare/v0.10.0...v0.11.0) --- updated-dependencies: - dependency-name: flutter_launcher_icons dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- veggieseasons/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/veggieseasons/pubspec.yaml b/veggieseasons/pubspec.yaml index 775333150..8773ef303 100644 --- a/veggieseasons/pubspec.yaml +++ b/veggieseasons/pubspec.yaml @@ -25,7 +25,7 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.1 - flutter_launcher_icons: ^0.10.0 + flutter_launcher_icons: ^0.11.0 flutter: assets: From e93776ae0488c7ff63da7fb8e1418202c6d58bf2 Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Thu, 17 Nov 2022 13:41:21 -0800 Subject: [PATCH 047/134] Cascading context menu (#1501) --- .../context_menus/lib/anywhere_page.dart | 2 +- .../lib/cascading_menu_page.dart | 300 ++++++++++++++++++ experimental/context_menus/lib/main.dart | 8 + .../test/cascading_menu_page_test.dart | 125 ++++++++ 4 files changed, 434 insertions(+), 1 deletion(-) create mode 100644 experimental/context_menus/lib/cascading_menu_page.dart create mode 100644 experimental/context_menus/test/cascading_menu_page_test.dart diff --git a/experimental/context_menus/lib/anywhere_page.dart b/experimental/context_menus/lib/anywhere_page.dart index 8d6b6e790..62ca338d2 100644 --- a/experimental/context_menus/lib/anywhere_page.dart +++ b/experimental/context_menus/lib/anywhere_page.dart @@ -14,7 +14,7 @@ class AnywherePage extends StatelessWidget { static const String route = 'anywhere'; static const String title = 'Context Menu Anywhere Example'; - static const String subtitle = 'A ContextMenu outside of a text field'; + static const String subtitle = 'A context menu outside of a text field'; final PlatformCallback onChangedPlatform; diff --git a/experimental/context_menus/lib/cascading_menu_page.dart b/experimental/context_menus/lib/cascading_menu_page.dart new file mode 100644 index 000000000..5acc0bb39 --- /dev/null +++ b/experimental/context_menus/lib/cascading_menu_page.dart @@ -0,0 +1,300 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'constants.dart'; +import 'context_menu_region.dart'; +import 'platform_selector.dart'; + +// This example is based on the MenuBar docs example: +// https://master-api.flutter.dev/flutter/material/MenuBar-class.html + +class CascadingMenuPage extends StatelessWidget { + const CascadingMenuPage({ + Key? key, + required this.onChangedPlatform, + }) : super(key: key); + + static const String route = 'cascading'; + static const String title = 'Cascading Menu Example'; + static const String subtitle = 'A context menu with nested submenus.'; + + final PlatformCallback onChangedPlatform; + + static const String url = '$kCodeUrl/anywhere_page.dart'; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text(CascadingMenuPage.title), + actions: [ + PlatformSelector( + onChangedPlatform: onChangedPlatform, + ), + IconButton( + icon: const Icon(Icons.code), + onPressed: () async { + if (!await launchUrl(Uri.parse(url))) { + throw 'Could not launch $url'; + } + }, + ), + ], + ), + body: const _MyContextMenuRegion(), + ); + } +} + +class _MyContextMenuRegion extends StatefulWidget { + const _MyContextMenuRegion(); + + @override + State<_MyContextMenuRegion> createState() => _MyContextMenuRegionState(); +} + +class _MyContextMenuRegionState extends State<_MyContextMenuRegion> { + String? _lastSelection; + + Color get backgroundColor => _backgroundColor; + Color _backgroundColor = Colors.red; + set backgroundColor(Color value) { + if (_backgroundColor != value) { + setState(() { + _backgroundColor = value; + }); + } + } + + bool get showingMessage => _showMessage; + bool _showMessage = true; + set showingMessage(bool value) { + if (_showMessage != value) { + setState(() { + _showMessage = value; + }); + } + } + + @override + Widget build(BuildContext context) { + return ContextMenuRegion( + contextMenuBuilder: (BuildContext context, Offset primaryAnchor, + [Offset? secondaryAnchor]) { + return _MyCascadingContextMenu( + anchor: primaryAnchor, + showingMessage: _showMessage, + onToggleMessageVisibility: () { + setState(() { + _showMessage = !_showMessage; + }); + }, + onChangeBackgroundColor: (Color color) { + setState(() { + _backgroundColor = color; + }); + }, + onChangeSelection: (String selection) { + setState(() { + _lastSelection = selection; + }); + }, + ); + }, + child: Container( + alignment: Alignment.center, + color: backgroundColor, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(12.0), + child: Text( + showingMessage + ? 'Right click or long press anywhere to show the cascading menu.' + : '', + style: Theme.of(context).textTheme.headlineSmall, + ), + ), + Text( + _lastSelection != null ? 'Last Selected: $_lastSelection' : ''), + ], + ), + ), + ); + } +} + +/// A class for consolidating the definition of menu entries. +/// +/// This sort of class is not required, but illustrates one way that defining +/// menus could be done. +class MenuEntry { + const MenuEntry( + {required this.label, this.shortcut, this.onPressed, this.menuChildren}) + : assert(menuChildren == null || onPressed == null, + 'onPressed is ignored if menuChildren are provided'); + final String label; + + final MenuSerializableShortcut? shortcut; + final VoidCallback? onPressed; + final List? menuChildren; + + static List build(List selections) { + Widget buildSelection(MenuEntry selection) { + if (selection.menuChildren != null) { + return SubmenuButton( + menuChildren: MenuEntry.build(selection.menuChildren!), + child: Text(selection.label), + ); + } + return MenuItemButton( + shortcut: selection.shortcut, + onPressed: selection.onPressed, + child: Text(selection.label), + ); + } + + return selections.map(buildSelection).toList(); + } + + static Map shortcuts( + List selections) { + final Map result = + {}; + for (final MenuEntry selection in selections) { + if (selection.menuChildren != null) { + result.addAll(MenuEntry.shortcuts(selection.menuChildren!)); + } else { + if (selection.shortcut != null && selection.onPressed != null) { + result[selection.shortcut!] = + VoidCallbackIntent(selection.onPressed!); + } + } + } + return result; + } +} + +typedef _StringCallback = void Function(String string); +typedef _ColorCallback = void Function(Color color); + +class _MyCascadingContextMenu extends StatefulWidget { + const _MyCascadingContextMenu({ + required this.anchor, + required this.onToggleMessageVisibility, + required this.onChangeBackgroundColor, + required this.onChangeSelection, + required this.showingMessage, + }); + + final Offset anchor; + final VoidCallback onToggleMessageVisibility; + final _ColorCallback onChangeBackgroundColor; + final _StringCallback onChangeSelection; + final bool showingMessage; + + @override + State<_MyCascadingContextMenu> createState() => + _MyCascadingContextMenuState(); +} + +class _MyCascadingContextMenuState extends State<_MyCascadingContextMenu> { + ShortcutRegistryEntry? _shortcutsEntry; + + List get _menus { + final List result = [ + MenuEntry( + label: 'About', + onPressed: () { + ContextMenuController.removeAny(); + showAboutDialog( + context: context, + applicationName: 'MenuBar Sample', + applicationVersion: '1.0.0', + ); + widget.onChangeSelection('About'); + }, + ), + MenuEntry( + label: widget.showingMessage ? 'Hide' : 'Show', + onPressed: () { + ContextMenuController.removeAny(); + widget.onChangeSelection( + widget.showingMessage ? 'Hide Message' : 'Show Message'); + widget.onToggleMessageVisibility(); + }, + shortcut: const SingleActivator(LogicalKeyboardKey.keyS, control: true), + ), + // Hides the message, but is only enabled if the message isn't + // already hidden. + MenuEntry( + label: 'Reset', + onPressed: widget.showingMessage + ? () { + ContextMenuController.removeAny(); + widget.onChangeSelection('Reset'); + widget.onToggleMessageVisibility(); + } + : null, + shortcut: const SingleActivator(LogicalKeyboardKey.escape), + ), + MenuEntry( + label: 'Color', + menuChildren: [ + MenuEntry( + label: 'Red', + onPressed: () { + ContextMenuController.removeAny(); + widget.onChangeSelection('Red Background'); + widget.onChangeBackgroundColor(Colors.red); + }, + shortcut: + const SingleActivator(LogicalKeyboardKey.keyR, control: true), + ), + MenuEntry( + label: 'Green', + onPressed: () { + ContextMenuController.removeAny(); + widget.onChangeSelection('Green Background'); + widget.onChangeBackgroundColor(Colors.green); + }, + shortcut: + const SingleActivator(LogicalKeyboardKey.keyG, control: true), + ), + MenuEntry( + label: 'Blue', + onPressed: () { + ContextMenuController.removeAny(); + widget.onChangeSelection('Blue Background'); + widget.onChangeBackgroundColor(Colors.blue); + }, + shortcut: + const SingleActivator(LogicalKeyboardKey.keyB, control: true), + ), + ], + ), + ]; + // (Re-)register the shortcuts with the ShortcutRegistry so that they are + // available to the entire application, and update them if they've changed. + _shortcutsEntry?.dispose(); + _shortcutsEntry = + ShortcutRegistry.of(context).addAll(MenuEntry.shortcuts(result)); + return result; + } + + @override + void dispose() { + _shortcutsEntry?.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return DesktopTextSelectionToolbar( + anchor: widget.anchor, + children: MenuEntry.build(_menus), + ); + } +} diff --git a/experimental/context_menus/lib/main.dart b/experimental/context_menus/lib/main.dart index e7e656471..0991602b2 100644 --- a/experimental/context_menus/lib/main.dart +++ b/experimental/context_menus/lib/main.dart @@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'anywhere_page.dart'; +import 'cascading_menu_page.dart'; import 'custom_buttons_page.dart'; import 'default_values_page.dart'; import 'email_button_page.dart'; @@ -66,6 +67,8 @@ class _MyAppState extends State { GlobalSelectionPage(onChangedPlatform: onChangedPlatform), DefaultValuesPage.route: (BuildContext context) => DefaultValuesPage(onChangedPlatform: onChangedPlatform), + CascadingMenuPage.route: (BuildContext context) => + CascadingMenuPage(onChangedPlatform: onChangedPlatform), }, ); } @@ -137,6 +140,11 @@ class MyHomePage extends StatelessWidget { title: DefaultValuesPage.title, subtitle: DefaultValuesPage.subtitle, ), + _MyListItem( + route: CascadingMenuPage.route, + title: CascadingMenuPage.title, + subtitle: CascadingMenuPage.subtitle, + ), _MyListItem( route: FullPage.route, title: FullPage.title, diff --git a/experimental/context_menus/test/cascading_menu_page_test.dart b/experimental/context_menus/test/cascading_menu_page_test.dart new file mode 100644 index 000000000..3ec39e127 --- /dev/null +++ b/experimental/context_menus/test/cascading_menu_page_test.dart @@ -0,0 +1,125 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:context_menus/main.dart'; +import 'package:context_menus/cascading_menu_page.dart'; + +void main() { + testWidgets('Can show and use the cascading menu', + (WidgetTester tester) async { + await tester.pumpWidget(const MyApp()); + + // Navigate to the CascadingMenuPage example. + await tester.dragUntilVisible( + find.text(CascadingMenuPage.title), + find.byType(ListView), + const Offset(0.0, -300.0), + ); + await tester.tap(find.text(CascadingMenuPage.title)); + await tester.pumpAndSettle(); + + const String message = + 'Right click or long press anywhere to show the cascading menu.'; + expect(find.text(message), findsOneWidget); + + // Right click on the background of the app to show the cascading context + // menu. + TestGesture gesture = await tester.startGesture( + const Offset(0.0, 100.0), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + + // The custom cascading context menu is shown. + expect(find.byType(DesktopTextSelectionToolbar), findsOneWidget); + expect(find.text('About'), findsOneWidget); + expect(find.text('Show'), findsNothing); + expect(find.text('Hide'), findsOneWidget); + expect(find.text('Reset'), findsOneWidget); + expect(find.text('Color'), findsOneWidget); + + // Click "Hide Message" and the message and menu are hidden. + await tester.tap(find.text('Hide')); + await tester.pumpAndSettle(); + expect(find.byType(DesktopTextSelectionToolbar), findsNothing); + expect(find.text(message), findsNothing); + + // Right click to show the menu again. + gesture = await tester.startGesture( + const Offset(0.0, 100.0), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + expect(find.byType(DesktopTextSelectionToolbar), findsOneWidget); + expect(find.text('About'), findsOneWidget); + expect(find.text('Show'), findsOneWidget); + expect(find.text('Hide'), findsNothing); + expect(find.text('Reset'), findsOneWidget); + expect(find.text('Color'), findsOneWidget); + + // Use the shortcut to show the message again. + await tester.sendKeyDownEvent(LogicalKeyboardKey.control); + await tester.sendKeyDownEvent(LogicalKeyboardKey.keyS); + await tester.sendKeyUpEvent(LogicalKeyboardKey.control); + await tester.sendKeyUpEvent(LogicalKeyboardKey.keyS); + await tester.pumpAndSettle(); + expect(find.byType(DesktopTextSelectionToolbar), findsNothing); + expect(find.text(message), findsOneWidget); + + // Right click to show the menu again. + gesture = await tester.startGesture( + const Offset(0.0, 100.0), + kind: PointerDeviceKind.mouse, + buttons: kSecondaryMouseButton, + ); + await tester.pump(); + await gesture.up(); + await gesture.removePointer(); + await tester.pumpAndSettle(); + expect(find.byType(DesktopTextSelectionToolbar), findsOneWidget); + expect(find.text('About'), findsOneWidget); + expect(find.text('Show'), findsNothing); + expect(find.text('Hide'), findsOneWidget); + expect(find.text('Reset'), findsOneWidget); + expect(find.text('Color'), findsOneWidget); + expect(find.text('Red'), findsNothing); + expect(find.text('Green'), findsNothing); + expect(find.text('Blue'), findsNothing); + + // Hover Background Color. + gesture = await tester.startGesture( + //tester.getCenter(find.text('Color')), + const Offset(0.0, 100), + kind: PointerDeviceKind.mouse, + ); + await tester.pump(); + await gesture.moveTo(tester.getCenter(find.text('Color'))); + await tester.pumpAndSettle(); + + // Background colors are shown. + expect(find.text('Red'), findsOneWidget); + expect(find.text('Green'), findsOneWidget); + expect(find.text('Blue'), findsOneWidget); + + // Select green. + await gesture.moveTo(tester.getCenter(find.text('Green'))); + await tester.pump(); + await tester.tap(find.text('Green')); + await tester.pump(); + await gesture.removePointer(); + + // The menu is gone and the UI shows green was selected. + expect(find.byType(DesktopTextSelectionToolbar), findsNothing); + expect(find.text('Last Selected: Green Background'), findsOneWidget); + }); +} From 88145ea4ca56e3676f7ab422f314c4a60e7b0e7d Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Wed, 30 Nov 2022 11:09:16 +1000 Subject: [PATCH 048/134] Drop `github_dataviz` (#1508) * Drop `github_dataviz` * Drop from `samples_index` --- web/github_dataviz/LICENSE | 27 - web/github_dataviz/README.md | 11 - web/github_dataviz/analysis_options.yaml | 6 - web/github_dataviz/assets/preview.png | Bin 13672 -> 0 bytes web/github_dataviz/github_data/comments.tsv | 178 - web/github_dataviz/github_data/commits.tsv | 177 - .../github_data/contributors.json | 142902 --------------- web/github_dataviz/github_data/forks.tsv | 175 - .../github_data/pull_requests.tsv | 177 - web/github_dataviz/github_data/stars.tsv | 206 - web/github_dataviz/lib/catmull.dart | 79 - web/github_dataviz/lib/constants.dart | 8 - .../lib/data/contribution_data.dart | 14 - web/github_dataviz/lib/data/data_series.dart | 6 - .../lib/data/stat_for_week.dart | 6 - web/github_dataviz/lib/data/user.dart | 12 - .../lib/data/user_contribution.dart | 18 - web/github_dataviz/lib/data/week_label.dart | 23 - web/github_dataviz/lib/layered_chart.dart | 336 - web/github_dataviz/lib/main.dart | 259 - web/github_dataviz/lib/mathutils.dart | 48 - web/github_dataviz/lib/timeline.dart | 227 - web/github_dataviz/pubspec.yaml | 18 - web/github_dataviz/web/index.html | 11 - web/samples_index/lib/src/samples.yaml | 17 - 25 files changed, 144941 deletions(-) delete mode 100644 web/github_dataviz/LICENSE delete mode 100644 web/github_dataviz/README.md delete mode 100644 web/github_dataviz/analysis_options.yaml delete mode 100644 web/github_dataviz/assets/preview.png delete mode 100644 web/github_dataviz/github_data/comments.tsv delete mode 100644 web/github_dataviz/github_data/commits.tsv delete mode 100644 web/github_dataviz/github_data/contributors.json delete mode 100644 web/github_dataviz/github_data/forks.tsv delete mode 100644 web/github_dataviz/github_data/pull_requests.tsv delete mode 100644 web/github_dataviz/github_data/stars.tsv delete mode 100644 web/github_dataviz/lib/catmull.dart delete mode 100644 web/github_dataviz/lib/constants.dart delete mode 100644 web/github_dataviz/lib/data/contribution_data.dart delete mode 100644 web/github_dataviz/lib/data/data_series.dart delete mode 100644 web/github_dataviz/lib/data/stat_for_week.dart delete mode 100644 web/github_dataviz/lib/data/user.dart delete mode 100644 web/github_dataviz/lib/data/user_contribution.dart delete mode 100644 web/github_dataviz/lib/data/week_label.dart delete mode 100644 web/github_dataviz/lib/layered_chart.dart delete mode 100644 web/github_dataviz/lib/main.dart delete mode 100644 web/github_dataviz/lib/mathutils.dart delete mode 100644 web/github_dataviz/lib/timeline.dart delete mode 100644 web/github_dataviz/pubspec.yaml delete mode 100644 web/github_dataviz/web/index.html diff --git a/web/github_dataviz/LICENSE b/web/github_dataviz/LICENSE deleted file mode 100644 index bc67b8f95..000000000 --- a/web/github_dataviz/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright 2019 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/web/github_dataviz/README.md b/web/github_dataviz/README.md deleted file mode 100644 index 77b6877b8..000000000 --- a/web/github_dataviz/README.md +++ /dev/null @@ -1,11 +0,0 @@ -A visualization for -[Flutter GitHub repository](https://github.com/flutter/flutter/) metadata. - -Created for Google by [Larva Labs](http://larvalabs.com/), a team of creative -technologists who make things for Android, iPhone, and the Web. - -## Data Notes - -The data starts the week of Oct 19, 2014 which is the first commit. This is week -0 in our data arrays, but it is week 43 in 2014. Year boundaries are then offset -by 9 weeks. diff --git a/web/github_dataviz/analysis_options.yaml b/web/github_dataviz/analysis_options.yaml deleted file mode 100644 index 3f238dcdc..000000000 --- a/web/github_dataviz/analysis_options.yaml +++ /dev/null @@ -1,6 +0,0 @@ -include: package:flutter_lints/flutter.yaml - -linter: - rules: - avoid_print: false - prefer_single_quotes: true diff --git a/web/github_dataviz/assets/preview.png b/web/github_dataviz/assets/preview.png deleted file mode 100644 index f74999be4feebac8204c17d46c3641968db7a34f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13672 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 q)!^=QgLfeOw~k(GHo?Fn!S<HGroe8o4 diff --git a/web/github_dataviz/github_data/comments.tsv b/web/github_dataviz/github_data/comments.tsv deleted file mode 100644 index 63893c044..000000000 --- a/web/github_dataviz/github_data/comments.tsv +++ /dev/null @@ -1,178 +0,0 @@ -54 30 -55 448 -56 286 -57 156 -58 293 -59 289 -60 230 -61 96 -62 83 -63 254 -64 254 -65 227 -66 344 -67 337 -68 428 -69 487 -70 547 -71 446 -72 425 -73 331 -74 324 -75 399 -76 399 -77 301 -78 318 -79 283 -80 351 -81 428 -82 452 -83 447 -84 310 -85 310 -86 270 -87 331 -88 144 -89 150 -90 176 -91 218 -92 253 -93 302 -94 276 -95 452 -96 347 -97 340 -98 246 -99 392 -100 430 -101 298 -102 267 -103 233 -104 316 -105 307 -106 416 -107 268 -108 335 -109 213 -110 342 -111 227 -112 166 -113 56 -114 63 -115 230 -116 362 -117 248 -118 550 -119 809 -120 677 -121 667 -122 425 -123 544 -124 420 -125 457 -126 415 -127 480 -128 569 -129 402 -130 459 -131 466 -132 523 -133 634 -134 479 -135 564 -136 436 -137 519 -138 808 -139 589 -140 367 -141 169 -142 316 -143 370 -144 334 -145 281 -146 256 -147 357 -148 293 -149 349 -150 300 -151 342 -152 291 -153 327 -154 329 -155 346 -156 386 -157 318 -158 310 -159 361 -160 360 -161 352 -162 474 -163 495 -164 569 -165 426 -166 89 -167 17 -171 208 -172 502 -173 565 -174 273 -175 1002 -176 920 -177 808 -178 870 -179 808 -180 537 -181 745 -182 717 -183 778 -184 676 -185 562 -186 708 -187 957 -188 853 -189 703 -190 1013 -191 1040 -192 759 -193 811 -194 1086 -195 1031 -196 1080 -197 1159 -198 622 -199 892 -200 1188 -201 1273 -202 1214 -203 1103 -204 876 -205 1248 -206 956 -207 1119 -208 1218 -209 1126 -210 1058 -211 872 -212 1005 -213 805 -214 1146 -215 1132 -216 1404 -217 1436 -218 819 -219 2152 -220 1651 -221 1418 -222 1387 -223 1496 -224 1262 -225 1784 -226 1681 -227 1401 -228 1150 -229 1269 -230 1162 -231 1136 -232 1045 -233 1370 -234 41 diff --git a/web/github_dataviz/github_data/commits.tsv b/web/github_dataviz/github_data/commits.tsv deleted file mode 100644 index 99f30951e..000000000 --- a/web/github_dataviz/github_data/commits.tsv +++ /dev/null @@ -1,177 +0,0 @@ -48 1 -53 1 -54 16 -55 70 -56 78 -57 46 -58 74 -59 67 -60 50 -61 10 -62 9 -63 47 -64 53 -65 55 -66 49 -67 59 -68 96 -69 67 -70 92 -71 75 -72 88 -73 69 -74 69 -75 84 -76 82 -77 59 -78 63 -79 67 -80 62 -81 60 -82 76 -83 63 -84 58 -85 55 -86 44 -87 64 -88 27 -89 24 -90 32 -91 46 -92 58 -93 53 -94 56 -95 57 -96 37 -97 41 -98 27 -99 52 -100 63 -101 51 -102 49 -103 44 -104 65 -105 55 -106 65 -107 53 -108 47 -109 34 -110 43 -111 34 -112 24 -113 5 -115 32 -116 62 -117 39 -118 88 -119 85 -120 100 -121 97 -122 65 -123 77 -124 71 -125 77 -126 63 -127 57 -128 84 -129 44 -130 68 -131 58 -132 86 -133 96 -134 56 -135 61 -136 42 -137 45 -138 66 -139 59 -140 44 -141 15 -142 47 -143 50 -144 17 -145 36 -146 27 -147 18 -148 57 -149 77 -150 38 -151 50 -152 40 -153 48 -154 45 -155 35 -156 55 -157 33 -158 48 -159 53 -160 32 -161 46 -162 67 -163 70 -164 70 -165 48 -166 3 -171 20 -172 71 -173 79 -174 38 -175 58 -176 64 -177 63 -178 70 -179 43 -180 25 -181 48 -182 60 -183 62 -184 69 -185 65 -186 44 -187 41 -188 56 -189 76 -190 61 -191 46 -192 49 -193 30 -194 55 -195 51 -196 50 -197 68 -198 51 -199 52 -200 52 -201 70 -202 78 -203 51 -204 46 -205 58 -206 75 -207 60 -208 69 -209 62 -210 75 -211 86 -212 75 -213 31 -214 31 -215 2 -216 60 -217 60 -218 16 -219 60 -220 90 -221 77 -222 50 -223 49 -224 72 -225 86 -226 64 -227 101 -228 69 -229 87 -230 80 -231 82 -232 81 -233 74 diff --git a/web/github_dataviz/github_data/contributors.json b/web/github_dataviz/github_data/contributors.json deleted file mode 100644 index ef0615eea..000000000 --- a/web/github_dataviz/github_data/contributors.json +++ /dev/null @@ -1,142902 +0,0 @@ -[ - { - "total": 5, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 78, - "d": 66, - "c": 3 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 29, - "d": 12, - "c": 2 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "jamesderlin", - "id": 17391434, - "node_id": "MDQ6VXNlcjE3MzkxNDM0", - "avatar_url": "https://avatars3.githubusercontent.com/u/17391434?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jamesderlin", - "html_url": "https://github.com/jamesderlin", - "followers_url": "https://api.github.com/users/jamesderlin/followers", - "following_url": "https://api.github.com/users/jamesderlin/following{/other_user}", - "gists_url": "https://api.github.com/users/jamesderlin/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jamesderlin/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jamesderlin/subscriptions", - "organizations_url": "https://api.github.com/users/jamesderlin/orgs", - "repos_url": "https://api.github.com/users/jamesderlin/repos", - "events_url": "https://api.github.com/users/jamesderlin/events{/privacy}", - "received_events_url": "https://api.github.com/users/jamesderlin/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 5, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 50, - "d": 50, - "c": 2 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 97, - "d": 224, - "c": 1 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 62, - "d": 0, - "c": 1 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 183, - "d": 33, - "c": 1 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "tianlunlee", - "id": 13839358, - "node_id": "MDQ6VXNlcjEzODM5MzU4", - "avatar_url": "https://avatars3.githubusercontent.com/u/13839358?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/tianlunlee", - "html_url": "https://github.com/tianlunlee", - "followers_url": "https://api.github.com/users/tianlunlee/followers", - "following_url": "https://api.github.com/users/tianlunlee/following{/other_user}", - "gists_url": "https://api.github.com/users/tianlunlee/gists{/gist_id}", - "starred_url": "https://api.github.com/users/tianlunlee/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/tianlunlee/subscriptions", - "organizations_url": "https://api.github.com/users/tianlunlee/orgs", - "repos_url": "https://api.github.com/users/tianlunlee/repos", - "events_url": "https://api.github.com/users/tianlunlee/events{/privacy}", - "received_events_url": "https://api.github.com/users/tianlunlee/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 5, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 282, - "d": 5, - "c": 1 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 41, - "d": 0, - "c": 1 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 118, - "d": 1, - "c": 1 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 52, - "d": 0, - "c": 1 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "creativecreatorormaybenot", - "id": 19204050, - "node_id": "MDQ6VXNlcjE5MjA0MDUw", - "avatar_url": "https://avatars2.githubusercontent.com/u/19204050?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/creativecreatorormaybenot", - "html_url": "https://github.com/creativecreatorormaybenot", - "followers_url": "https://api.github.com/users/creativecreatorormaybenot/followers", - "following_url": "https://api.github.com/users/creativecreatorormaybenot/following{/other_user}", - "gists_url": "https://api.github.com/users/creativecreatorormaybenot/gists{/gist_id}", - "starred_url": "https://api.github.com/users/creativecreatorormaybenot/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/creativecreatorormaybenot/subscriptions", - "organizations_url": "https://api.github.com/users/creativecreatorormaybenot/orgs", - "repos_url": "https://api.github.com/users/creativecreatorormaybenot/repos", - "events_url": "https://api.github.com/users/creativecreatorormaybenot/events{/privacy}", - "received_events_url": "https://api.github.com/users/creativecreatorormaybenot/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 5, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 41, - "d": 7, - "c": 2 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 3, - "d": 3, - "c": 3 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "sivachandra", - "id": 635361, - "node_id": "MDQ6VXNlcjYzNTM2MQ==", - "avatar_url": "https://avatars1.githubusercontent.com/u/635361?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/sivachandra", - "html_url": "https://github.com/sivachandra", - "followers_url": "https://api.github.com/users/sivachandra/followers", - "following_url": "https://api.github.com/users/sivachandra/following{/other_user}", - "gists_url": "https://api.github.com/users/sivachandra/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sivachandra/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sivachandra/subscriptions", - "organizations_url": "https://api.github.com/users/sivachandra/orgs", - "repos_url": "https://api.github.com/users/sivachandra/repos", - "events_url": "https://api.github.com/users/sivachandra/events{/privacy}", - "received_events_url": "https://api.github.com/users/sivachandra/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 5, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 34, - "d": 1, - "c": 1 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 67, - "d": 3, - "c": 1 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 59, - "d": 0, - "c": 1 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "Skylled", - "id": 13603296, - "node_id": "MDQ6VXNlcjEzNjAzMjk2", - "avatar_url": "https://avatars3.githubusercontent.com/u/13603296?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Skylled", - "html_url": "https://github.com/Skylled", - "followers_url": "https://api.github.com/users/Skylled/followers", - "following_url": "https://api.github.com/users/Skylled/following{/other_user}", - "gists_url": "https://api.github.com/users/Skylled/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Skylled/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Skylled/subscriptions", - "organizations_url": "https://api.github.com/users/Skylled/orgs", - "repos_url": "https://api.github.com/users/Skylled/repos", - "events_url": "https://api.github.com/users/Skylled/events{/privacy}", - "received_events_url": "https://api.github.com/users/Skylled/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 5, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 74, - "d": 75, - "c": 3 - }, - { - "w": 1477180800, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1477785600, - "a": 3, - "d": 5, - "c": 1 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "warent", - "id": 13342266, - "node_id": "MDQ6VXNlcjEzMzQyMjY2", - "avatar_url": "https://avatars0.githubusercontent.com/u/13342266?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/warent", - "html_url": "https://github.com/warent", - "followers_url": "https://api.github.com/users/warent/followers", - "following_url": "https://api.github.com/users/warent/following{/other_user}", - "gists_url": "https://api.github.com/users/warent/gists{/gist_id}", - "starred_url": "https://api.github.com/users/warent/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/warent/subscriptions", - "organizations_url": "https://api.github.com/users/warent/orgs", - "repos_url": "https://api.github.com/users/warent/repos", - "events_url": "https://api.github.com/users/warent/events{/privacy}", - "received_events_url": "https://api.github.com/users/warent/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 5, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 8, - "d": 7, - "c": 2 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 57, - "d": 17, - "c": 2 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "eukreign", - "id": 69960, - "node_id": "MDQ6VXNlcjY5OTYw", - "avatar_url": "https://avatars1.githubusercontent.com/u/69960?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/eukreign", - "html_url": "https://github.com/eukreign", - "followers_url": "https://api.github.com/users/eukreign/followers", - "following_url": "https://api.github.com/users/eukreign/following{/other_user}", - "gists_url": "https://api.github.com/users/eukreign/gists{/gist_id}", - "starred_url": "https://api.github.com/users/eukreign/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/eukreign/subscriptions", - "organizations_url": "https://api.github.com/users/eukreign/orgs", - "repos_url": "https://api.github.com/users/eukreign/repos", - "events_url": "https://api.github.com/users/eukreign/events{/privacy}", - "received_events_url": "https://api.github.com/users/eukreign/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 5, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 48, - "d": 61, - "c": 4 - }, - { - "w": 1443916800, - "a": 18, - "d": 10, - "c": 1 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "mdakin", - "id": 1647551, - "node_id": "MDQ6VXNlcjE2NDc1NTE=", - "avatar_url": "https://avatars1.githubusercontent.com/u/1647551?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/mdakin", - "html_url": "https://github.com/mdakin", - "followers_url": "https://api.github.com/users/mdakin/followers", - "following_url": "https://api.github.com/users/mdakin/following{/other_user}", - "gists_url": "https://api.github.com/users/mdakin/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mdakin/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mdakin/subscriptions", - "organizations_url": "https://api.github.com/users/mdakin/orgs", - "repos_url": "https://api.github.com/users/mdakin/repos", - "events_url": "https://api.github.com/users/mdakin/events{/privacy}", - "received_events_url": "https://api.github.com/users/mdakin/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 6, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 65, - "d": 58, - "c": 1 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 1, - "c": 1 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 26, - "d": 9, - "c": 1 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 139, - "d": 139, - "c": 1 - }, - { - "w": 1554595200, - "a": 55, - "d": 111, - "c": 1 - } - ], - "author": { - "login": "timsneath", - "id": 2319867, - "node_id": "MDQ6VXNlcjIzMTk4Njc=", - "avatar_url": "https://avatars3.githubusercontent.com/u/2319867?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/timsneath", - "html_url": "https://github.com/timsneath", - "followers_url": "https://api.github.com/users/timsneath/followers", - "following_url": "https://api.github.com/users/timsneath/following{/other_user}", - "gists_url": "https://api.github.com/users/timsneath/gists{/gist_id}", - "starred_url": "https://api.github.com/users/timsneath/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/timsneath/subscriptions", - "organizations_url": "https://api.github.com/users/timsneath/orgs", - "repos_url": "https://api.github.com/users/timsneath/repos", - "events_url": "https://api.github.com/users/timsneath/events{/privacy}", - "received_events_url": "https://api.github.com/users/timsneath/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 6, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 312, - "d": 47, - "c": 1 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 222, - "d": 203, - "c": 1 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 73, - "d": 25, - "c": 1 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 254, - "d": 173, - "c": 1 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 125, - "d": 89, - "c": 1 - }, - { - "w": 1547942400, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "tonyzhao1", - "id": 42278985, - "node_id": "MDQ6VXNlcjQyMjc4OTg1", - "avatar_url": "https://avatars1.githubusercontent.com/u/42278985?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/tonyzhao1", - "html_url": "https://github.com/tonyzhao1", - "followers_url": "https://api.github.com/users/tonyzhao1/followers", - "following_url": "https://api.github.com/users/tonyzhao1/following{/other_user}", - "gists_url": "https://api.github.com/users/tonyzhao1/gists{/gist_id}", - "starred_url": "https://api.github.com/users/tonyzhao1/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/tonyzhao1/subscriptions", - "organizations_url": "https://api.github.com/users/tonyzhao1/orgs", - "repos_url": "https://api.github.com/users/tonyzhao1/repos", - "events_url": "https://api.github.com/users/tonyzhao1/events{/privacy}", - "received_events_url": "https://api.github.com/users/tonyzhao1/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 6, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 533, - "d": 38, - "c": 1 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 889, - "d": 111, - "c": 1 - }, - { - "w": 1534636800, - "a": 297, - "d": 0, - "c": 1 - }, - { - "w": 1535241600, - "a": 723, - "d": 92, - "c": 1 - }, - { - "w": 1535846400, - "a": 7, - "d": 4, - "c": 1 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 1474, - "d": 99, - "c": 1 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "doxuanviet1996", - "id": 9079172, - "node_id": "MDQ6VXNlcjkwNzkxNzI=", - "avatar_url": "https://avatars0.githubusercontent.com/u/9079172?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/doxuanviet1996", - "html_url": "https://github.com/doxuanviet1996", - "followers_url": "https://api.github.com/users/doxuanviet1996/followers", - "following_url": "https://api.github.com/users/doxuanviet1996/following{/other_user}", - "gists_url": "https://api.github.com/users/doxuanviet1996/gists{/gist_id}", - "starred_url": "https://api.github.com/users/doxuanviet1996/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/doxuanviet1996/subscriptions", - "organizations_url": "https://api.github.com/users/doxuanviet1996/orgs", - "repos_url": "https://api.github.com/users/doxuanviet1996/repos", - "events_url": "https://api.github.com/users/doxuanviet1996/events{/privacy}", - "received_events_url": "https://api.github.com/users/doxuanviet1996/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 6, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 10, - "d": 0, - "c": 1 - }, - { - "w": 1457827200, - "a": 40, - "d": 7, - "c": 1 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 17, - "d": 3, - "c": 4 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "qchong", - "id": 5986149, - "node_id": "MDQ6VXNlcjU5ODYxNDk=", - "avatar_url": "https://avatars3.githubusercontent.com/u/5986149?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/qchong", - "html_url": "https://github.com/qchong", - "followers_url": "https://api.github.com/users/qchong/followers", - "following_url": "https://api.github.com/users/qchong/following{/other_user}", - "gists_url": "https://api.github.com/users/qchong/gists{/gist_id}", - "starred_url": "https://api.github.com/users/qchong/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/qchong/subscriptions", - "organizations_url": "https://api.github.com/users/qchong/orgs", - "repos_url": "https://api.github.com/users/qchong/repos", - "events_url": "https://api.github.com/users/qchong/events{/privacy}", - "received_events_url": "https://api.github.com/users/qchong/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 6, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 16, - "d": 5, - "c": 2 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 3, - "d": 3, - "c": 2 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "afandria", - "id": 2432033, - "node_id": "MDQ6VXNlcjI0MzIwMzM=", - "avatar_url": "https://avatars2.githubusercontent.com/u/2432033?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/afandria", - "html_url": "https://github.com/afandria", - "followers_url": "https://api.github.com/users/afandria/followers", - "following_url": "https://api.github.com/users/afandria/following{/other_user}", - "gists_url": "https://api.github.com/users/afandria/gists{/gist_id}", - "starred_url": "https://api.github.com/users/afandria/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/afandria/subscriptions", - "organizations_url": "https://api.github.com/users/afandria/orgs", - "repos_url": "https://api.github.com/users/afandria/repos", - "events_url": "https://api.github.com/users/afandria/events{/privacy}", - "received_events_url": "https://api.github.com/users/afandria/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 7, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 16, - "d": 6, - "c": 1 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 50, - "d": 1, - "c": 1 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 38, - "d": 1, - "c": 1 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 65, - "d": 3, - "c": 1 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 18, - "d": 2, - "c": 1 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 21, - "d": 1, - "c": 1 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 108, - "d": 53, - "c": 1 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "ds84182", - "id": 2268005, - "node_id": "MDQ6VXNlcjIyNjgwMDU=", - "avatar_url": "https://avatars0.githubusercontent.com/u/2268005?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/ds84182", - "html_url": "https://github.com/ds84182", - "followers_url": "https://api.github.com/users/ds84182/followers", - "following_url": "https://api.github.com/users/ds84182/following{/other_user}", - "gists_url": "https://api.github.com/users/ds84182/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ds84182/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ds84182/subscriptions", - "organizations_url": "https://api.github.com/users/ds84182/orgs", - "repos_url": "https://api.github.com/users/ds84182/repos", - "events_url": "https://api.github.com/users/ds84182/events{/privacy}", - "received_events_url": "https://api.github.com/users/ds84182/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 7, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 75, - "d": 16, - "c": 2 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 3, - "d": 14, - "c": 1 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 26, - "d": 33, - "c": 1 - }, - { - "w": 1552780800, - "a": 22, - "d": 36, - "c": 1 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "fkorotkov", - "id": 989066, - "node_id": "MDQ6VXNlcjk4OTA2Ng==", - "avatar_url": "https://avatars3.githubusercontent.com/u/989066?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/fkorotkov", - "html_url": "https://github.com/fkorotkov", - "followers_url": "https://api.github.com/users/fkorotkov/followers", - "following_url": "https://api.github.com/users/fkorotkov/following{/other_user}", - "gists_url": "https://api.github.com/users/fkorotkov/gists{/gist_id}", - "starred_url": "https://api.github.com/users/fkorotkov/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/fkorotkov/subscriptions", - "organizations_url": "https://api.github.com/users/fkorotkov/orgs", - "repos_url": "https://api.github.com/users/fkorotkov/repos", - "events_url": "https://api.github.com/users/fkorotkov/events{/privacy}", - "received_events_url": "https://api.github.com/users/fkorotkov/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 7, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 4, - "d": 0, - "c": 1 - }, - { - "w": 1512259200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 35, - "d": 0, - "c": 1 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 111, - "d": 19, - "c": 2 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 52, - "d": 0, - "c": 1 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "mjohnsullivan", - "id": 102488, - "node_id": "MDQ6VXNlcjEwMjQ4OA==", - "avatar_url": "https://avatars3.githubusercontent.com/u/102488?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/mjohnsullivan", - "html_url": "https://github.com/mjohnsullivan", - "followers_url": "https://api.github.com/users/mjohnsullivan/followers", - "following_url": "https://api.github.com/users/mjohnsullivan/following{/other_user}", - "gists_url": "https://api.github.com/users/mjohnsullivan/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mjohnsullivan/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mjohnsullivan/subscriptions", - "organizations_url": "https://api.github.com/users/mjohnsullivan/orgs", - "repos_url": "https://api.github.com/users/mjohnsullivan/repos", - "events_url": "https://api.github.com/users/mjohnsullivan/events{/privacy}", - "received_events_url": "https://api.github.com/users/mjohnsullivan/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 7, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 274, - "d": 235, - "c": 3 - }, - { - "w": 1520726400, - "a": 10, - "d": 6, - "c": 1 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 60, - "d": 42, - "c": 1 - }, - { - "w": 1528588800, - "a": 5, - "d": 5, - "c": 1 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 43, - "d": 0, - "c": 1 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "keertip", - "id": 2192312, - "node_id": "MDQ6VXNlcjIxOTIzMTI=", - "avatar_url": "https://avatars2.githubusercontent.com/u/2192312?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/keertip", - "html_url": "https://github.com/keertip", - "followers_url": "https://api.github.com/users/keertip/followers", - "following_url": "https://api.github.com/users/keertip/following{/other_user}", - "gists_url": "https://api.github.com/users/keertip/gists{/gist_id}", - "starred_url": "https://api.github.com/users/keertip/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/keertip/subscriptions", - "organizations_url": "https://api.github.com/users/keertip/orgs", - "repos_url": "https://api.github.com/users/keertip/repos", - "events_url": "https://api.github.com/users/keertip/events{/privacy}", - "received_events_url": "https://api.github.com/users/keertip/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 7, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 38, - "d": 39, - "c": 1 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 21, - "d": 7, - "c": 1 - }, - { - "w": 1515283200, - "a": 43, - "d": 39, - "c": 2 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1531612800, - "a": 77, - "d": 80, - "c": 1 - }, - { - "w": 1532217600, - "a": 81, - "d": 80, - "c": 1 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "leafpetersen", - "id": 8484504, - "node_id": "MDQ6VXNlcjg0ODQ1MDQ=", - "avatar_url": "https://avatars1.githubusercontent.com/u/8484504?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/leafpetersen", - "html_url": "https://github.com/leafpetersen", - "followers_url": "https://api.github.com/users/leafpetersen/followers", - "following_url": "https://api.github.com/users/leafpetersen/following{/other_user}", - "gists_url": "https://api.github.com/users/leafpetersen/gists{/gist_id}", - "starred_url": "https://api.github.com/users/leafpetersen/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/leafpetersen/subscriptions", - "organizations_url": "https://api.github.com/users/leafpetersen/orgs", - "repos_url": "https://api.github.com/users/leafpetersen/repos", - "events_url": "https://api.github.com/users/leafpetersen/events{/privacy}", - "received_events_url": "https://api.github.com/users/leafpetersen/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 7, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 6, - "d": 0, - "c": 1 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 33, - "d": 0, - "c": 4 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 3, - "d": 0, - "c": 2 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "ojanvafai", - "id": 1607171, - "node_id": "MDQ6VXNlcjE2MDcxNzE=", - "avatar_url": "https://avatars1.githubusercontent.com/u/1607171?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/ojanvafai", - "html_url": "https://github.com/ojanvafai", - "followers_url": "https://api.github.com/users/ojanvafai/followers", - "following_url": "https://api.github.com/users/ojanvafai/following{/other_user}", - "gists_url": "https://api.github.com/users/ojanvafai/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ojanvafai/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ojanvafai/subscriptions", - "organizations_url": "https://api.github.com/users/ojanvafai/orgs", - "repos_url": "https://api.github.com/users/ojanvafai/repos", - "events_url": "https://api.github.com/users/ojanvafai/events{/privacy}", - "received_events_url": "https://api.github.com/users/ojanvafai/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 7, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 335, - "d": 12, - "c": 3 - }, - { - "w": 1426377600, - "a": 36, - "d": 10, - "c": 2 - }, - { - "w": 1426982400, - "a": 60, - "d": 16, - "c": 2 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "viettrungluu-cr", - "id": 7061740, - "node_id": "MDQ6VXNlcjcwNjE3NDA=", - "avatar_url": "https://avatars0.githubusercontent.com/u/7061740?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/viettrungluu-cr", - "html_url": "https://github.com/viettrungluu-cr", - "followers_url": "https://api.github.com/users/viettrungluu-cr/followers", - "following_url": "https://api.github.com/users/viettrungluu-cr/following{/other_user}", - "gists_url": "https://api.github.com/users/viettrungluu-cr/gists{/gist_id}", - "starred_url": "https://api.github.com/users/viettrungluu-cr/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/viettrungluu-cr/subscriptions", - "organizations_url": "https://api.github.com/users/viettrungluu-cr/orgs", - "repos_url": "https://api.github.com/users/viettrungluu-cr/repos", - "events_url": "https://api.github.com/users/viettrungluu-cr/events{/privacy}", - "received_events_url": "https://api.github.com/users/viettrungluu-cr/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 8, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 17, - "d": 9, - "c": 1 - }, - { - "w": 1551571200, - "a": 129, - "d": 11, - "c": 1 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 393, - "d": 243, - "c": 4 - }, - { - "w": 1554595200, - "a": 32, - "d": 32, - "c": 2 - } - ], - "author": { - "login": "dkwingsmt", - "id": 1596656, - "node_id": "MDQ6VXNlcjE1OTY2NTY=", - "avatar_url": "https://avatars2.githubusercontent.com/u/1596656?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/dkwingsmt", - "html_url": "https://github.com/dkwingsmt", - "followers_url": "https://api.github.com/users/dkwingsmt/followers", - "following_url": "https://api.github.com/users/dkwingsmt/following{/other_user}", - "gists_url": "https://api.github.com/users/dkwingsmt/gists{/gist_id}", - "starred_url": "https://api.github.com/users/dkwingsmt/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/dkwingsmt/subscriptions", - "organizations_url": "https://api.github.com/users/dkwingsmt/orgs", - "repos_url": "https://api.github.com/users/dkwingsmt/repos", - "events_url": "https://api.github.com/users/dkwingsmt/events{/privacy}", - "received_events_url": "https://api.github.com/users/dkwingsmt/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 8, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 385, - "d": 403, - "c": 1 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 72, - "d": 0, - "c": 1 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 27, - "d": 7, - "c": 1 - }, - { - "w": 1536451200, - "a": 123, - "d": 1, - "c": 1 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 61, - "d": 0, - "c": 1 - }, - { - "w": 1547942400, - "a": 370, - "d": 17, - "c": 1 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 321, - "d": 9, - "c": 2 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "willlarche", - "id": 1271525, - "node_id": "MDQ6VXNlcjEyNzE1MjU=", - "avatar_url": "https://avatars1.githubusercontent.com/u/1271525?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/willlarche", - "html_url": "https://github.com/willlarche", - "followers_url": "https://api.github.com/users/willlarche/followers", - "following_url": "https://api.github.com/users/willlarche/following{/other_user}", - "gists_url": "https://api.github.com/users/willlarche/gists{/gist_id}", - "starred_url": "https://api.github.com/users/willlarche/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/willlarche/subscriptions", - "organizations_url": "https://api.github.com/users/willlarche/orgs", - "repos_url": "https://api.github.com/users/willlarche/repos", - "events_url": "https://api.github.com/users/willlarche/events{/privacy}", - "received_events_url": "https://api.github.com/users/willlarche/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 8, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 40, - "d": 21, - "c": 1 - }, - { - "w": 1457222400, - "a": 9, - "d": 3, - "c": 1 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 54, - "d": 1, - "c": 1 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 75, - "d": 10, - "c": 2 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 118, - "d": 0, - "c": 1 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 130, - "d": 59, - "c": 1 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "stevemessick", - "id": 8518285, - "node_id": "MDQ6VXNlcjg1MTgyODU=", - "avatar_url": "https://avatars0.githubusercontent.com/u/8518285?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/stevemessick", - "html_url": "https://github.com/stevemessick", - "followers_url": "https://api.github.com/users/stevemessick/followers", - "following_url": "https://api.github.com/users/stevemessick/following{/other_user}", - "gists_url": "https://api.github.com/users/stevemessick/gists{/gist_id}", - "starred_url": "https://api.github.com/users/stevemessick/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/stevemessick/subscriptions", - "organizations_url": "https://api.github.com/users/stevemessick/orgs", - "repos_url": "https://api.github.com/users/stevemessick/repos", - "events_url": "https://api.github.com/users/stevemessick/events{/privacy}", - "received_events_url": "https://api.github.com/users/stevemessick/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 8, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 78, - "d": 77, - "c": 1 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 9, - "d": 2, - "c": 1 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 33, - "d": 1, - "c": 1 - }, - { - "w": 1488067200, - "a": 18, - "d": 4, - "c": 1 - }, - { - "w": 1488672000, - "a": 79, - "d": 28, - "c": 1 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 206, - "d": 8, - "c": 1 - }, - { - "w": 1490486400, - "a": 93, - "d": 5, - "c": 1 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "lukef", - "id": 37941, - "node_id": "MDQ6VXNlcjM3OTQx", - "avatar_url": "https://avatars3.githubusercontent.com/u/37941?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/lukef", - "html_url": "https://github.com/lukef", - "followers_url": "https://api.github.com/users/lukef/followers", - "following_url": "https://api.github.com/users/lukef/following{/other_user}", - "gists_url": "https://api.github.com/users/lukef/gists{/gist_id}", - "starred_url": "https://api.github.com/users/lukef/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/lukef/subscriptions", - "organizations_url": "https://api.github.com/users/lukef/orgs", - "repos_url": "https://api.github.com/users/lukef/repos", - "events_url": "https://api.github.com/users/lukef/events{/privacy}", - "received_events_url": "https://api.github.com/users/lukef/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 9, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 27, - "d": 1, - "c": 1 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 27, - "d": 3, - "c": 2 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 48, - "d": 17, - "c": 1 - }, - { - "w": 1512259200, - "a": 78, - "d": 45, - "c": 3 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 27, - "d": 27, - "c": 1 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 3, - "c": 1 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "kevmoo", - "id": 17034, - "node_id": "MDQ6VXNlcjE3MDM0", - "avatar_url": "https://avatars2.githubusercontent.com/u/17034?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/kevmoo", - "html_url": "https://github.com/kevmoo", - "followers_url": "https://api.github.com/users/kevmoo/followers", - "following_url": "https://api.github.com/users/kevmoo/following{/other_user}", - "gists_url": "https://api.github.com/users/kevmoo/gists{/gist_id}", - "starred_url": "https://api.github.com/users/kevmoo/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/kevmoo/subscriptions", - "organizations_url": "https://api.github.com/users/kevmoo/orgs", - "repos_url": "https://api.github.com/users/kevmoo/repos", - "events_url": "https://api.github.com/users/kevmoo/events{/privacy}", - "received_events_url": "https://api.github.com/users/kevmoo/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 10, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 40, - "d": 21, - "c": 1 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 957, - "d": 311, - "c": 1 - }, - { - "w": 1549152000, - "a": 261, - "d": 157, - "c": 1 - }, - { - "w": 1549756800, - "a": 277, - "d": 17, - "c": 2 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 60, - "d": 11, - "c": 2 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1552780800, - "a": 456, - "d": 42, - "c": 1 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "clocksmith", - "id": 591699, - "node_id": "MDQ6VXNlcjU5MTY5OQ==", - "avatar_url": "https://avatars1.githubusercontent.com/u/591699?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/clocksmith", - "html_url": "https://github.com/clocksmith", - "followers_url": "https://api.github.com/users/clocksmith/followers", - "following_url": "https://api.github.com/users/clocksmith/following{/other_user}", - "gists_url": "https://api.github.com/users/clocksmith/gists{/gist_id}", - "starred_url": "https://api.github.com/users/clocksmith/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/clocksmith/subscriptions", - "organizations_url": "https://api.github.com/users/clocksmith/orgs", - "repos_url": "https://api.github.com/users/clocksmith/repos", - "events_url": "https://api.github.com/users/clocksmith/events{/privacy}", - "received_events_url": "https://api.github.com/users/clocksmith/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 10, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 5, - "d": 3, - "c": 3 - }, - { - "w": 1519516800, - "a": 15, - "d": 9, - "c": 1 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 16, - "d": 1, - "c": 1 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 34, - "d": 19, - "c": 1 - }, - { - "w": 1523145600, - "a": 19, - "d": 13, - "c": 1 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 397, - "d": 24, - "c": 1 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "xqwzts", - "id": 798935, - "node_id": "MDQ6VXNlcjc5ODkzNQ==", - "avatar_url": "https://avatars1.githubusercontent.com/u/798935?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/xqwzts", - "html_url": "https://github.com/xqwzts", - "followers_url": "https://api.github.com/users/xqwzts/followers", - "following_url": "https://api.github.com/users/xqwzts/following{/other_user}", - "gists_url": "https://api.github.com/users/xqwzts/gists{/gist_id}", - "starred_url": "https://api.github.com/users/xqwzts/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/xqwzts/subscriptions", - "organizations_url": "https://api.github.com/users/xqwzts/orgs", - "repos_url": "https://api.github.com/users/xqwzts/repos", - "events_url": "https://api.github.com/users/xqwzts/events{/privacy}", - "received_events_url": "https://api.github.com/users/xqwzts/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 10, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 86, - "d": 17, - "c": 4 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 8, - "d": 8, - "c": 2 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 32, - "d": 13, - "c": 3 - }, - { - "w": 1466294400, - "a": 73, - "d": 1, - "c": 1 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "aghassemi", - "id": 2099009, - "node_id": "MDQ6VXNlcjIwOTkwMDk=", - "avatar_url": "https://avatars3.githubusercontent.com/u/2099009?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/aghassemi", - "html_url": "https://github.com/aghassemi", - "followers_url": "https://api.github.com/users/aghassemi/followers", - "following_url": "https://api.github.com/users/aghassemi/following{/other_user}", - "gists_url": "https://api.github.com/users/aghassemi/gists{/gist_id}", - "starred_url": "https://api.github.com/users/aghassemi/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/aghassemi/subscriptions", - "organizations_url": "https://api.github.com/users/aghassemi/orgs", - "repos_url": "https://api.github.com/users/aghassemi/repos", - "events_url": "https://api.github.com/users/aghassemi/events{/privacy}", - "received_events_url": "https://api.github.com/users/aghassemi/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 10, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1438473600, - "a": 121, - "d": 40, - "c": 2 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 24, - "d": 4, - "c": 1 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 14, - "d": 7, - "c": 1 - }, - { - "w": 1445126400, - "a": 73, - "d": 36, - "c": 2 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 5, - "d": 5, - "c": 1 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 58, - "d": 11, - "c": 1 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "jimbeveridge", - "id": 7953123, - "node_id": "MDQ6VXNlcjc5NTMxMjM=", - "avatar_url": "https://avatars1.githubusercontent.com/u/7953123?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jimbeveridge", - "html_url": "https://github.com/jimbeveridge", - "followers_url": "https://api.github.com/users/jimbeveridge/followers", - "following_url": "https://api.github.com/users/jimbeveridge/following{/other_user}", - "gists_url": "https://api.github.com/users/jimbeveridge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jimbeveridge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jimbeveridge/subscriptions", - "organizations_url": "https://api.github.com/users/jimbeveridge/orgs", - "repos_url": "https://api.github.com/users/jimbeveridge/repos", - "events_url": "https://api.github.com/users/jimbeveridge/events{/privacy}", - "received_events_url": "https://api.github.com/users/jimbeveridge/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 11, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 46, - "d": 46, - "c": 2 - }, - { - "w": 1515888000, - "a": 70, - "d": 71, - "c": 1 - }, - { - "w": 1516492800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 69, - "d": 85, - "c": 1 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 34, - "d": 35, - "c": 1 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 56, - "d": 56, - "c": 1 - }, - { - "w": 1526169600, - "a": 15, - "d": 15, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 74, - "d": 46, - "c": 1 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 159, - "d": 163, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 12, - "d": 2, - "c": 1 - } - ], - "author": { - "login": "srawlins", - "id": 103167, - "node_id": "MDQ6VXNlcjEwMzE2Nw==", - "avatar_url": "https://avatars3.githubusercontent.com/u/103167?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/srawlins", - "html_url": "https://github.com/srawlins", - "followers_url": "https://api.github.com/users/srawlins/followers", - "following_url": "https://api.github.com/users/srawlins/following{/other_user}", - "gists_url": "https://api.github.com/users/srawlins/gists{/gist_id}", - "starred_url": "https://api.github.com/users/srawlins/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/srawlins/subscriptions", - "organizations_url": "https://api.github.com/users/srawlins/orgs", - "repos_url": "https://api.github.com/users/srawlins/repos", - "events_url": "https://api.github.com/users/srawlins/events{/privacy}", - "received_events_url": "https://api.github.com/users/srawlins/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 11, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 307, - "d": 65, - "c": 2 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 1, - "d": 5, - "c": 1 - }, - { - "w": 1512864000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 17, - "d": 17, - "c": 1 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 789, - "d": 633, - "c": 3 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "mkustermann", - "id": 5757092, - "node_id": "MDQ6VXNlcjU3NTcwOTI=", - "avatar_url": "https://avatars2.githubusercontent.com/u/5757092?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/mkustermann", - "html_url": "https://github.com/mkustermann", - "followers_url": "https://api.github.com/users/mkustermann/followers", - "following_url": "https://api.github.com/users/mkustermann/following{/other_user}", - "gists_url": "https://api.github.com/users/mkustermann/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mkustermann/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mkustermann/subscriptions", - "organizations_url": "https://api.github.com/users/mkustermann/orgs", - "repos_url": "https://api.github.com/users/mkustermann/repos", - "events_url": "https://api.github.com/users/mkustermann/events{/privacy}", - "received_events_url": "https://api.github.com/users/mkustermann/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 11, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 16, - "d": 15, - "c": 2 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 65, - "d": 53, - "c": 2 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 17, - "d": 4, - "c": 1 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 35, - "d": 23, - "c": 3 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 11, - "d": 3, - "c": 1 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "alhaad", - "id": 5509332, - "node_id": "MDQ6VXNlcjU1MDkzMzI=", - "avatar_url": "https://avatars1.githubusercontent.com/u/5509332?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/alhaad", - "html_url": "https://github.com/alhaad", - "followers_url": "https://api.github.com/users/alhaad/followers", - "following_url": "https://api.github.com/users/alhaad/following{/other_user}", - "gists_url": "https://api.github.com/users/alhaad/gists{/gist_id}", - "starred_url": "https://api.github.com/users/alhaad/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/alhaad/subscriptions", - "organizations_url": "https://api.github.com/users/alhaad/orgs", - "repos_url": "https://api.github.com/users/alhaad/repos", - "events_url": "https://api.github.com/users/alhaad/events{/privacy}", - "received_events_url": "https://api.github.com/users/alhaad/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 12, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 1442, - "d": 1, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 847, - "d": 327, - "c": 2 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 182, - "d": 39, - "c": 2 - }, - { - "w": 1533427200, - "a": 3181, - "d": 221, - "c": 6 - }, - { - "w": 1534032000, - "a": 263, - "d": 206, - "c": 1 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "nataliesampsell", - "id": 22058239, - "node_id": "MDQ6VXNlcjIyMDU4MjM5", - "avatar_url": "https://avatars2.githubusercontent.com/u/22058239?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/nataliesampsell", - "html_url": "https://github.com/nataliesampsell", - "followers_url": "https://api.github.com/users/nataliesampsell/followers", - "following_url": "https://api.github.com/users/nataliesampsell/following{/other_user}", - "gists_url": "https://api.github.com/users/nataliesampsell/gists{/gist_id}", - "starred_url": "https://api.github.com/users/nataliesampsell/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/nataliesampsell/subscriptions", - "organizations_url": "https://api.github.com/users/nataliesampsell/orgs", - "repos_url": "https://api.github.com/users/nataliesampsell/repos", - "events_url": "https://api.github.com/users/nataliesampsell/events{/privacy}", - "received_events_url": "https://api.github.com/users/nataliesampsell/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 12, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 65, - "d": 14, - "c": 2 - }, - { - "w": 1492300800, - "a": 26, - "d": 10, - "c": 2 - }, - { - "w": 1492905600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1493510400, - "a": 156, - "d": 0, - "c": 1 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 13, - "d": 1, - "c": 1 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 271, - "d": 109, - "c": 3 - }, - { - "w": 1497744000, - "a": 11, - "d": 4, - "c": 1 - }, - { - "w": 1498348800, - "a": 98, - "d": 27, - "c": 1 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "skybrian", - "id": 129084, - "node_id": "MDQ6VXNlcjEyOTA4NA==", - "avatar_url": "https://avatars1.githubusercontent.com/u/129084?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/skybrian", - "html_url": "https://github.com/skybrian", - "followers_url": "https://api.github.com/users/skybrian/followers", - "following_url": "https://api.github.com/users/skybrian/following{/other_user}", - "gists_url": "https://api.github.com/users/skybrian/gists{/gist_id}", - "starred_url": "https://api.github.com/users/skybrian/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/skybrian/subscriptions", - "organizations_url": "https://api.github.com/users/skybrian/orgs", - "repos_url": "https://api.github.com/users/skybrian/repos", - "events_url": "https://api.github.com/users/skybrian/events{/privacy}", - "received_events_url": "https://api.github.com/users/skybrian/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 15, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 159, - "d": 7, - "c": 3 - }, - { - "w": 1552780800, - "a": 212, - "d": 13, - "c": 2 - }, - { - "w": 1553385600, - "a": 405, - "d": 7, - "c": 4 - }, - { - "w": 1553990400, - "a": 167, - "d": 5, - "c": 2 - }, - { - "w": 1554595200, - "a": 393, - "d": 49, - "c": 4 - } - ], - "author": { - "login": "shihaohong", - "id": 27032613, - "node_id": "MDQ6VXNlcjI3MDMyNjEz", - "avatar_url": "https://avatars3.githubusercontent.com/u/27032613?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/shihaohong", - "html_url": "https://github.com/shihaohong", - "followers_url": "https://api.github.com/users/shihaohong/followers", - "following_url": "https://api.github.com/users/shihaohong/following{/other_user}", - "gists_url": "https://api.github.com/users/shihaohong/gists{/gist_id}", - "starred_url": "https://api.github.com/users/shihaohong/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/shihaohong/subscriptions", - "organizations_url": "https://api.github.com/users/shihaohong/orgs", - "repos_url": "https://api.github.com/users/shihaohong/repos", - "events_url": "https://api.github.com/users/shihaohong/events{/privacy}", - "received_events_url": "https://api.github.com/users/shihaohong/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 15, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 98, - "d": 23, - "c": 2 - }, - { - "w": 1547942400, - "a": 372, - "d": 19, - "c": 1 - }, - { - "w": 1548547200, - "a": 323, - "d": 74, - "c": 5 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 321, - "d": 105, - "c": 1 - }, - { - "w": 1550361600, - "a": 138, - "d": 9, - "c": 2 - }, - { - "w": 1550966400, - "a": 169, - "d": 30, - "c": 1 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 37, - "d": 1, - "c": 1 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 42, - "d": 2, - "c": 1 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 6, - "d": 4, - "c": 1 - } - ], - "author": { - "login": "rami-a", - "id": 2364772, - "node_id": "MDQ6VXNlcjIzNjQ3NzI=", - "avatar_url": "https://avatars3.githubusercontent.com/u/2364772?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/rami-a", - "html_url": "https://github.com/rami-a", - "followers_url": "https://api.github.com/users/rami-a/followers", - "following_url": "https://api.github.com/users/rami-a/following{/other_user}", - "gists_url": "https://api.github.com/users/rami-a/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rami-a/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rami-a/subscriptions", - "organizations_url": "https://api.github.com/users/rami-a/orgs", - "repos_url": "https://api.github.com/users/rami-a/repos", - "events_url": "https://api.github.com/users/rami-a/events{/privacy}", - "received_events_url": "https://api.github.com/users/rami-a/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 15, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 62, - "d": 3, - "c": 2 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 93, - "d": 0, - "c": 2 - }, - { - "w": 1551571200, - "a": 99, - "d": 0, - "c": 2 - }, - { - "w": 1552176000, - "a": 137, - "d": 33, - "c": 3 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 37, - "d": 5, - "c": 2 - }, - { - "w": 1553990400, - "a": 75, - "d": 37, - "c": 4 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "Piinks", - "id": 16964204, - "node_id": "MDQ6VXNlcjE2OTY0MjA0", - "avatar_url": "https://avatars3.githubusercontent.com/u/16964204?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Piinks", - "html_url": "https://github.com/Piinks", - "followers_url": "https://api.github.com/users/Piinks/followers", - "following_url": "https://api.github.com/users/Piinks/following{/other_user}", - "gists_url": "https://api.github.com/users/Piinks/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Piinks/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Piinks/subscriptions", - "organizations_url": "https://api.github.com/users/Piinks/orgs", - "repos_url": "https://api.github.com/users/Piinks/repos", - "events_url": "https://api.github.com/users/Piinks/events{/privacy}", - "received_events_url": "https://api.github.com/users/Piinks/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 15, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 189, - "d": 90, - "c": 3 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 58, - "d": 0, - "c": 1 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 164, - "d": 63, - "c": 1 - }, - { - "w": 1523145600, - "a": 592, - "d": 13, - "c": 4 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 6, - "d": 1, - "c": 1 - }, - { - "w": 1524960000, - "a": 10, - "d": 124, - "c": 1 - }, - { - "w": 1525564800, - "a": 58, - "d": 58, - "c": 1 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 4, - "d": 0, - "c": 1 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 29, - "d": 29, - "c": 2 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "scheglov", - "id": 384794, - "node_id": "MDQ6VXNlcjM4NDc5NA==", - "avatar_url": "https://avatars0.githubusercontent.com/u/384794?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/scheglov", - "html_url": "https://github.com/scheglov", - "followers_url": "https://api.github.com/users/scheglov/followers", - "following_url": "https://api.github.com/users/scheglov/following{/other_user}", - "gists_url": "https://api.github.com/users/scheglov/gists{/gist_id}", - "starred_url": "https://api.github.com/users/scheglov/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/scheglov/subscriptions", - "organizations_url": "https://api.github.com/users/scheglov/orgs", - "repos_url": "https://api.github.com/users/scheglov/repos", - "events_url": "https://api.github.com/users/scheglov/events{/privacy}", - "received_events_url": "https://api.github.com/users/scheglov/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 15, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 57, - "d": 12, - "c": 1 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 293, - "d": 350, - "c": 3 - }, - { - "w": 1538265600, - "a": 46, - "d": 44, - "c": 1 - }, - { - "w": 1538870400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 128, - "d": 70, - "c": 1 - }, - { - "w": 1540684800, - "a": 187, - "d": 12, - "c": 2 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 187, - "d": 47, - "c": 1 - }, - { - "w": 1544918400, - "a": 210, - "d": 9, - "c": 1 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 281, - "d": 12, - "c": 1 - }, - { - "w": 1547337600, - "a": 215, - "d": 79, - "c": 3 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "johnsonmh", - "id": 4229329, - "node_id": "MDQ6VXNlcjQyMjkzMjk=", - "avatar_url": "https://avatars2.githubusercontent.com/u/4229329?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/johnsonmh", - "html_url": "https://github.com/johnsonmh", - "followers_url": "https://api.github.com/users/johnsonmh/followers", - "following_url": "https://api.github.com/users/johnsonmh/following{/other_user}", - "gists_url": "https://api.github.com/users/johnsonmh/gists{/gist_id}", - "starred_url": "https://api.github.com/users/johnsonmh/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/johnsonmh/subscriptions", - "organizations_url": "https://api.github.com/users/johnsonmh/orgs", - "repos_url": "https://api.github.com/users/johnsonmh/repos", - "events_url": "https://api.github.com/users/johnsonmh/events{/privacy}", - "received_events_url": "https://api.github.com/users/johnsonmh/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 15, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 1120, - "d": 2, - "c": 3 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 119, - "d": 85, - "c": 3 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 32, - "d": 8, - "c": 3 - }, - { - "w": 1420934400, - "a": 38, - "d": 28, - "c": 3 - }, - { - "w": 1421539200, - "a": 4, - "d": 4, - "c": 2 - }, - { - "w": 1422144000, - "a": 0, - "d": 5, - "c": 1 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "esprehn", - "id": 415779, - "node_id": "MDQ6VXNlcjQxNTc3OQ==", - "avatar_url": "https://avatars1.githubusercontent.com/u/415779?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/esprehn", - "html_url": "https://github.com/esprehn", - "followers_url": "https://api.github.com/users/esprehn/followers", - "following_url": "https://api.github.com/users/esprehn/following{/other_user}", - "gists_url": "https://api.github.com/users/esprehn/gists{/gist_id}", - "starred_url": "https://api.github.com/users/esprehn/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/esprehn/subscriptions", - "organizations_url": "https://api.github.com/users/esprehn/orgs", - "repos_url": "https://api.github.com/users/esprehn/repos", - "events_url": "https://api.github.com/users/esprehn/events{/privacy}", - "received_events_url": "https://api.github.com/users/esprehn/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 16, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 79, - "d": 21, - "c": 1 - }, - { - "w": 1536451200, - "a": 107, - "d": 21, - "c": 1 - }, - { - "w": 1537056000, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1537660800, - "a": 67, - "d": 9, - "c": 2 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 119, - "d": 18, - "c": 3 - }, - { - "w": 1540080000, - "a": 829, - "d": 386, - "c": 4 - }, - { - "w": 1540684800, - "a": 4, - "d": 2, - "c": 1 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 31, - "d": 16, - "c": 1 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 96, - "d": 3, - "c": 1 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "mklim", - "id": 4615911, - "node_id": "MDQ6VXNlcjQ2MTU5MTE=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4615911?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/mklim", - "html_url": "https://github.com/mklim", - "followers_url": "https://api.github.com/users/mklim/followers", - "following_url": "https://api.github.com/users/mklim/following{/other_user}", - "gists_url": "https://api.github.com/users/mklim/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mklim/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mklim/subscriptions", - "organizations_url": "https://api.github.com/users/mklim/orgs", - "repos_url": "https://api.github.com/users/mklim/repos", - "events_url": "https://api.github.com/users/mklim/events{/privacy}", - "received_events_url": "https://api.github.com/users/mklim/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 19, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 10, - "d": 15, - "c": 6 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 10, - "d": 3, - "c": 4 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1540684800, - "a": 113, - "d": 2, - "c": 1 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 6, - "d": 6, - "c": 2 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 77, - "d": 31, - "c": 1 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "bkonyi", - "id": 24210656, - "node_id": "MDQ6VXNlcjI0MjEwNjU2", - "avatar_url": "https://avatars2.githubusercontent.com/u/24210656?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bkonyi", - "html_url": "https://github.com/bkonyi", - "followers_url": "https://api.github.com/users/bkonyi/followers", - "following_url": "https://api.github.com/users/bkonyi/following{/other_user}", - "gists_url": "https://api.github.com/users/bkonyi/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bkonyi/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bkonyi/subscriptions", - "organizations_url": "https://api.github.com/users/bkonyi/orgs", - "repos_url": "https://api.github.com/users/bkonyi/repos", - "events_url": "https://api.github.com/users/bkonyi/events{/privacy}", - "received_events_url": "https://api.github.com/users/bkonyi/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 20, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 194, - "d": 72, - "c": 1 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 44, - "d": 0, - "c": 1 - }, - { - "w": 1546732800, - "a": 53, - "d": 2, - "c": 2 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 60, - "d": 4, - "c": 2 - }, - { - "w": 1549152000, - "a": 155, - "d": 21, - "c": 4 - }, - { - "w": 1549756800, - "a": 540, - "d": 195, - "c": 9 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 137, - "d": 11, - "c": 1 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "kangwang1988", - "id": 817851, - "node_id": "MDQ6VXNlcjgxNzg1MQ==", - "avatar_url": "https://avatars1.githubusercontent.com/u/817851?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/kangwang1988", - "html_url": "https://github.com/kangwang1988", - "followers_url": "https://api.github.com/users/kangwang1988/followers", - "following_url": "https://api.github.com/users/kangwang1988/following{/other_user}", - "gists_url": "https://api.github.com/users/kangwang1988/gists{/gist_id}", - "starred_url": "https://api.github.com/users/kangwang1988/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/kangwang1988/subscriptions", - "organizations_url": "https://api.github.com/users/kangwang1988/orgs", - "repos_url": "https://api.github.com/users/kangwang1988/repos", - "events_url": "https://api.github.com/users/kangwang1988/events{/privacy}", - "received_events_url": "https://api.github.com/users/kangwang1988/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 20, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 3, - "d": 3, - "c": 3 - }, - { - "w": 1511654400, - "a": 387, - "d": 1, - "c": 1 - }, - { - "w": 1512259200, - "a": 105, - "d": 48, - "c": 2 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 3, - "d": 11, - "c": 1 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 212, - "d": 23, - "c": 1 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 894, - "d": 623, - "c": 3 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 114, - "d": 114, - "c": 2 - }, - { - "w": 1531612800, - "a": 1274, - "d": 1226, - "c": 6 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "sigurdm", - "id": 8613953, - "node_id": "MDQ6VXNlcjg2MTM5NTM=", - "avatar_url": "https://avatars1.githubusercontent.com/u/8613953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/sigurdm", - "html_url": "https://github.com/sigurdm", - "followers_url": "https://api.github.com/users/sigurdm/followers", - "following_url": "https://api.github.com/users/sigurdm/following{/other_user}", - "gists_url": "https://api.github.com/users/sigurdm/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sigurdm/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sigurdm/subscriptions", - "organizations_url": "https://api.github.com/users/sigurdm/orgs", - "repos_url": "https://api.github.com/users/sigurdm/repos", - "events_url": "https://api.github.com/users/sigurdm/events{/privacy}", - "received_events_url": "https://api.github.com/users/sigurdm/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 21, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 244, - "d": 4, - "c": 2 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 350, - "d": 339, - "c": 3 - }, - { - "w": 1449360000, - "a": 248, - "d": 242, - "c": 2 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 16, - "d": 2, - "c": 1 - }, - { - "w": 1527379200, - "a": 36, - "d": 2, - "c": 1 - }, - { - "w": 1527984000, - "a": 7, - "d": 3, - "c": 2 - }, - { - "w": 1528588800, - "a": 3, - "d": 3, - "c": 3 - }, - { - "w": 1529193600, - "a": 139, - "d": 76, - "c": 3 - }, - { - "w": 1529798400, - "a": 345, - "d": 3, - "c": 3 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "floitschG", - "id": 8631949, - "node_id": "MDQ6VXNlcjg2MzE5NDk=", - "avatar_url": "https://avatars2.githubusercontent.com/u/8631949?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/floitschG", - "html_url": "https://github.com/floitschG", - "followers_url": "https://api.github.com/users/floitschG/followers", - "following_url": "https://api.github.com/users/floitschG/following{/other_user}", - "gists_url": "https://api.github.com/users/floitschG/gists{/gist_id}", - "starred_url": "https://api.github.com/users/floitschG/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/floitschG/subscriptions", - "organizations_url": "https://api.github.com/users/floitschG/orgs", - "repos_url": "https://api.github.com/users/floitschG/repos", - "events_url": "https://api.github.com/users/floitschG/events{/privacy}", - "received_events_url": "https://api.github.com/users/floitschG/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 21, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 213, - "d": 116, - "c": 6 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 46, - "d": 26, - "c": 2 - }, - { - "w": 1503187200, - "a": 62, - "d": 29, - "c": 6 - }, - { - "w": 1503792000, - "a": 1, - "d": 2, - "c": 2 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 32, - "d": 12, - "c": 4 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "B3rn475", - "id": 2686902, - "node_id": "MDQ6VXNlcjI2ODY5MDI=", - "avatar_url": "https://avatars1.githubusercontent.com/u/2686902?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/B3rn475", - "html_url": "https://github.com/B3rn475", - "followers_url": "https://api.github.com/users/B3rn475/followers", - "following_url": "https://api.github.com/users/B3rn475/following{/other_user}", - "gists_url": "https://api.github.com/users/B3rn475/gists{/gist_id}", - "starred_url": "https://api.github.com/users/B3rn475/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/B3rn475/subscriptions", - "organizations_url": "https://api.github.com/users/B3rn475/orgs", - "repos_url": "https://api.github.com/users/B3rn475/repos", - "events_url": "https://api.github.com/users/B3rn475/events{/privacy}", - "received_events_url": "https://api.github.com/users/B3rn475/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 22, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 338, - "d": 23, - "c": 4 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 245, - "d": 124, - "c": 5 - }, - { - "w": 1544918400, - "a": 562, - "d": 97, - "c": 3 - }, - { - "w": 1545523200, - "a": 78, - "d": 2, - "c": 1 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 289, - "d": 8, - "c": 3 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 774, - "d": 170, - "c": 1 - }, - { - "w": 1552176000, - "a": 897, - "d": 171, - "c": 1 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 7, - "d": 0, - "c": 1 - }, - { - "w": 1553990400, - "a": 1261, - "d": 0, - "c": 2 - }, - { - "w": 1554595200, - "a": 81, - "d": 3, - "c": 1 - } - ], - "author": { - "login": "justinmc", - "id": 389558, - "node_id": "MDQ6VXNlcjM4OTU1OA==", - "avatar_url": "https://avatars2.githubusercontent.com/u/389558?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/justinmc", - "html_url": "https://github.com/justinmc", - "followers_url": "https://api.github.com/users/justinmc/followers", - "following_url": "https://api.github.com/users/justinmc/following{/other_user}", - "gists_url": "https://api.github.com/users/justinmc/gists{/gist_id}", - "starred_url": "https://api.github.com/users/justinmc/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/justinmc/subscriptions", - "organizations_url": "https://api.github.com/users/justinmc/orgs", - "repos_url": "https://api.github.com/users/justinmc/repos", - "events_url": "https://api.github.com/users/justinmc/events{/privacy}", - "received_events_url": "https://api.github.com/users/justinmc/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 22, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 12, - "d": 3, - "c": 1 - }, - { - "w": 1527984000, - "a": 129, - "d": 10, - "c": 2 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 273, - "d": 21, - "c": 3 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 832, - "d": 79, - "c": 2 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 87, - "d": 0, - "c": 1 - }, - { - "w": 1532217600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 2083, - "d": 467, - "c": 2 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 114, - "d": 114, - "c": 1 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 4823, - "d": 4844, - "c": 3 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 186, - "d": 16, - "c": 1 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 1152, - "d": 164, - "c": 5 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "matthew-carroll", - "id": 7259036, - "node_id": "MDQ6VXNlcjcyNTkwMzY=", - "avatar_url": "https://avatars3.githubusercontent.com/u/7259036?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/matthew-carroll", - "html_url": "https://github.com/matthew-carroll", - "followers_url": "https://api.github.com/users/matthew-carroll/followers", - "following_url": "https://api.github.com/users/matthew-carroll/following{/other_user}", - "gists_url": "https://api.github.com/users/matthew-carroll/gists{/gist_id}", - "starred_url": "https://api.github.com/users/matthew-carroll/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/matthew-carroll/subscriptions", - "organizations_url": "https://api.github.com/users/matthew-carroll/orgs", - "repos_url": "https://api.github.com/users/matthew-carroll/repos", - "events_url": "https://api.github.com/users/matthew-carroll/events{/privacy}", - "received_events_url": "https://api.github.com/users/matthew-carroll/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 22, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 83, - "d": 44, - "c": 1 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 65, - "d": 10, - "c": 1 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 59, - "d": 14, - "c": 1 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 19, - "d": 11, - "c": 2 - }, - { - "w": 1504396800, - "a": 5, - "d": 5, - "c": 1 - }, - { - "w": 1505001600, - "a": 98, - "d": 11, - "c": 1 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 22, - "d": 22, - "c": 1 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 44, - "d": 12, - "c": 1 - }, - { - "w": 1512259200, - "a": 39, - "d": 8, - "c": 1 - }, - { - "w": 1512864000, - "a": 121, - "d": 106, - "c": 2 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 148, - "d": 148, - "c": 1 - }, - { - "w": 1528588800, - "a": 10, - "d": 10, - "c": 1 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 4, - "d": 0, - "c": 1 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 7, - "d": 1, - "c": 1 - }, - { - "w": 1534636800, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 17, - "d": 816, - "c": 1 - }, - { - "w": 1536451200, - "a": 5, - "d": 1, - "c": 1 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 1, - "d": 36, - "c": 1 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 36, - "d": 33, - "c": 1 - }, - { - "w": 1547337600, - "a": 50, - "d": 26, - "c": 1 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "mehmetf", - "id": 6687929, - "node_id": "MDQ6VXNlcjY2ODc5Mjk=", - "avatar_url": "https://avatars3.githubusercontent.com/u/6687929?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/mehmetf", - "html_url": "https://github.com/mehmetf", - "followers_url": "https://api.github.com/users/mehmetf/followers", - "following_url": "https://api.github.com/users/mehmetf/following{/other_user}", - "gists_url": "https://api.github.com/users/mehmetf/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mehmetf/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mehmetf/subscriptions", - "organizations_url": "https://api.github.com/users/mehmetf/orgs", - "repos_url": "https://api.github.com/users/mehmetf/repos", - "events_url": "https://api.github.com/users/mehmetf/events{/privacy}", - "received_events_url": "https://api.github.com/users/mehmetf/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 22, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1518912000, - "a": 101, - "d": 2, - "c": 1 - }, - { - "w": 1519516800, - "a": 14, - "d": 6, - "c": 1 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 1076, - "d": 147, - "c": 1 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 637, - "d": 256, - "c": 4 - }, - { - "w": 1523145600, - "a": 11, - "d": 22, - "c": 1 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 173, - "d": 3, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1532822400, - "a": 1128, - "d": 0, - "c": 1 - }, - { - "w": 1533427200, - "a": 1766, - "d": 107, - "c": 1 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 66, - "d": 4, - "c": 1 - }, - { - "w": 1535241600, - "a": 248, - "d": 67, - "c": 2 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 339, - "d": 204, - "c": 4 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 172, - "d": 38, - "c": 1 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "DaveShuckerow", - "id": 14947366, - "node_id": "MDQ6VXNlcjE0OTQ3MzY2", - "avatar_url": "https://avatars2.githubusercontent.com/u/14947366?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/DaveShuckerow", - "html_url": "https://github.com/DaveShuckerow", - "followers_url": "https://api.github.com/users/DaveShuckerow/followers", - "following_url": "https://api.github.com/users/DaveShuckerow/following{/other_user}", - "gists_url": "https://api.github.com/users/DaveShuckerow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/DaveShuckerow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/DaveShuckerow/subscriptions", - "organizations_url": "https://api.github.com/users/DaveShuckerow/orgs", - "repos_url": "https://api.github.com/users/DaveShuckerow/repos", - "events_url": "https://api.github.com/users/DaveShuckerow/events{/privacy}", - "received_events_url": "https://api.github.com/users/DaveShuckerow/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 23, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 1557, - "d": 42, - "c": 1 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 72, - "d": 24, - "c": 2 - }, - { - "w": 1524960000, - "a": 442, - "d": 68, - "c": 3 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 19, - "d": 0, - "c": 1 - }, - { - "w": 1526774400, - "a": 7, - "d": 9, - "c": 1 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 46, - "d": 4, - "c": 1 - }, - { - "w": 1529193600, - "a": 133, - "d": 24, - "c": 3 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 54, - "d": 25, - "c": 1 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 40, - "d": 22, - "c": 2 - }, - { - "w": 1538265600, - "a": 37, - "d": 19, - "c": 1 - }, - { - "w": 1538870400, - "a": 399, - "d": 207, - "c": 2 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 8, - "d": 1, - "c": 1 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 3, - "d": 4, - "c": 1 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 10, - "d": 7, - "c": 1 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 9, - "d": 3, - "c": 1 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "awdavies", - "id": 2238468, - "node_id": "MDQ6VXNlcjIyMzg0Njg=", - "avatar_url": "https://avatars0.githubusercontent.com/u/2238468?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/awdavies", - "html_url": "https://github.com/awdavies", - "followers_url": "https://api.github.com/users/awdavies/followers", - "following_url": "https://api.github.com/users/awdavies/following{/other_user}", - "gists_url": "https://api.github.com/users/awdavies/gists{/gist_id}", - "starred_url": "https://api.github.com/users/awdavies/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/awdavies/subscriptions", - "organizations_url": "https://api.github.com/users/awdavies/orgs", - "repos_url": "https://api.github.com/users/awdavies/repos", - "events_url": "https://api.github.com/users/awdavies/events{/privacy}", - "received_events_url": "https://api.github.com/users/awdavies/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 23, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1439078400, - "a": 18, - "d": 13, - "c": 1 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 50, - "d": 48, - "c": 2 - }, - { - "w": 1440892800, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1441497600, - "a": 18, - "d": 2, - "c": 1 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 10, - "d": 6, - "c": 1 - }, - { - "w": 1443312000, - "a": 8, - "d": 5, - "c": 2 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 23, - "d": 10, - "c": 1 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 269, - "d": 81, - "c": 2 - }, - { - "w": 1458432000, - "a": 400, - "d": 34, - "c": 3 - }, - { - "w": 1459036800, - "a": 522, - "d": 323, - "c": 2 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 54, - "d": 0, - "c": 2 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 85, - "d": 6, - "c": 1 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 62, - "d": 5, - "c": 1 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "apwilson", - "id": 142874, - "node_id": "MDQ6VXNlcjE0Mjg3NA==", - "avatar_url": "https://avatars3.githubusercontent.com/u/142874?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/apwilson", - "html_url": "https://github.com/apwilson", - "followers_url": "https://api.github.com/users/apwilson/followers", - "following_url": "https://api.github.com/users/apwilson/following{/other_user}", - "gists_url": "https://api.github.com/users/apwilson/gists{/gist_id}", - "starred_url": "https://api.github.com/users/apwilson/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/apwilson/subscriptions", - "organizations_url": "https://api.github.com/users/apwilson/orgs", - "repos_url": "https://api.github.com/users/apwilson/repos", - "events_url": "https://api.github.com/users/apwilson/events{/privacy}", - "received_events_url": "https://api.github.com/users/apwilson/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 24, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 154, - "d": 30, - "c": 1 - }, - { - "w": 1438473600, - "a": 355, - "d": 263, - "c": 2 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 164, - "d": 29, - "c": 4 - }, - { - "w": 1442707200, - "a": 291, - "d": 139, - "c": 14 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 62, - "d": 65, - "c": 1 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "jamesr", - "id": 7497301, - "node_id": "MDQ6VXNlcjc0OTczMDE=", - "avatar_url": "https://avatars1.githubusercontent.com/u/7497301?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jamesr", - "html_url": "https://github.com/jamesr", - "followers_url": "https://api.github.com/users/jamesr/followers", - "following_url": "https://api.github.com/users/jamesr/following{/other_user}", - "gists_url": "https://api.github.com/users/jamesr/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jamesr/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jamesr/subscriptions", - "organizations_url": "https://api.github.com/users/jamesr/orgs", - "repos_url": "https://api.github.com/users/jamesr/repos", - "events_url": "https://api.github.com/users/jamesr/events{/privacy}", - "received_events_url": "https://api.github.com/users/jamesr/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 25, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 5740, - "d": 0, - "c": 1 - }, - { - "w": 1414886400, - "a": 22, - "d": 13, - "c": 2 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1416700800, - "a": 27, - "d": 3, - "c": 3 - }, - { - "w": 1417305600, - "a": 18, - "d": 0, - "c": 1 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 19, - "d": 110, - "c": 1 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 5537, - "d": 48, - "c": 6 - }, - { - "w": 1425772800, - "a": 106, - "d": 116, - "c": 7 - }, - { - "w": 1426377600, - "a": 40, - "d": 158, - "c": 3 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "rafaelw", - "id": 646051, - "node_id": "MDQ6VXNlcjY0NjA1MQ==", - "avatar_url": "https://avatars0.githubusercontent.com/u/646051?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/rafaelw", - "html_url": "https://github.com/rafaelw", - "followers_url": "https://api.github.com/users/rafaelw/followers", - "following_url": "https://api.github.com/users/rafaelw/following{/other_user}", - "gists_url": "https://api.github.com/users/rafaelw/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rafaelw/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rafaelw/subscriptions", - "organizations_url": "https://api.github.com/users/rafaelw/orgs", - "repos_url": "https://api.github.com/users/rafaelw/repos", - "events_url": "https://api.github.com/users/rafaelw/events{/privacy}", - "received_events_url": "https://api.github.com/users/rafaelw/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 31, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 40, - "d": 0, - "c": 1 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 9, - "d": 5, - "c": 1 - }, - { - "w": 1515888000, - "a": 1453, - "d": 84, - "c": 4 - }, - { - "w": 1516492800, - "a": 90, - "d": 68, - "c": 2 - }, - { - "w": 1517097600, - "a": 20, - "d": 6, - "c": 1 - }, - { - "w": 1517702400, - "a": 198, - "d": 170, - "c": 6 - }, - { - "w": 1518307200, - "a": 58, - "d": 37, - "c": 6 - }, - { - "w": 1518912000, - "a": 10, - "d": 10, - "c": 1 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 341, - "d": 274, - "c": 2 - }, - { - "w": 1521331200, - "a": 10, - "d": 3, - "c": 1 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1525564800, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1526169600, - "a": 144, - "d": 71, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 96, - "d": 30, - "c": 2 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 68, - "d": 5, - "c": 1 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "mraleph", - "id": 131846, - "node_id": "MDQ6VXNlcjEzMTg0Ng==", - "avatar_url": "https://avatars3.githubusercontent.com/u/131846?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/mraleph", - "html_url": "https://github.com/mraleph", - "followers_url": "https://api.github.com/users/mraleph/followers", - "following_url": "https://api.github.com/users/mraleph/following{/other_user}", - "gists_url": "https://api.github.com/users/mraleph/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mraleph/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mraleph/subscriptions", - "organizations_url": "https://api.github.com/users/mraleph/orgs", - "repos_url": "https://api.github.com/users/mraleph/repos", - "events_url": "https://api.github.com/users/mraleph/events{/privacy}", - "received_events_url": "https://api.github.com/users/mraleph/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 33, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 10, - "d": 0, - "c": 1 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 35, - "d": 0, - "c": 1 - }, - { - "w": 1474761600, - "a": 157, - "d": 84, - "c": 3 - }, - { - "w": 1475366400, - "a": 24, - "d": 4, - "c": 1 - }, - { - "w": 1475971200, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 8, - "d": 4, - "c": 1 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 10, - "d": 4, - "c": 2 - }, - { - "w": 1480204800, - "a": 9, - "d": 2, - "c": 1 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 47, - "d": 7, - "c": 1 - }, - { - "w": 1490486400, - "a": 4, - "d": 2, - "c": 1 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 126, - "d": 3, - "c": 1 - }, - { - "w": 1492905600, - "a": 25, - "d": 26, - "c": 1 - }, - { - "w": 1493510400, - "a": 9, - "d": 3, - "c": 1 - }, - { - "w": 1494115200, - "a": 4, - "d": 4, - "c": 2 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 142, - "d": 4, - "c": 1 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 4, - "d": 0, - "c": 1 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 6, - "d": 6, - "c": 1 - }, - { - "w": 1507420800, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1508025600, - "a": 10, - "d": 7, - "c": 3 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 7, - "d": 7, - "c": 1 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 24, - "d": 0, - "c": 1 - }, - { - "w": 1520726400, - "a": 7, - "d": 22, - "c": 1 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "pylaligand", - "id": 1115379, - "node_id": "MDQ6VXNlcjExMTUzNzk=", - "avatar_url": "https://avatars2.githubusercontent.com/u/1115379?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/pylaligand", - "html_url": "https://github.com/pylaligand", - "followers_url": "https://api.github.com/users/pylaligand/followers", - "following_url": "https://api.github.com/users/pylaligand/following{/other_user}", - "gists_url": "https://api.github.com/users/pylaligand/gists{/gist_id}", - "starred_url": "https://api.github.com/users/pylaligand/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/pylaligand/subscriptions", - "organizations_url": "https://api.github.com/users/pylaligand/orgs", - "repos_url": "https://api.github.com/users/pylaligand/repos", - "events_url": "https://api.github.com/users/pylaligand/events{/privacy}", - "received_events_url": "https://api.github.com/users/pylaligand/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 34, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 93, - "d": 8, - "c": 1 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 39, - "d": 9, - "c": 1 - }, - { - "w": 1512259200, - "a": 7, - "d": 2, - "c": 3 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 11, - "d": 11, - "c": 3 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1517702400, - "a": 17, - "d": 11, - "c": 1 - }, - { - "w": 1518307200, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1520121600, - "a": 79, - "d": 38, - "c": 5 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 10, - "d": 10, - "c": 2 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 13, - "d": 0, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 3, - "d": 3, - "c": 3 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 3, - "d": 3, - "c": 2 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 4, - "d": 86, - "c": 3 - }, - { - "w": 1537660800, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 22, - "d": 6, - "c": 1 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "alexmarkov", - "id": 29557594, - "node_id": "MDQ6VXNlcjI5NTU3NTk0", - "avatar_url": "https://avatars3.githubusercontent.com/u/29557594?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/alexmarkov", - "html_url": "https://github.com/alexmarkov", - "followers_url": "https://api.github.com/users/alexmarkov/followers", - "following_url": "https://api.github.com/users/alexmarkov/following{/other_user}", - "gists_url": "https://api.github.com/users/alexmarkov/gists{/gist_id}", - "starred_url": "https://api.github.com/users/alexmarkov/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/alexmarkov/subscriptions", - "organizations_url": "https://api.github.com/users/alexmarkov/orgs", - "repos_url": "https://api.github.com/users/alexmarkov/repos", - "events_url": "https://api.github.com/users/alexmarkov/events{/privacy}", - "received_events_url": "https://api.github.com/users/alexmarkov/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 40, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 16, - "d": 0, - "c": 1 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1536451200, - "a": 42, - "d": 2, - "c": 2 - }, - { - "w": 1537056000, - "a": 3, - "d": 3, - "c": 2 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 37, - "d": 7, - "c": 3 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 83, - "d": 87, - "c": 2 - }, - { - "w": 1540080000, - "a": 26, - "d": 14, - "c": 2 - }, - { - "w": 1540684800, - "a": 57, - "d": 37, - "c": 2 - }, - { - "w": 1541289600, - "a": 1741, - "d": 283, - "c": 4 - }, - { - "w": 1541894400, - "a": 28, - "d": 0, - "c": 1 - }, - { - "w": 1542499200, - "a": 41, - "d": 7, - "c": 1 - }, - { - "w": 1543104000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1543708800, - "a": 2, - "d": 3, - "c": 1 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 287, - "d": 36, - "c": 4 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 51, - "d": 5, - "c": 1 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 51, - "d": 1, - "c": 1 - }, - { - "w": 1547942400, - "a": 139, - "d": 140, - "c": 4 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 787, - "d": 46, - "c": 1 - }, - { - "w": 1549756800, - "a": 103, - "d": 8, - "c": 2 - }, - { - "w": 1550361600, - "a": 682, - "d": 9, - "c": 1 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 56, - "d": 1, - "c": 1 - }, - { - "w": 1552176000, - "a": 209, - "d": 12, - "c": 2 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "GaryQian", - "id": 1887398, - "node_id": "MDQ6VXNlcjE4ODczOTg=", - "avatar_url": "https://avatars2.githubusercontent.com/u/1887398?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/GaryQian", - "html_url": "https://github.com/GaryQian", - "followers_url": "https://api.github.com/users/GaryQian/followers", - "following_url": "https://api.github.com/users/GaryQian/following{/other_user}", - "gists_url": "https://api.github.com/users/GaryQian/gists{/gist_id}", - "starred_url": "https://api.github.com/users/GaryQian/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/GaryQian/subscriptions", - "organizations_url": "https://api.github.com/users/GaryQian/orgs", - "repos_url": "https://api.github.com/users/GaryQian/repos", - "events_url": "https://api.github.com/users/GaryQian/events{/privacy}", - "received_events_url": "https://api.github.com/users/GaryQian/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 44, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 334, - "d": 36, - "c": 2 - }, - { - "w": 1469318400, - "a": 206, - "d": 86, - "c": 1 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 1869, - "d": 7, - "c": 4 - }, - { - "w": 1471132800, - "a": 785, - "d": 32, - "c": 5 - }, - { - "w": 1471737600, - "a": 426, - "d": 9, - "c": 2 - }, - { - "w": 1472342400, - "a": 663, - "d": 168, - "c": 7 - }, - { - "w": 1472947200, - "a": 23, - "d": 139, - "c": 3 - }, - { - "w": 1473552000, - "a": 1593, - "d": 528, - "c": 11 - }, - { - "w": 1474156800, - "a": 993, - "d": 71, - "c": 7 - }, - { - "w": 1474761600, - "a": 65, - "d": 0, - "c": 2 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "dragostis", - "id": 4136413, - "node_id": "MDQ6VXNlcjQxMzY0MTM=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4136413?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/dragostis", - "html_url": "https://github.com/dragostis", - "followers_url": "https://api.github.com/users/dragostis/followers", - "following_url": "https://api.github.com/users/dragostis/following{/other_user}", - "gists_url": "https://api.github.com/users/dragostis/gists{/gist_id}", - "starred_url": "https://api.github.com/users/dragostis/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/dragostis/subscriptions", - "organizations_url": "https://api.github.com/users/dragostis/orgs", - "repos_url": "https://api.github.com/users/dragostis/repos", - "events_url": "https://api.github.com/users/dragostis/events{/privacy}", - "received_events_url": "https://api.github.com/users/dragostis/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 45, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 233, - "d": 94, - "c": 1 - }, - { - "w": 1486252800, - "a": 393, - "d": 275, - "c": 1 - }, - { - "w": 1486857600, - "a": 15, - "d": 35, - "c": 5 - }, - { - "w": 1487462400, - "a": 714, - "d": 208, - "c": 11 - }, - { - "w": 1488067200, - "a": 35, - "d": 12, - "c": 3 - }, - { - "w": 1488672000, - "a": 106, - "d": 11, - "c": 2 - }, - { - "w": 1489276800, - "a": 116, - "d": 24, - "c": 4 - }, - { - "w": 1489881600, - "a": 439, - "d": 722, - "c": 5 - }, - { - "w": 1490486400, - "a": 471, - "d": 90, - "c": 4 - }, - { - "w": 1491091200, - "a": 101, - "d": 3, - "c": 1 - }, - { - "w": 1491696000, - "a": 232, - "d": 77, - "c": 1 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 132, - "d": 67, - "c": 2 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 159, - "d": 34, - "c": 1 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 6, - "d": 1, - "c": 1 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 161, - "d": 85, - "c": 2 - }, - { - "w": 1512259200, - "a": 40, - "d": 9, - "c": 1 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "jakobr-google", - "id": 20046617, - "node_id": "MDQ6VXNlcjIwMDQ2NjE3", - "avatar_url": "https://avatars3.githubusercontent.com/u/20046617?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jakobr-google", - "html_url": "https://github.com/jakobr-google", - "followers_url": "https://api.github.com/users/jakobr-google/followers", - "following_url": "https://api.github.com/users/jakobr-google/following{/other_user}", - "gists_url": "https://api.github.com/users/jakobr-google/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jakobr-google/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jakobr-google/subscriptions", - "organizations_url": "https://api.github.com/users/jakobr-google/orgs", - "repos_url": "https://api.github.com/users/jakobr-google/repos", - "events_url": "https://api.github.com/users/jakobr-google/events{/privacy}", - "received_events_url": "https://api.github.com/users/jakobr-google/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 46, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 513, - "d": 88, - "c": 3 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 276, - "d": 98, - "c": 2 - }, - { - "w": 1492300800, - "a": 119, - "d": 33, - "c": 2 - }, - { - "w": 1492905600, - "a": 653, - "d": 347, - "c": 1 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 141, - "d": 41, - "c": 2 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1503187200, - "a": 4, - "d": 1, - "c": 1 - }, - { - "w": 1503792000, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 139, - "d": 42, - "c": 1 - }, - { - "w": 1505606400, - "a": 9, - "d": 3, - "c": 2 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 2, - "c": 1 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1510444800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1512259200, - "a": 12, - "d": 0, - "c": 1 - }, - { - "w": 1512864000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1513468800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1522540800, - "a": 25, - "d": 10, - "c": 1 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 6, - "d": 2, - "c": 1 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 7, - "d": 7, - "c": 2 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 12, - "d": 42, - "c": 1 - }, - { - "w": 1531612800, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 51, - "d": 2, - "c": 1 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 61, - "d": 72, - "c": 1 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 51, - "d": 4, - "c": 1 - }, - { - "w": 1549152000, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 5, - "d": 4, - "c": 2 - }, - { - "w": 1550966400, - "a": 7, - "d": 5, - "c": 1 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1553990400, - "a": 19, - "d": 26, - "c": 2 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "zanderso", - "id": 6343103, - "node_id": "MDQ6VXNlcjYzNDMxMDM=", - "avatar_url": "https://avatars0.githubusercontent.com/u/6343103?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/zanderso", - "html_url": "https://github.com/zanderso", - "followers_url": "https://api.github.com/users/zanderso/followers", - "following_url": "https://api.github.com/users/zanderso/following{/other_user}", - "gists_url": "https://api.github.com/users/zanderso/gists{/gist_id}", - "starred_url": "https://api.github.com/users/zanderso/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/zanderso/subscriptions", - "organizations_url": "https://api.github.com/users/zanderso/orgs", - "repos_url": "https://api.github.com/users/zanderso/repos", - "events_url": "https://api.github.com/users/zanderso/events{/privacy}", - "received_events_url": "https://api.github.com/users/zanderso/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 46, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 148, - "d": 33, - "c": 2 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 24, - "d": 4, - "c": 2 - }, - { - "w": 1528588800, - "a": 551, - "d": 27, - "c": 1 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 53, - "d": 28, - "c": 1 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 265, - "d": 110, - "c": 4 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 20, - "d": 6, - "c": 1 - }, - { - "w": 1537660800, - "a": 177, - "d": 75, - "c": 1 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 16, - "d": 32, - "c": 2 - }, - { - "w": 1539475200, - "a": 82, - "d": 61, - "c": 2 - }, - { - "w": 1540080000, - "a": 31, - "d": 12, - "c": 1 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 105, - "d": 65, - "c": 2 - }, - { - "w": 1541894400, - "a": 0, - "d": 1, - "c": 1 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 83, - "d": 1, - "c": 1 - }, - { - "w": 1544918400, - "a": 914, - "d": 241, - "c": 12 - }, - { - "w": 1545523200, - "a": 19, - "d": 6, - "c": 1 - }, - { - "w": 1546128000, - "a": 15, - "d": 13, - "c": 2 - }, - { - "w": 1546732800, - "a": 36, - "d": 18, - "c": 4 - }, - { - "w": 1547337600, - "a": 30, - "d": 6, - "c": 1 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 32, - "d": 13, - "c": 1 - }, - { - "w": 1549756800, - "a": 478, - "d": 478, - "c": 2 - }, - { - "w": 1550361600, - "a": 86, - "d": 74, - "c": 2 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "sbaranov", - "id": 1067150, - "node_id": "MDQ6VXNlcjEwNjcxNTA=", - "avatar_url": "https://avatars3.githubusercontent.com/u/1067150?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/sbaranov", - "html_url": "https://github.com/sbaranov", - "followers_url": "https://api.github.com/users/sbaranov/followers", - "following_url": "https://api.github.com/users/sbaranov/following{/other_user}", - "gists_url": "https://api.github.com/users/sbaranov/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sbaranov/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sbaranov/subscriptions", - "organizations_url": "https://api.github.com/users/sbaranov/orgs", - "repos_url": "https://api.github.com/users/sbaranov/repos", - "events_url": "https://api.github.com/users/sbaranov/events{/privacy}", - "received_events_url": "https://api.github.com/users/sbaranov/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 49, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 18, - "d": 1, - "c": 1 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 4, - "d": 2, - "c": 1 - }, - { - "w": 1494115200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 35, - "d": 36, - "c": 1 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 6, - "d": 1, - "c": 2 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 5, - "d": 2, - "c": 1 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 43, - "d": 16, - "c": 1 - }, - { - "w": 1515283200, - "a": 138, - "d": 138, - "c": 2 - }, - { - "w": 1515888000, - "a": 154, - "d": 53, - "c": 3 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 269, - "d": 37, - "c": 3 - }, - { - "w": 1517702400, - "a": 76, - "d": 20, - "c": 3 - }, - { - "w": 1518307200, - "a": 306, - "d": 87, - "c": 1 - }, - { - "w": 1518912000, - "a": 66, - "d": 17, - "c": 1 - }, - { - "w": 1519516800, - "a": 594, - "d": 144, - "c": 4 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 31, - "d": 25, - "c": 1 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 69, - "d": 4, - "c": 1 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1526774400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 19, - "d": 11, - "c": 2 - }, - { - "w": 1534636800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1535241600, - "a": 988, - "d": 988, - "c": 2 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 6, - "d": 25, - "c": 2 - }, - { - "w": 1539475200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 7, - "d": 7, - "c": 1 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 9, - "d": 1, - "c": 1 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 13, - "d": 10, - "c": 2 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "jcollins-g", - "id": 14116827, - "node_id": "MDQ6VXNlcjE0MTE2ODI3", - "avatar_url": "https://avatars3.githubusercontent.com/u/14116827?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jcollins-g", - "html_url": "https://github.com/jcollins-g", - "followers_url": "https://api.github.com/users/jcollins-g/followers", - "following_url": "https://api.github.com/users/jcollins-g/following{/other_user}", - "gists_url": "https://api.github.com/users/jcollins-g/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jcollins-g/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jcollins-g/subscriptions", - "organizations_url": "https://api.github.com/users/jcollins-g/orgs", - "repos_url": "https://api.github.com/users/jcollins-g/repos", - "events_url": "https://api.github.com/users/jcollins-g/events{/privacy}", - "received_events_url": "https://api.github.com/users/jcollins-g/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 50, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1468713600, - "a": 12, - "d": 6, - "c": 2 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 3, - "c": 1 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 27, - "c": 1 - }, - { - "w": 1477180800, - "a": 43, - "d": 34, - "c": 1 - }, - { - "w": 1477785600, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1479600000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 28, - "d": 28, - "c": 1 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 25, - "d": 15, - "c": 4 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 10, - "d": 2, - "c": 1 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1500163200, - "a": 7, - "d": 7, - "c": 4 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 157, - "d": 155, - "c": 4 - }, - { - "w": 1507420800, - "a": 145, - "d": 4, - "c": 2 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 55, - "d": 44, - "c": 1 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1526774400, - "a": 11, - "d": 2, - "c": 1 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 29, - "d": 4, - "c": 6 - }, - { - "w": 1532217600, - "a": 0, - "d": 9, - "c": 1 - }, - { - "w": 1532822400, - "a": 170, - "d": 5, - "c": 2 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 14, - "d": 6, - "c": 1 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 17, - "d": 71, - "c": 1 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 9, - "d": 0, - "c": 1 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "rmacnak-google", - "id": 8495071, - "node_id": "MDQ6VXNlcjg0OTUwNzE=", - "avatar_url": "https://avatars3.githubusercontent.com/u/8495071?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/rmacnak-google", - "html_url": "https://github.com/rmacnak-google", - "followers_url": "https://api.github.com/users/rmacnak-google/followers", - "following_url": "https://api.github.com/users/rmacnak-google/following{/other_user}", - "gists_url": "https://api.github.com/users/rmacnak-google/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rmacnak-google/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rmacnak-google/subscriptions", - "organizations_url": "https://api.github.com/users/rmacnak-google/orgs", - "repos_url": "https://api.github.com/users/rmacnak-google/repos", - "events_url": "https://api.github.com/users/rmacnak-google/events{/privacy}", - "received_events_url": "https://api.github.com/users/rmacnak-google/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 52, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 19, - "d": 18, - "c": 1 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 95, - "d": 8, - "c": 1 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 67, - "d": 29, - "c": 1 - }, - { - "w": 1497744000, - "a": 532, - "d": 165, - "c": 4 - }, - { - "w": 1498348800, - "a": 1248, - "d": 80, - "c": 3 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 4609, - "d": 1490, - "c": 1 - }, - { - "w": 1501372800, - "a": 3972, - "d": 4016, - "c": 3 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 50, - "d": 49, - "c": 2 - }, - { - "w": 1503187200, - "a": 1005, - "d": 37, - "c": 2 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 1171, - "d": 794, - "c": 2 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 999, - "d": 43, - "c": 1 - }, - { - "w": 1512259200, - "a": 27, - "d": 63, - "c": 1 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 43, - "d": 4, - "c": 1 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 98, - "d": 1, - "c": 1 - }, - { - "w": 1518307200, - "a": 83, - "d": 14, - "c": 1 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 24, - "d": 6, - "c": 1 - }, - { - "w": 1520121600, - "a": 248, - "d": 41, - "c": 1 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 33, - "d": 1, - "c": 1 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 110, - "d": 118, - "c": 1 - }, - { - "w": 1523750400, - "a": 1868, - "d": 675, - "c": 3 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 56, - "d": 3, - "c": 1 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1535846400, - "a": 2755, - "d": 85, - "c": 2 - }, - { - "w": 1536451200, - "a": 33, - "d": 61, - "c": 5 - }, - { - "w": 1537056000, - "a": 249, - "d": 11, - "c": 1 - }, - { - "w": 1537660800, - "a": 5, - "d": 5, - "c": 2 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 92, - "d": 36, - "c": 4 - }, - { - "w": 1540080000, - "a": 189, - "d": 54, - "c": 2 - }, - { - "w": 1540684800, - "a": 853, - "d": 15, - "c": 1 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 13, - "d": 2, - "c": 1 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "jacob314", - "id": 1226812, - "node_id": "MDQ6VXNlcjEyMjY4MTI=", - "avatar_url": "https://avatars1.githubusercontent.com/u/1226812?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jacob314", - "html_url": "https://github.com/jacob314", - "followers_url": "https://api.github.com/users/jacob314/followers", - "following_url": "https://api.github.com/users/jacob314/following{/other_user}", - "gists_url": "https://api.github.com/users/jacob314/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jacob314/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jacob314/subscriptions", - "organizations_url": "https://api.github.com/users/jacob314/orgs", - "repos_url": "https://api.github.com/users/jacob314/repos", - "events_url": "https://api.github.com/users/jacob314/events{/privacy}", - "received_events_url": "https://api.github.com/users/jacob314/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 52, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 104, - "d": 9, - "c": 3 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1517097600, - "a": 12, - "d": 8, - "c": 3 - }, - { - "w": 1517702400, - "a": 36, - "d": 140, - "c": 6 - }, - { - "w": 1518307200, - "a": 13, - "d": 41, - "c": 4 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 4, - "d": 4, - "c": 2 - }, - { - "w": 1520121600, - "a": 6, - "d": 6, - "c": 1 - }, - { - "w": 1520726400, - "a": 17, - "d": 15, - "c": 4 - }, - { - "w": 1521331200, - "a": 5, - "d": 1, - "c": 1 - }, - { - "w": 1521936000, - "a": 8, - "d": 6, - "c": 1 - }, - { - "w": 1522540800, - "a": 3, - "d": 3, - "c": 3 - }, - { - "w": 1523145600, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1523750400, - "a": 8, - "d": 8, - "c": 2 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 7, - "d": 2, - "c": 1 - }, - { - "w": 1533427200, - "a": 3, - "d": 3, - "c": 3 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 6, - "d": 6, - "c": 4 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 19, - "d": 21, - "c": 1 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 3, - "d": 1, - "c": 1 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 18, - "d": 2, - "c": 1 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "a-siva", - "id": 8633293, - "node_id": "MDQ6VXNlcjg2MzMyOTM=", - "avatar_url": "https://avatars2.githubusercontent.com/u/8633293?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/a-siva", - "html_url": "https://github.com/a-siva", - "followers_url": "https://api.github.com/users/a-siva/followers", - "following_url": "https://api.github.com/users/a-siva/following{/other_user}", - "gists_url": "https://api.github.com/users/a-siva/gists{/gist_id}", - "starred_url": "https://api.github.com/users/a-siva/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/a-siva/subscriptions", - "organizations_url": "https://api.github.com/users/a-siva/orgs", - "repos_url": "https://api.github.com/users/a-siva/repos", - "events_url": "https://api.github.com/users/a-siva/events{/privacy}", - "received_events_url": "https://api.github.com/users/a-siva/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 56, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 7, - "d": 2, - "c": 2 - }, - { - "w": 1448150400, - "a": 2, - "d": 1, - "c": 2 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 4, - "d": 5, - "c": 1 - }, - { - "w": 1449964800, - "a": 145, - "d": 3, - "c": 3 - }, - { - "w": 1450569600, - "a": 5, - "d": 1, - "c": 2 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 5, - "d": 0, - "c": 1 - }, - { - "w": 1452384000, - "a": 25, - "d": 10, - "c": 3 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 8, - "d": 3, - "c": 3 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 22, - "d": 7, - "c": 2 - }, - { - "w": 1460246400, - "a": 5, - "d": 6, - "c": 2 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 24, - "d": 0, - "c": 1 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 16, - "d": 15, - "c": 2 - }, - { - "w": 1463270400, - "a": 76, - "d": 22, - "c": 2 - }, - { - "w": 1463875200, - "a": 11, - "d": 0, - "c": 1 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 35, - "d": 2, - "c": 1 - }, - { - "w": 1468713600, - "a": 20, - "d": 2, - "c": 2 - }, - { - "w": 1469318400, - "a": 9, - "d": 1, - "c": 1 - }, - { - "w": 1469923200, - "a": 10, - "d": 19, - "c": 1 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 435, - "d": 440, - "c": 4 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1472947200, - "a": 18, - "d": 18, - "c": 1 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 10, - "d": 0, - "c": 3 - }, - { - "w": 1474761600, - "a": 0, - "d": 24, - "c": 1 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 11, - "d": 6, - "c": 1 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 3, - "d": 1, - "c": 1 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 11, - "d": 0, - "c": 1 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 13, - "d": 6, - "c": 1 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 20, - "d": 6, - "c": 2 - }, - { - "w": 1497744000, - "a": 15, - "d": 4, - "c": 2 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 45, - "d": 19, - "c": 1 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 4, - "d": 1, - "c": 1 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 21, - "d": 4, - "c": 1 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "sethladd", - "id": 5479, - "node_id": "MDQ6VXNlcjU0Nzk=", - "avatar_url": "https://avatars3.githubusercontent.com/u/5479?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/sethladd", - "html_url": "https://github.com/sethladd", - "followers_url": "https://api.github.com/users/sethladd/followers", - "following_url": "https://api.github.com/users/sethladd/following{/other_user}", - "gists_url": "https://api.github.com/users/sethladd/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sethladd/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sethladd/subscriptions", - "organizations_url": "https://api.github.com/users/sethladd/orgs", - "repos_url": "https://api.github.com/users/sethladd/repos", - "events_url": "https://api.github.com/users/sethladd/events{/privacy}", - "received_events_url": "https://api.github.com/users/sethladd/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 57, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 6, - "d": 0, - "c": 1 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 50, - "d": 0, - "c": 2 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 115, - "d": 100, - "c": 2 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 418, - "d": 169, - "c": 2 - }, - { - "w": 1487462400, - "a": 317, - "d": 68, - "c": 1 - }, - { - "w": 1488067200, - "a": 58, - "d": 42, - "c": 5 - }, - { - "w": 1488672000, - "a": 7, - "d": 7, - "c": 1 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 8, - "d": 8, - "c": 2 - }, - { - "w": 1490486400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1491091200, - "a": 39, - "d": 72, - "c": 2 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 63, - "d": 25, - "c": 3 - }, - { - "w": 1492905600, - "a": 74, - "d": 1337, - "c": 5 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 41, - "d": 42, - "c": 5 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 138, - "d": 9, - "c": 4 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 2, - "d": 3, - "c": 1 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 5, - "d": 13, - "c": 2 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 27, - "d": 4, - "c": 1 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 4, - "d": 6, - "c": 2 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 5, - "d": 2, - "c": 1 - }, - { - "w": 1518912000, - "a": 6, - "d": 3, - "c": 2 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 4, - "d": 4, - "c": 2 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 9, - "d": 2, - "c": 1 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 25, - "d": 39, - "c": 1 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 6, - "d": 5, - "c": 1 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 12, - "d": 14, - "c": 1 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 120, - "d": 1, - "c": 1 - } - ], - "author": { - "login": "mit-mit", - "id": 13644170, - "node_id": "MDQ6VXNlcjEzNjQ0MTcw", - "avatar_url": "https://avatars3.githubusercontent.com/u/13644170?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/mit-mit", - "html_url": "https://github.com/mit-mit", - "followers_url": "https://api.github.com/users/mit-mit/followers", - "following_url": "https://api.github.com/users/mit-mit/following{/other_user}", - "gists_url": "https://api.github.com/users/mit-mit/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mit-mit/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mit-mit/subscriptions", - "organizations_url": "https://api.github.com/users/mit-mit/orgs", - "repos_url": "https://api.github.com/users/mit-mit/repos", - "events_url": "https://api.github.com/users/mit-mit/events{/privacy}", - "received_events_url": "https://api.github.com/users/mit-mit/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 57, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 23, - "d": 19, - "c": 1 - }, - { - "w": 1531612800, - "a": 53, - "d": 6, - "c": 1 - }, - { - "w": 1532217600, - "a": 274, - "d": 14, - "c": 1 - }, - { - "w": 1532822400, - "a": 178, - "d": 70, - "c": 1 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 504, - "d": 0, - "c": 1 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 462, - "d": 23, - "c": 2 - }, - { - "w": 1536451200, - "a": 387, - "d": 21, - "c": 1 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 194, - "d": 13, - "c": 2 - }, - { - "w": 1538265600, - "a": 191, - "d": 44, - "c": 5 - }, - { - "w": 1538870400, - "a": 269, - "d": 13, - "c": 3 - }, - { - "w": 1539475200, - "a": 142, - "d": 9, - "c": 2 - }, - { - "w": 1540080000, - "a": 196, - "d": 0, - "c": 2 - }, - { - "w": 1540684800, - "a": 444, - "d": 13, - "c": 6 - }, - { - "w": 1541289600, - "a": 478, - "d": 110, - "c": 6 - }, - { - "w": 1541894400, - "a": 344, - "d": 23, - "c": 4 - }, - { - "w": 1542499200, - "a": 44, - "d": 1, - "c": 1 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 1226, - "d": 38, - "c": 3 - }, - { - "w": 1544918400, - "a": 1027, - "d": 2, - "c": 1 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 1800, - "d": 1034, - "c": 3 - }, - { - "w": 1547337600, - "a": 283, - "d": 97, - "c": 3 - }, - { - "w": 1547942400, - "a": 185, - "d": 107, - "c": 1 - }, - { - "w": 1548547200, - "a": 1029, - "d": 363, - "c": 2 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 209, - "d": 37, - "c": 2 - }, - { - "w": 1550361600, - "a": 412, - "d": 34, - "c": 2 - }, - { - "w": 1550966400, - "a": 532, - "d": 111, - "c": 1 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "jslavitz", - "id": 7806031, - "node_id": "MDQ6VXNlcjc4MDYwMzE=", - "avatar_url": "https://avatars1.githubusercontent.com/u/7806031?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jslavitz", - "html_url": "https://github.com/jslavitz", - "followers_url": "https://api.github.com/users/jslavitz/followers", - "following_url": "https://api.github.com/users/jslavitz/following{/other_user}", - "gists_url": "https://api.github.com/users/jslavitz/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jslavitz/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jslavitz/subscriptions", - "organizations_url": "https://api.github.com/users/jslavitz/orgs", - "repos_url": "https://api.github.com/users/jslavitz/repos", - "events_url": "https://api.github.com/users/jslavitz/events{/privacy}", - "received_events_url": "https://api.github.com/users/jslavitz/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 61, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 33, - "d": 0, - "c": 1 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 83, - "d": 3, - "c": 1 - }, - { - "w": 1443916800, - "a": 301, - "d": 45, - "c": 2 - }, - { - "w": 1444521600, - "a": 625, - "d": 355, - "c": 6 - }, - { - "w": 1445126400, - "a": 1020, - "d": 310, - "c": 7 - }, - { - "w": 1445731200, - "a": 5121, - "d": 50, - "c": 4 - }, - { - "w": 1446336000, - "a": 150, - "d": 123, - "c": 3 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 46, - "d": 17, - "c": 7 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1449964800, - "a": 5, - "d": 5, - "c": 3 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 24, - "d": 23, - "c": 3 - }, - { - "w": 1453593600, - "a": 415, - "d": 72, - "c": 1 - }, - { - "w": 1454198400, - "a": 156, - "d": 85, - "c": 6 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 324, - "d": 16, - "c": 3 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 275, - "d": 169, - "c": 2 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 368, - "d": 162, - "c": 3 - }, - { - "w": 1459641600, - "a": 198, - "d": 15, - "c": 3 - }, - { - "w": 1460246400, - "a": 359, - "d": 0, - "c": 1 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 113, - "d": 61, - "c": 2 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 72, - "d": 3, - "c": 1 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "krisgiesing", - "id": 13855787, - "node_id": "MDQ6VXNlcjEzODU1Nzg3", - "avatar_url": "https://avatars2.githubusercontent.com/u/13855787?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/krisgiesing", - "html_url": "https://github.com/krisgiesing", - "followers_url": "https://api.github.com/users/krisgiesing/followers", - "following_url": "https://api.github.com/users/krisgiesing/following{/other_user}", - "gists_url": "https://api.github.com/users/krisgiesing/gists{/gist_id}", - "starred_url": "https://api.github.com/users/krisgiesing/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/krisgiesing/subscriptions", - "organizations_url": "https://api.github.com/users/krisgiesing/orgs", - "repos_url": "https://api.github.com/users/krisgiesing/repos", - "events_url": "https://api.github.com/users/krisgiesing/events{/privacy}", - "received_events_url": "https://api.github.com/users/krisgiesing/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 72, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 216, - "c": 1 - }, - { - "w": 1434844800, - "a": 54, - "d": 65534, - "c": 2 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 41220, - "d": 41202, - "c": 5 - }, - { - "w": 1439078400, - "a": 303, - "d": 231, - "c": 7 - }, - { - "w": 1439683200, - "a": 498, - "d": 39, - "c": 2 - }, - { - "w": 1440288000, - "a": 520, - "d": 332, - "c": 10 - }, - { - "w": 1440892800, - "a": 375, - "d": 141, - "c": 14 - }, - { - "w": 1441497600, - "a": 187, - "d": 23, - "c": 6 - }, - { - "w": 1442102400, - "a": 533, - "d": 71, - "c": 7 - }, - { - "w": 1442707200, - "a": 554, - "d": 367, - "c": 4 - }, - { - "w": 1443312000, - "a": 853, - "d": 128, - "c": 8 - }, - { - "w": 1443916800, - "a": 690, - "d": 95, - "c": 6 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "iansf", - "id": 12631059, - "node_id": "MDQ6VXNlcjEyNjMxMDU5", - "avatar_url": "https://avatars0.githubusercontent.com/u/12631059?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/iansf", - "html_url": "https://github.com/iansf", - "followers_url": "https://api.github.com/users/iansf/followers", - "following_url": "https://api.github.com/users/iansf/following{/other_user}", - "gists_url": "https://api.github.com/users/iansf/gists{/gist_id}", - "starred_url": "https://api.github.com/users/iansf/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/iansf/subscriptions", - "organizations_url": "https://api.github.com/users/iansf/orgs", - "repos_url": "https://api.github.com/users/iansf/repos", - "events_url": "https://api.github.com/users/iansf/events{/privacy}", - "received_events_url": "https://api.github.com/users/iansf/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 80, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 1158, - "d": 0, - "c": 1 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 2409, - "d": 192, - "c": 3 - }, - { - "w": 1489276800, - "a": 45, - "d": 28, - "c": 2 - }, - { - "w": 1489881600, - "a": 306, - "d": 1478, - "c": 9 - }, - { - "w": 1490486400, - "a": 2369, - "d": 1405, - "c": 6 - }, - { - "w": 1491091200, - "a": 157, - "d": 66, - "c": 1 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 131, - "d": 41, - "c": 2 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 56, - "d": 56, - "c": 4 - }, - { - "w": 1494115200, - "a": 230, - "d": 236, - "c": 6 - }, - { - "w": 1494720000, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 1770, - "d": 0, - "c": 1 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 67, - "d": 45, - "c": 2 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 1366, - "d": 1, - "c": 1 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1504396800, - "a": 576, - "d": 38, - "c": 1 - }, - { - "w": 1505001600, - "a": 289, - "d": 89, - "c": 3 - }, - { - "w": 1505606400, - "a": 494, - "d": 31, - "c": 2 - }, - { - "w": 1506211200, - "a": 1048, - "d": 307, - "c": 4 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 51, - "d": 29, - "c": 3 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 8, - "d": 0, - "c": 1 - }, - { - "w": 1512259200, - "a": 55, - "d": 7, - "c": 5 - }, - { - "w": 1512864000, - "a": 179, - "d": 37, - "c": 5 - }, - { - "w": 1513468800, - "a": 76, - "d": 77, - "c": 4 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 5, - "d": 0, - "c": 1 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 9, - "d": 9, - "c": 1 - }, - { - "w": 1523145600, - "a": 354, - "d": 618, - "c": 1 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 59, - "d": 0, - "c": 1 - }, - { - "w": 1526774400, - "a": 15, - "d": 18, - "c": 1 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 258, - "d": 52, - "c": 1 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 22, - "d": 16, - "c": 1 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 287, - "d": 30, - "c": 1 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "szakarias", - "id": 3865266, - "node_id": "MDQ6VXNlcjM4NjUyNjY=", - "avatar_url": "https://avatars0.githubusercontent.com/u/3865266?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/szakarias", - "html_url": "https://github.com/szakarias", - "followers_url": "https://api.github.com/users/szakarias/followers", - "following_url": "https://api.github.com/users/szakarias/following{/other_user}", - "gists_url": "https://api.github.com/users/szakarias/gists{/gist_id}", - "starred_url": "https://api.github.com/users/szakarias/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/szakarias/subscriptions", - "organizations_url": "https://api.github.com/users/szakarias/orgs", - "repos_url": "https://api.github.com/users/szakarias/repos", - "events_url": "https://api.github.com/users/szakarias/events{/privacy}", - "received_events_url": "https://api.github.com/users/szakarias/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 84, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 7, - "d": 7, - "c": 1 - }, - { - "w": 1471737600, - "a": 372, - "d": 31, - "c": 6 - }, - { - "w": 1472342400, - "a": 260, - "d": 75, - "c": 5 - }, - { - "w": 1472947200, - "a": 243, - "d": 66, - "c": 6 - }, - { - "w": 1473552000, - "a": 489, - "d": 492, - "c": 6 - }, - { - "w": 1474156800, - "a": 683, - "d": 514, - "c": 8 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 1098, - "d": 1066, - "c": 9 - }, - { - "w": 1475971200, - "a": 157, - "d": 70, - "c": 2 - }, - { - "w": 1476576000, - "a": 17, - "d": 6, - "c": 1 - }, - { - "w": 1477180800, - "a": 128, - "d": 44, - "c": 8 - }, - { - "w": 1477785600, - "a": 221, - "d": 151, - "c": 5 - }, - { - "w": 1478390400, - "a": 211, - "d": 83, - "c": 6 - }, - { - "w": 1478995200, - "a": 481, - "d": 723, - "c": 3 - }, - { - "w": 1479600000, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1480204800, - "a": 511, - "d": 412, - "c": 4 - }, - { - "w": 1480809600, - "a": 223, - "d": 163, - "c": 4 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 599, - "d": 387, - "c": 1 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 150, - "d": 88, - "c": 2 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 5, - "d": 3, - "c": 2 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 308, - "d": 39, - "c": 1 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 163, - "d": 164, - "c": 1 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 111, - "d": 62, - "c": 1 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 325, - "d": 325, - "c": 1 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "danrubel", - "id": 2891888, - "node_id": "MDQ6VXNlcjI4OTE4ODg=", - "avatar_url": "https://avatars0.githubusercontent.com/u/2891888?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/danrubel", - "html_url": "https://github.com/danrubel", - "followers_url": "https://api.github.com/users/danrubel/followers", - "following_url": "https://api.github.com/users/danrubel/following{/other_user}", - "gists_url": "https://api.github.com/users/danrubel/gists{/gist_id}", - "starred_url": "https://api.github.com/users/danrubel/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/danrubel/subscriptions", - "organizations_url": "https://api.github.com/users/danrubel/orgs", - "repos_url": "https://api.github.com/users/danrubel/repos", - "events_url": "https://api.github.com/users/danrubel/events{/privacy}", - "received_events_url": "https://api.github.com/users/danrubel/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 91, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 23, - "d": 0, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 76, - "d": 10, - "c": 1 - }, - { - "w": 1529193600, - "a": 52, - "d": 38, - "c": 3 - }, - { - "w": 1529798400, - "a": 150, - "d": 6, - "c": 5 - }, - { - "w": 1530403200, - "a": 31, - "d": 14, - "c": 2 - }, - { - "w": 1531008000, - "a": 9, - "d": 9, - "c": 1 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 25, - "d": 2, - "c": 3 - }, - { - "w": 1532822400, - "a": 259, - "d": 97, - "c": 2 - }, - { - "w": 1533427200, - "a": 349, - "d": 78, - "c": 6 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 192, - "d": 178, - "c": 5 - }, - { - "w": 1535241600, - "a": 157, - "d": 15, - "c": 3 - }, - { - "w": 1535846400, - "a": 4, - "d": 19, - "c": 1 - }, - { - "w": 1536451200, - "a": 26, - "d": 7, - "c": 3 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 77, - "d": 41, - "c": 7 - }, - { - "w": 1538265600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1538870400, - "a": 10, - "d": 11, - "c": 3 - }, - { - "w": 1539475200, - "a": 6, - "d": 8, - "c": 2 - }, - { - "w": 1540080000, - "a": 441, - "d": 74, - "c": 2 - }, - { - "w": 1540684800, - "a": 130, - "d": 0, - "c": 1 - }, - { - "w": 1541289600, - "a": 10, - "d": 2, - "c": 3 - }, - { - "w": 1541894400, - "a": 38, - "d": 1, - "c": 1 - }, - { - "w": 1542499200, - "a": 15, - "d": 3, - "c": 1 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1544918400, - "a": 1421, - "d": 121, - "c": 3 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 12, - "d": 1, - "c": 2 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 1, - "d": 2, - "c": 1 - }, - { - "w": 1549152000, - "a": 30, - "d": 0, - "c": 1 - }, - { - "w": 1549756800, - "a": 39, - "d": 39, - "c": 1 - }, - { - "w": 1550361600, - "a": 783, - "d": 783, - "c": 2 - }, - { - "w": 1550966400, - "a": 952, - "d": 87, - "c": 8 - }, - { - "w": 1551571200, - "a": 23, - "d": 54, - "c": 2 - }, - { - "w": 1552176000, - "a": 82, - "d": 31, - "c": 5 - }, - { - "w": 1552780800, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1553385600, - "a": 16, - "d": 12, - "c": 3 - }, - { - "w": 1553990400, - "a": 1, - "d": 14, - "c": 1 - }, - { - "w": 1554595200, - "a": 93, - "d": 2, - "c": 2 - } - ], - "author": { - "login": "liyuqian", - "id": 22987568, - "node_id": "MDQ6VXNlcjIyOTg3NTY4", - "avatar_url": "https://avatars2.githubusercontent.com/u/22987568?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/liyuqian", - "html_url": "https://github.com/liyuqian", - "followers_url": "https://api.github.com/users/liyuqian/followers", - "following_url": "https://api.github.com/users/liyuqian/following{/other_user}", - "gists_url": "https://api.github.com/users/liyuqian/gists{/gist_id}", - "starred_url": "https://api.github.com/users/liyuqian/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/liyuqian/subscriptions", - "organizations_url": "https://api.github.com/users/liyuqian/orgs", - "repos_url": "https://api.github.com/users/liyuqian/repos", - "events_url": "https://api.github.com/users/liyuqian/events{/privacy}", - "received_events_url": "https://api.github.com/users/liyuqian/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 107, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 7, - "d": 380, - "c": 4 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 56, - "d": 70, - "c": 14 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 13, - "d": 6, - "c": 2 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 142, - "d": 2, - "c": 2 - }, - { - "w": 1457222400, - "a": 704, - "d": 117, - "c": 3 - }, - { - "w": 1457827200, - "a": 37, - "d": 7, - "c": 1 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 1068, - "d": 671, - "c": 4 - }, - { - "w": 1469318400, - "a": 71, - "d": 10, - "c": 1 - }, - { - "w": 1469923200, - "a": 744, - "d": 358, - "c": 2 - }, - { - "w": 1470528000, - "a": 1046, - "d": 585, - "c": 14 - }, - { - "w": 1471132800, - "a": 851, - "d": 420, - "c": 3 - }, - { - "w": 1471737600, - "a": 39, - "d": 9, - "c": 2 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 129, - "d": 41, - "c": 3 - }, - { - "w": 1474156800, - "a": 28, - "d": 3, - "c": 1 - }, - { - "w": 1474761600, - "a": 115, - "d": 40, - "c": 2 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 4, - "d": 1, - "c": 2 - }, - { - "w": 1476576000, - "a": 36, - "d": 15, - "c": 5 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 134, - "d": 55, - "c": 3 - }, - { - "w": 1478390400, - "a": 192, - "d": 480, - "c": 8 - }, - { - "w": 1478995200, - "a": 105, - "d": 3, - "c": 2 - }, - { - "w": 1479600000, - "a": 121, - "d": 225, - "c": 7 - }, - { - "w": 1480204800, - "a": 211, - "d": 186, - "c": 3 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 355, - "d": 49, - "c": 2 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 118, - "d": 67, - "c": 1 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 30, - "d": 9, - "c": 1 - }, - { - "w": 1489276800, - "a": 187, - "d": 108, - "c": 5 - }, - { - "w": 1489881600, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1490486400, - "a": 24, - "d": 12, - "c": 2 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 174, - "d": 39, - "c": 7 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "johnmccutchan", - "id": 224266, - "node_id": "MDQ6VXNlcjIyNDI2Ng==", - "avatar_url": "https://avatars2.githubusercontent.com/u/224266?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/johnmccutchan", - "html_url": "https://github.com/johnmccutchan", - "followers_url": "https://api.github.com/users/johnmccutchan/followers", - "following_url": "https://api.github.com/users/johnmccutchan/following{/other_user}", - "gists_url": "https://api.github.com/users/johnmccutchan/gists{/gist_id}", - "starred_url": "https://api.github.com/users/johnmccutchan/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/johnmccutchan/subscriptions", - "organizations_url": "https://api.github.com/users/johnmccutchan/orgs", - "repos_url": "https://api.github.com/users/johnmccutchan/repos", - "events_url": "https://api.github.com/users/johnmccutchan/events{/privacy}", - "received_events_url": "https://api.github.com/users/johnmccutchan/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 129, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 136, - "d": 43, - "c": 5 - }, - { - "w": 1508025600, - "a": 132, - "d": 23, - "c": 4 - }, - { - "w": 1508630400, - "a": 234, - "d": 41, - "c": 3 - }, - { - "w": 1509235200, - "a": 2023, - "d": 2009, - "c": 2 - }, - { - "w": 1509840000, - "a": 525, - "d": 4, - "c": 4 - }, - { - "w": 1510444800, - "a": 181, - "d": 83, - "c": 6 - }, - { - "w": 1511049600, - "a": 319, - "d": 15, - "c": 2 - }, - { - "w": 1511654400, - "a": 119, - "d": 67, - "c": 4 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 234, - "d": 146, - "c": 4 - }, - { - "w": 1513468800, - "a": 4576, - "d": 3, - "c": 2 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 3083, - "d": 3083, - "c": 3 - }, - { - "w": 1515283200, - "a": 456, - "d": 87, - "c": 4 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 40, - "d": 7, - "c": 1 - }, - { - "w": 1517097600, - "a": 33442, - "d": 189, - "c": 10 - }, - { - "w": 1517702400, - "a": 322, - "d": 11, - "c": 4 - }, - { - "w": 1518307200, - "a": 460, - "d": 58, - "c": 2 - }, - { - "w": 1518912000, - "a": 940, - "d": 113, - "c": 5 - }, - { - "w": 1519516800, - "a": 117, - "d": 8, - "c": 2 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 2, - "d": 8, - "c": 1 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 408, - "d": 629, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1531612800, - "a": 802, - "d": 3, - "c": 3 - }, - { - "w": 1532217600, - "a": 2187, - "d": 45, - "c": 6 - }, - { - "w": 1532822400, - "a": 468, - "d": 172, - "c": 2 - }, - { - "w": 1533427200, - "a": 561, - "d": 406, - "c": 7 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 469, - "d": 65, - "c": 8 - }, - { - "w": 1535241600, - "a": 679, - "d": 46, - "c": 5 - }, - { - "w": 1535846400, - "a": 145, - "d": 1, - "c": 3 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 181, - "d": 64, - "c": 1 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 3695, - "d": 2912, - "c": 4 - }, - { - "w": 1541289600, - "a": 655, - "d": 58, - "c": 5 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 4, - "d": 11, - "c": 2 - }, - { - "w": 1545523200, - "a": 45, - "d": 8, - "c": 4 - }, - { - "w": 1546128000, - "a": 12, - "d": 0, - "c": 1 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 1, - "d": 11, - "c": 1 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 62, - "d": 2, - "c": 1 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 22, - "d": 283, - "c": 3 - }, - { - "w": 1553385600, - "a": 9, - "d": 1, - "c": 1 - }, - { - "w": 1553990400, - "a": 119, - "d": 9, - "c": 1 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "amirh", - "id": 1024117, - "node_id": "MDQ6VXNlcjEwMjQxMTc=", - "avatar_url": "https://avatars2.githubusercontent.com/u/1024117?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/amirh", - "html_url": "https://github.com/amirh", - "followers_url": "https://api.github.com/users/amirh/followers", - "following_url": "https://api.github.com/users/amirh/following{/other_user}", - "gists_url": "https://api.github.com/users/amirh/gists{/gist_id}", - "starred_url": "https://api.github.com/users/amirh/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/amirh/subscriptions", - "organizations_url": "https://api.github.com/users/amirh/orgs", - "repos_url": "https://api.github.com/users/amirh/repos", - "events_url": "https://api.github.com/users/amirh/events{/privacy}", - "received_events_url": "https://api.github.com/users/amirh/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 131, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 52, - "d": 40, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 117, - "d": 48, - "c": 1 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 6, - "d": 5, - "c": 2 - }, - { - "w": 1529193600, - "a": 194, - "d": 8, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 227, - "d": 19, - "c": 1 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 1484, - "d": 1576, - "c": 6 - }, - { - "w": 1538265600, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 80, - "d": 21, - "c": 3 - }, - { - "w": 1540080000, - "a": 637, - "d": 636, - "c": 6 - }, - { - "w": 1540684800, - "a": 3931, - "d": 2082, - "c": 5 - }, - { - "w": 1541289600, - "a": 326, - "d": 84, - "c": 10 - }, - { - "w": 1541894400, - "a": 656, - "d": 144, - "c": 5 - }, - { - "w": 1542499200, - "a": 12, - "d": 3, - "c": 2 - }, - { - "w": 1543104000, - "a": 85, - "d": 15, - "c": 1 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 9, - "d": 2, - "c": 2 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 570, - "d": 558, - "c": 8 - }, - { - "w": 1547337600, - "a": 252, - "d": 259, - "c": 11 - }, - { - "w": 1547942400, - "a": 707, - "d": 399, - "c": 10 - }, - { - "w": 1548547200, - "a": 36, - "d": 255, - "c": 2 - }, - { - "w": 1549152000, - "a": 62, - "d": 3, - "c": 1 - }, - { - "w": 1549756800, - "a": 417, - "d": 130, - "c": 5 - }, - { - "w": 1550361600, - "a": 19575, - "d": 408, - "c": 11 - }, - { - "w": 1550966400, - "a": 14, - "d": 5, - "c": 3 - }, - { - "w": 1551571200, - "a": 724, - "d": 169, - "c": 9 - }, - { - "w": 1552176000, - "a": 636, - "d": 388, - "c": 11 - }, - { - "w": 1552780800, - "a": 1269, - "d": 414, - "c": 7 - }, - { - "w": 1553385600, - "a": 7, - "d": 9, - "c": 2 - }, - { - "w": 1553990400, - "a": 640, - "d": 0, - "c": 2 - }, - { - "w": 1554595200, - "a": 903, - "d": 25, - "c": 1 - } - ], - "author": { - "login": "dnfield", - "id": 8620741, - "node_id": "MDQ6VXNlcjg2MjA3NDE=", - "avatar_url": "https://avatars3.githubusercontent.com/u/8620741?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/dnfield", - "html_url": "https://github.com/dnfield", - "followers_url": "https://api.github.com/users/dnfield/followers", - "following_url": "https://api.github.com/users/dnfield/following{/other_user}", - "gists_url": "https://api.github.com/users/dnfield/gists{/gist_id}", - "starred_url": "https://api.github.com/users/dnfield/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/dnfield/subscriptions", - "organizations_url": "https://api.github.com/users/dnfield/orgs", - "repos_url": "https://api.github.com/users/dnfield/repos", - "events_url": "https://api.github.com/users/dnfield/events{/privacy}", - "received_events_url": "https://api.github.com/users/dnfield/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 139, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 63, - "d": 17, - "c": 4 - }, - { - "w": 1456617600, - "a": 14, - "d": 0, - "c": 1 - }, - { - "w": 1457222400, - "a": 10, - "d": 19, - "c": 3 - }, - { - "w": 1457827200, - "a": 0, - "d": 2, - "c": 1 - }, - { - "w": 1458432000, - "a": 0, - "d": 3, - "c": 1 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1460246400, - "a": 11, - "d": 13, - "c": 4 - }, - { - "w": 1460851200, - "a": 8, - "d": 5, - "c": 2 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 676, - "d": 596, - "c": 12 - }, - { - "w": 1462665600, - "a": 243, - "d": 276, - "c": 10 - }, - { - "w": 1463270400, - "a": 38, - "d": 36, - "c": 9 - }, - { - "w": 1463875200, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1464480000, - "a": 13, - "d": 9, - "c": 5 - }, - { - "w": 1465084800, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1465689600, - "a": 143, - "d": 31, - "c": 6 - }, - { - "w": 1466294400, - "a": 59, - "d": 44, - "c": 5 - }, - { - "w": 1466899200, - "a": 25, - "d": 27, - "c": 4 - }, - { - "w": 1467504000, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1469318400, - "a": 21, - "d": 21, - "c": 3 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 19, - "d": 6, - "c": 2 - }, - { - "w": 1471132800, - "a": 7, - "d": 1, - "c": 1 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 47, - "d": 47, - "c": 1 - }, - { - "w": 1473552000, - "a": 46, - "d": 19, - "c": 2 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 8, - "d": 9, - "c": 2 - }, - { - "w": 1475971200, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1476576000, - "a": 2, - "d": 3, - "c": 2 - }, - { - "w": 1477180800, - "a": 5, - "d": 3, - "c": 1 - }, - { - "w": 1477785600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1478390400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1478995200, - "a": 4, - "d": 9, - "c": 2 - }, - { - "w": 1479600000, - "a": 4, - "d": 1, - "c": 1 - }, - { - "w": 1480204800, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1480809600, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 91, - "d": 29, - "c": 2 - }, - { - "w": 1484438400, - "a": 37, - "d": 94, - "c": 2 - }, - { - "w": 1485043200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1486857600, - "a": 11, - "d": 5, - "c": 2 - }, - { - "w": 1487462400, - "a": 16, - "d": 15, - "c": 1 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 10, - "d": 7, - "c": 4 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 6, - "d": 6, - "c": 1 - }, - { - "w": 1491091200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1491696000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1492300800, - "a": 7, - "d": 16, - "c": 3 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 12, - "d": 9, - "c": 1 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 9, - "d": 4, - "c": 1 - }, - { - "w": 1500163200, - "a": 81, - "d": 10, - "c": 2 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 10, - "d": 9, - "c": 2 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 56, - "d": 19, - "c": 2 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 133, - "d": 138, - "c": 1 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "pq", - "id": 67586, - "node_id": "MDQ6VXNlcjY3NTg2", - "avatar_url": "https://avatars3.githubusercontent.com/u/67586?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/pq", - "html_url": "https://github.com/pq", - "followers_url": "https://api.github.com/users/pq/followers", - "following_url": "https://api.github.com/users/pq/following{/other_user}", - "gists_url": "https://api.github.com/users/pq/gists{/gist_id}", - "starred_url": "https://api.github.com/users/pq/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/pq/subscriptions", - "organizations_url": "https://api.github.com/users/pq/orgs", - "repos_url": "https://api.github.com/users/pq/repos", - "events_url": "https://api.github.com/users/pq/events{/privacy}", - "received_events_url": "https://api.github.com/users/pq/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 144, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 46, - "d": 0, - "c": 1 - }, - { - "w": 1431820800, - "a": 4, - "d": 2, - "c": 1 - }, - { - "w": 1432425600, - "a": 65, - "d": 9, - "c": 3 - }, - { - "w": 1433030400, - "a": 65, - "d": 50, - "c": 7 - }, - { - "w": 1433635200, - "a": 55, - "d": 41, - "c": 10 - }, - { - "w": 1434240000, - "a": 93, - "d": 2, - "c": 2 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 76, - "d": 59, - "c": 3 - }, - { - "w": 1437264000, - "a": 450, - "d": 416, - "c": 4 - }, - { - "w": 1437868800, - "a": 556, - "d": 375, - "c": 4 - }, - { - "w": 1438473600, - "a": 433, - "d": 448, - "c": 7 - }, - { - "w": 1439078400, - "a": 211, - "d": 105, - "c": 5 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 5, - "d": 1, - "c": 1 - }, - { - "w": 1441497600, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 53, - "d": 0, - "c": 1 - }, - { - "w": 1443312000, - "a": 213, - "d": 7, - "c": 1 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 529, - "d": 50, - "c": 5 - }, - { - "w": 1445731200, - "a": 343, - "d": 324, - "c": 6 - }, - { - "w": 1446336000, - "a": 217, - "d": 112, - "c": 10 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 188, - "d": 4, - "c": 1 - }, - { - "w": 1452988800, - "a": 160, - "d": 62, - "c": 1 - }, - { - "w": 1453593600, - "a": 8, - "d": 6, - "c": 1 - }, - { - "w": 1454198400, - "a": 343, - "d": 188, - "c": 1 - }, - { - "w": 1454803200, - "a": 235, - "d": 231, - "c": 3 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 6, - "d": 8, - "c": 1 - }, - { - "w": 1456617600, - "a": 0, - "d": 245, - "c": 1 - }, - { - "w": 1457222400, - "a": 189, - "d": 23, - "c": 2 - }, - { - "w": 1457827200, - "a": 32, - "d": 10, - "c": 2 - }, - { - "w": 1458432000, - "a": 393, - "d": 76, - "c": 1 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 600, - "d": 54, - "c": 3 - }, - { - "w": 1461456000, - "a": 13, - "d": 8, - "c": 1 - }, - { - "w": 1462060800, - "a": 374, - "d": 102, - "c": 1 - }, - { - "w": 1462665600, - "a": 146, - "d": 67, - "c": 3 - }, - { - "w": 1463270400, - "a": 1, - "d": 4, - "c": 2 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 781, - "d": 4, - "c": 1 - }, - { - "w": 1465084800, - "a": 155, - "d": 111, - "c": 6 - }, - { - "w": 1465689600, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 13, - "d": 9, - "c": 1 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 32, - "d": 38, - "c": 1 - }, - { - "w": 1469318400, - "a": 7, - "d": 4, - "c": 2 - }, - { - "w": 1469923200, - "a": 130, - "d": 37, - "c": 3 - }, - { - "w": 1470528000, - "a": 18, - "d": 5, - "c": 1 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 354, - "d": 13, - "c": 1 - }, - { - "w": 1472342400, - "a": 101, - "d": 18, - "c": 3 - }, - { - "w": 1472947200, - "a": 162, - "d": 42, - "c": 2 - }, - { - "w": 1473552000, - "a": 99, - "d": 10, - "c": 2 - }, - { - "w": 1474156800, - "a": 153, - "d": 6, - "c": 4 - }, - { - "w": 1474761600, - "a": 29, - "d": 16, - "c": 2 - }, - { - "w": 1475366400, - "a": 256, - "d": 96, - "c": 1 - }, - { - "w": 1475971200, - "a": 298, - "d": 101, - "c": 1 - }, - { - "w": 1476576000, - "a": 85, - "d": 80, - "c": 3 - }, - { - "w": 1477180800, - "a": 91, - "d": 7, - "c": 2 - }, - { - "w": 1477785600, - "a": 456, - "d": 335, - "c": 2 - }, - { - "w": 1478390400, - "a": 43, - "d": 8, - "c": 1 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 18, - "d": 2, - "c": 1 - }, - { - "w": 1481414400, - "a": 316, - "d": 48, - "c": 4 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 37, - "d": 1, - "c": 1 - }, - { - "w": 1484438400, - "a": 181, - "d": 43, - "c": 1 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "mpcomplete", - "id": 1071986, - "node_id": "MDQ6VXNlcjEwNzE5ODY=", - "avatar_url": "https://avatars2.githubusercontent.com/u/1071986?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/mpcomplete", - "html_url": "https://github.com/mpcomplete", - "followers_url": "https://api.github.com/users/mpcomplete/followers", - "following_url": "https://api.github.com/users/mpcomplete/following{/other_user}", - "gists_url": "https://api.github.com/users/mpcomplete/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mpcomplete/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mpcomplete/subscriptions", - "organizations_url": "https://api.github.com/users/mpcomplete/orgs", - "repos_url": "https://api.github.com/users/mpcomplete/repos", - "events_url": "https://api.github.com/users/mpcomplete/events{/privacy}", - "received_events_url": "https://api.github.com/users/mpcomplete/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 146, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 37, - "d": 37, - "c": 1 - }, - { - "w": 1480809600, - "a": 815, - "d": 814, - "c": 5 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 387, - "d": 387, - "c": 6 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 360, - "d": 376, - "c": 4 - }, - { - "w": 1488067200, - "a": 52, - "d": 44, - "c": 2 - }, - { - "w": 1488672000, - "a": 321, - "d": 324, - "c": 5 - }, - { - "w": 1489276800, - "a": 190, - "d": 296, - "c": 4 - }, - { - "w": 1489881600, - "a": 84, - "d": 84, - "c": 3 - }, - { - "w": 1490486400, - "a": 291, - "d": 208, - "c": 2 - }, - { - "w": 1491091200, - "a": 128, - "d": 143, - "c": 3 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 539, - "d": 531, - "c": 7 - }, - { - "w": 1492905600, - "a": 593, - "d": 671, - "c": 2 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 147, - "d": 67, - "c": 6 - }, - { - "w": 1494720000, - "a": 4, - "d": 4, - "c": 2 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 372, - "d": 432, - "c": 2 - }, - { - "w": 1496534400, - "a": 499, - "d": 557, - "c": 6 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 66, - "d": 40, - "c": 1 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 20, - "d": 19, - "c": 1 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 184, - "d": 170, - "c": 2 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 320, - "d": 314, - "c": 2 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 58, - "d": 57, - "c": 2 - }, - { - "w": 1508630400, - "a": 776, - "d": 792, - "c": 4 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 92, - "d": 96, - "c": 3 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 69, - "d": 79, - "c": 2 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 436, - "d": 432, - "c": 1 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 137, - "d": 137, - "c": 1 - }, - { - "w": 1517097600, - "a": 1195, - "d": 1186, - "c": 3 - }, - { - "w": 1517702400, - "a": 78, - "d": 79, - "c": 2 - }, - { - "w": 1518307200, - "a": 46, - "d": 42, - "c": 4 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 35, - "d": 35, - "c": 1 - }, - { - "w": 1520726400, - "a": 84, - "d": 84, - "c": 1 - }, - { - "w": 1521331200, - "a": 1115, - "d": 1122, - "c": 3 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 12, - "d": 0, - "c": 1 - }, - { - "w": 1523145600, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1523750400, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 16, - "d": 6, - "c": 2 - }, - { - "w": 1527984000, - "a": 1920, - "d": 1920, - "c": 1 - }, - { - "w": 1528588800, - "a": 5, - "d": 5, - "c": 1 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 41074, - "d": 41073, - "c": 1 - }, - { - "w": 1532217600, - "a": 41599, - "d": 41598, - "c": 1 - }, - { - "w": 1532822400, - "a": 41653, - "d": 41652, - "c": 1 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 777, - "d": 766, - "c": 2 - }, - { - "w": 1536451200, - "a": 26763, - "d": 26755, - "c": 5 - }, - { - "w": 1537056000, - "a": 8, - "d": 11, - "c": 1 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 1650, - "d": 1573, - "c": 7 - }, - { - "w": 1538870400, - "a": 120, - "d": 131, - "c": 2 - }, - { - "w": 1539475200, - "a": 406, - "d": 422, - "c": 4 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 147, - "d": 150, - "c": 1 - }, - { - "w": 1541289600, - "a": 16, - "d": 16, - "c": 1 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 22, - "d": 14, - "c": 1 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 360, - "d": 340, - "c": 4 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 111, - "d": 98, - "c": 2 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 50, - "d": 49, - "c": 1 - }, - { - "w": 1548547200, - "a": 675, - "d": 549, - "c": 1 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 931, - "d": 717, - "c": 1 - }, - { - "w": 1550966400, - "a": 5183, - "d": 5183, - "c": 1 - }, - { - "w": 1551571200, - "a": 1700, - "d": 1837, - "c": 3 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 594, - "d": 491, - "c": 2 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 7, - "d": 7, - "c": 2 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "a14n", - "id": 1206632, - "node_id": "MDQ6VXNlcjEyMDY2MzI=", - "avatar_url": "https://avatars1.githubusercontent.com/u/1206632?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/a14n", - "html_url": "https://github.com/a14n", - "followers_url": "https://api.github.com/users/a14n/followers", - "following_url": "https://api.github.com/users/a14n/following{/other_user}", - "gists_url": "https://api.github.com/users/a14n/gists{/gist_id}", - "starred_url": "https://api.github.com/users/a14n/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/a14n/subscriptions", - "organizations_url": "https://api.github.com/users/a14n/orgs", - "repos_url": "https://api.github.com/users/a14n/repos", - "events_url": "https://api.github.com/users/a14n/events{/privacy}", - "received_events_url": "https://api.github.com/users/a14n/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 159, - "weeks": [ - { - "w": 1413676800, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 56, - "d": 0, - "c": 1 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 7, - "d": 1, - "c": 1 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1424563200, - "a": 3186, - "d": 65, - "c": 6 - }, - { - "w": 1425168000, - "a": 17, - "d": 14, - "c": 3 - }, - { - "w": 1425772800, - "a": 32, - "d": 27, - "c": 3 - }, - { - "w": 1426377600, - "a": 468, - "d": 5717, - "c": 6 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 37, - "d": 20, - "c": 4 - }, - { - "w": 1428796800, - "a": 13, - "d": 64, - "c": 4 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 113, - "d": 5, - "c": 6 - }, - { - "w": 1430611200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1431216000, - "a": 18, - "d": 0, - "c": 1 - }, - { - "w": 1431820800, - "a": 52, - "d": 0, - "c": 2 - }, - { - "w": 1432425600, - "a": 153, - "d": 30, - "c": 4 - }, - { - "w": 1433030400, - "a": 67, - "d": 44, - "c": 6 - }, - { - "w": 1433635200, - "a": 39, - "d": 22, - "c": 3 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 26, - "d": 30, - "c": 3 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 14, - "d": 3, - "c": 1 - }, - { - "w": 1437264000, - "a": 250, - "d": 128, - "c": 4 - }, - { - "w": 1437868800, - "a": 6, - "d": 2, - "c": 2 - }, - { - "w": 1438473600, - "a": 67, - "d": 17, - "c": 5 - }, - { - "w": 1439078400, - "a": 290, - "d": 87, - "c": 10 - }, - { - "w": 1439683200, - "a": 97, - "d": 78, - "c": 8 - }, - { - "w": 1440288000, - "a": 394, - "d": 59, - "c": 8 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 16, - "d": 29696, - "c": 1 - }, - { - "w": 1447545600, - "a": 2, - "d": 1, - "c": 2 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 144, - "d": 8, - "c": 6 - }, - { - "w": 1449360000, - "a": 63, - "d": 26, - "c": 5 - }, - { - "w": 1449964800, - "a": 351, - "d": 216, - "c": 10 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 23, - "d": 9, - "c": 3 - }, - { - "w": 1452384000, - "a": 382, - "d": 5, - "c": 4 - }, - { - "w": 1452988800, - "a": 29, - "d": 28, - "c": 2 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 101, - "d": 1, - "c": 2 - }, - { - "w": 1454803200, - "a": 214, - "d": 371, - "c": 5 - }, - { - "w": 1455408000, - "a": 8, - "d": 6, - "c": 1 - }, - { - "w": 1456012800, - "a": 64, - "d": 1379, - "c": 2 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 18, - "d": 178, - "c": 2 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 117, - "d": 20, - "c": 5 - }, - { - "w": 1460851200, - "a": 22, - "d": 3, - "c": 1 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1462665600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1463270400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 3, - "d": 1, - "c": 1 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 74, - "c": 2 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "eseidelGoogle", - "id": 11857803, - "node_id": "MDQ6VXNlcjExODU3ODAz", - "avatar_url": "https://avatars2.githubusercontent.com/u/11857803?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/eseidelGoogle", - "html_url": "https://github.com/eseidelGoogle", - "followers_url": "https://api.github.com/users/eseidelGoogle/followers", - "following_url": "https://api.github.com/users/eseidelGoogle/following{/other_user}", - "gists_url": "https://api.github.com/users/eseidelGoogle/gists{/gist_id}", - "starred_url": "https://api.github.com/users/eseidelGoogle/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/eseidelGoogle/subscriptions", - "organizations_url": "https://api.github.com/users/eseidelGoogle/orgs", - "repos_url": "https://api.github.com/users/eseidelGoogle/repos", - "events_url": "https://api.github.com/users/eseidelGoogle/events{/privacy}", - "received_events_url": "https://api.github.com/users/eseidelGoogle/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 172, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 47, - "d": 10, - "c": 1 - }, - { - "w": 1432425600, - "a": 32, - "d": 5, - "c": 2 - }, - { - "w": 1433030400, - "a": 258, - "d": 102, - "c": 7 - }, - { - "w": 1433635200, - "a": 60, - "d": 6, - "c": 2 - }, - { - "w": 1434240000, - "a": 458, - "d": 257, - "c": 10 - }, - { - "w": 1434844800, - "a": 134, - "d": 83, - "c": 3 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 52397, - "d": 129, - "c": 18 - }, - { - "w": 1437264000, - "a": 897, - "d": 469, - "c": 7 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 30, - "d": 4, - "c": 3 - }, - { - "w": 1439078400, - "a": 417, - "d": 164, - "c": 7 - }, - { - "w": 1439683200, - "a": 572, - "d": 222, - "c": 14 - }, - { - "w": 1440288000, - "a": 631, - "d": 43, - "c": 7 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 14, - "d": 14, - "c": 1 - }, - { - "w": 1442102400, - "a": 1040, - "d": 357, - "c": 7 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 10, - "d": 7, - "c": 4 - }, - { - "w": 1443916800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1444521600, - "a": 70, - "d": 2, - "c": 2 - }, - { - "w": 1445126400, - "a": 181, - "d": 12, - "c": 1 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 249, - "d": 0, - "c": 1 - }, - { - "w": 1446940800, - "a": 152, - "d": 4, - "c": 3 - }, - { - "w": 1447545600, - "a": 111, - "d": 78, - "c": 6 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 288, - "d": 151, - "c": 2 - }, - { - "w": 1449360000, - "a": 84, - "d": 24, - "c": 1 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 53, - "c": 1 - }, - { - "w": 1452988800, - "a": 4, - "d": 4, - "c": 2 - }, - { - "w": 1453593600, - "a": 57, - "d": 29, - "c": 4 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 13, - "d": 13, - "c": 3 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 4, - "d": 6, - "c": 1 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1457827200, - "a": 51, - "d": 3, - "c": 2 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 6, - "d": 2, - "c": 3 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 11, - "d": 0, - "c": 1 - }, - { - "w": 1462665600, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1463270400, - "a": 30, - "d": 56, - "c": 2 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 72, - "d": 18, - "c": 4 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 646, - "d": 11, - "c": 1 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 174, - "d": 0, - "c": 2 - }, - { - "w": 1471737600, - "a": 159, - "d": 15, - "c": 2 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 27, - "d": 6, - "c": 2 - }, - { - "w": 1480809600, - "a": 26, - "d": 21, - "c": 1 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 129, - "d": 42, - "c": 2 - }, - { - "w": 1490486400, - "a": 18, - "d": 18, - "c": 6 - }, - { - "w": 1491091200, - "a": 4, - "d": 8, - "c": 2 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 27, - "d": 6, - "c": 3 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 8, - "d": 8, - "c": 2 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 3, - "d": 2, - "c": 1 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 42, - "d": 2, - "c": 1 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 4, - "d": 10, - "c": 2 - }, - { - "w": 1504396800, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1505001600, - "a": 47, - "d": 12, - "c": 3 - }, - { - "w": 1505606400, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 8, - "d": 8, - "c": 2 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 8, - "d": 8, - "c": 2 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "collinjackson", - "id": 394889, - "node_id": "MDQ6VXNlcjM5NDg4OQ==", - "avatar_url": "https://avatars2.githubusercontent.com/u/394889?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/collinjackson", - "html_url": "https://github.com/collinjackson", - "followers_url": "https://api.github.com/users/collinjackson/followers", - "following_url": "https://api.github.com/users/collinjackson/following{/other_user}", - "gists_url": "https://api.github.com/users/collinjackson/gists{/gist_id}", - "starred_url": "https://api.github.com/users/collinjackson/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/collinjackson/subscriptions", - "organizations_url": "https://api.github.com/users/collinjackson/orgs", - "repos_url": "https://api.github.com/users/collinjackson/repos", - "events_url": "https://api.github.com/users/collinjackson/events{/privacy}", - "received_events_url": "https://api.github.com/users/collinjackson/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 175, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 451, - "d": 2, - "c": 3 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 5, - "d": 5, - "c": 1 - }, - { - "w": 1519516800, - "a": 90, - "d": 48, - "c": 2 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 6, - "c": 1 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 781, - "d": 180, - "c": 28 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 86, - "d": 34, - "c": 8 - }, - { - "w": 1525564800, - "a": 50, - "d": 31, - "c": 9 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 115, - "d": 12, - "c": 2 - }, - { - "w": 1527379200, - "a": 241, - "d": 32, - "c": 6 - }, - { - "w": 1527984000, - "a": 69, - "d": 19, - "c": 4 - }, - { - "w": 1528588800, - "a": 931, - "d": 929, - "c": 5 - }, - { - "w": 1529193600, - "a": 3, - "d": 2, - "c": 1 - }, - { - "w": 1529798400, - "a": 1080, - "d": 340, - "c": 15 - }, - { - "w": 1530403200, - "a": 28, - "d": 20, - "c": 6 - }, - { - "w": 1531008000, - "a": 785, - "d": 597, - "c": 6 - }, - { - "w": 1531612800, - "a": 297, - "d": 95, - "c": 5 - }, - { - "w": 1532217600, - "a": 367, - "d": 299, - "c": 7 - }, - { - "w": 1532822400, - "a": 57, - "d": 74, - "c": 6 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 59, - "d": 17, - "c": 4 - }, - { - "w": 1535241600, - "a": 34, - "d": 15, - "c": 4 - }, - { - "w": 1535846400, - "a": 509, - "d": 361, - "c": 12 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 7, - "d": 13, - "c": 3 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 19, - "d": 14, - "c": 6 - }, - { - "w": 1538870400, - "a": 23, - "d": 11, - "c": 1 - }, - { - "w": 1539475200, - "a": 34, - "d": 24, - "c": 2 - }, - { - "w": 1540080000, - "a": 71, - "d": 27, - "c": 3 - }, - { - "w": 1540684800, - "a": 72, - "d": 2, - "c": 1 - }, - { - "w": 1541289600, - "a": 165, - "d": 95, - "c": 2 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 268, - "d": 250, - "c": 3 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 160, - "d": 26, - "c": 3 - }, - { - "w": 1544918400, - "a": 24, - "d": 11, - "c": 2 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 448, - "d": 33, - "c": 4 - }, - { - "w": 1547337600, - "a": 18, - "d": 14, - "c": 3 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 4, - "d": 2, - "c": 2 - }, - { - "w": 1549152000, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1549756800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 76, - "d": 4, - "c": 1 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "DanTup", - "id": 1078012, - "node_id": "MDQ6VXNlcjEwNzgwMTI=", - "avatar_url": "https://avatars2.githubusercontent.com/u/1078012?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/DanTup", - "html_url": "https://github.com/DanTup", - "followers_url": "https://api.github.com/users/DanTup/followers", - "following_url": "https://api.github.com/users/DanTup/following{/other_user}", - "gists_url": "https://api.github.com/users/DanTup/gists{/gist_id}", - "starred_url": "https://api.github.com/users/DanTup/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/DanTup/subscriptions", - "organizations_url": "https://api.github.com/users/DanTup/orgs", - "repos_url": "https://api.github.com/users/DanTup/repos", - "events_url": "https://api.github.com/users/DanTup/events{/privacy}", - "received_events_url": "https://api.github.com/users/DanTup/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 188, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 2268, - "d": 563, - "c": 30 - }, - { - "w": 1435449600, - "a": 390, - "d": 34, - "c": 6 - }, - { - "w": 1436054400, - "a": 782, - "d": 402, - "c": 16 - }, - { - "w": 1436659200, - "a": 56, - "d": 17, - "c": 1 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 109638, - "d": 108841, - "c": 5 - }, - { - "w": 1438473600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1439078400, - "a": 63, - "d": 0, - "c": 1 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 732, - "d": 0, - "c": 1 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 13, - "d": 12, - "c": 1 - }, - { - "w": 1443312000, - "a": 140, - "d": 0, - "c": 1 - }, - { - "w": 1443916800, - "a": 91, - "d": 30, - "c": 9 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 14, - "d": 13, - "c": 3 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 162, - "d": 5, - "c": 2 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 6, - "d": 5, - "c": 1 - }, - { - "w": 1452384000, - "a": 176, - "d": 82, - "c": 8 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 9, - "d": 6, - "c": 4 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 324, - "d": 99, - "c": 9 - }, - { - "w": 1455408000, - "a": 1509, - "d": 1555, - "c": 16 - }, - { - "w": 1456012800, - "a": 867, - "d": 506, - "c": 8 - }, - { - "w": 1456617600, - "a": 61, - "d": 21, - "c": 1 - }, - { - "w": 1457222400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 133, - "d": 75, - "c": 6 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 27, - "d": 22, - "c": 3 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1462665600, - "a": 49, - "d": 23, - "c": 6 - }, - { - "w": 1463270400, - "a": 19, - "d": 3, - "c": 4 - }, - { - "w": 1463875200, - "a": 37, - "d": 24, - "c": 2 - }, - { - "w": 1464480000, - "a": 16, - "d": 7, - "c": 1 - }, - { - "w": 1465084800, - "a": 9, - "d": 3, - "c": 1 - }, - { - "w": 1465689600, - "a": 165, - "d": 16, - "c": 1 - }, - { - "w": 1466294400, - "a": 392, - "d": 8, - "c": 3 - }, - { - "w": 1466899200, - "a": 22, - "d": 55, - "c": 2 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 19, - "d": 19, - "c": 2 - }, - { - "w": 1470528000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1471132800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1471737600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 4, - "d": 3, - "c": 2 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 1695, - "d": 477, - "c": 1 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1478390400, - "a": 127, - "d": 14, - "c": 1 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 3, - "d": 2, - "c": 2 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 5, - "d": 3, - "c": 2 - }, - { - "w": 1481414400, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 17, - "d": 0, - "c": 1 - }, - { - "w": 1485648000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 4, - "d": 18, - "c": 1 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 19, - "d": 27, - "c": 5 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 3, - "d": 1, - "c": 1 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 1, - "c": 1 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 11, - "d": 0, - "c": 1 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "chinmaygarde", - "id": 44085, - "node_id": "MDQ6VXNlcjQ0MDg1", - "avatar_url": "https://avatars1.githubusercontent.com/u/44085?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/chinmaygarde", - "html_url": "https://github.com/chinmaygarde", - "followers_url": "https://api.github.com/users/chinmaygarde/followers", - "following_url": "https://api.github.com/users/chinmaygarde/following{/other_user}", - "gists_url": "https://api.github.com/users/chinmaygarde/gists{/gist_id}", - "starred_url": "https://api.github.com/users/chinmaygarde/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/chinmaygarde/subscriptions", - "organizations_url": "https://api.github.com/users/chinmaygarde/orgs", - "repos_url": "https://api.github.com/users/chinmaygarde/repos", - "events_url": "https://api.github.com/users/chinmaygarde/events{/privacy}", - "received_events_url": "https://api.github.com/users/chinmaygarde/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 189, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 712, - "d": 0, - "c": 1 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 1492, - "d": 111, - "c": 2 - }, - { - "w": 1488672000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1489276800, - "a": 693, - "d": 686, - "c": 3 - }, - { - "w": 1489881600, - "a": 83, - "d": 11, - "c": 3 - }, - { - "w": 1490486400, - "a": 131, - "d": 55, - "c": 1 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 196, - "d": 171, - "c": 4 - }, - { - "w": 1492905600, - "a": 2526, - "d": 259, - "c": 5 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 142, - "d": 111, - "c": 5 - }, - { - "w": 1494720000, - "a": 45, - "d": 83, - "c": 2 - }, - { - "w": 1495324800, - "a": 1711, - "d": 932, - "c": 6 - }, - { - "w": 1495929600, - "a": 530, - "d": 546, - "c": 4 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 575, - "d": 453, - "c": 5 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 178, - "d": 30, - "c": 3 - }, - { - "w": 1501977600, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1502582400, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1503187200, - "a": 4262, - "d": 2297, - "c": 6 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 561, - "d": 297, - "c": 4 - }, - { - "w": 1505001600, - "a": 138, - "d": 139, - "c": 1 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 187, - "d": 3, - "c": 1 - }, - { - "w": 1509840000, - "a": 167, - "d": 142, - "c": 8 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 1541, - "d": 159, - "c": 5 - }, - { - "w": 1511654400, - "a": 17, - "d": 10, - "c": 3 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 499, - "d": 472, - "c": 5 - }, - { - "w": 1513468800, - "a": 78, - "d": 38, - "c": 4 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 1059, - "d": 1092, - "c": 6 - }, - { - "w": 1515283200, - "a": 46, - "d": 87, - "c": 2 - }, - { - "w": 1515888000, - "a": 365, - "d": 30, - "c": 1 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1518307200, - "a": 1800, - "d": 1762, - "c": 10 - }, - { - "w": 1518912000, - "a": 68, - "d": 27, - "c": 3 - }, - { - "w": 1519516800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1520121600, - "a": 278, - "d": 175, - "c": 1 - }, - { - "w": 1520726400, - "a": 354, - "d": 83, - "c": 5 - }, - { - "w": 1521331200, - "a": 21, - "d": 12, - "c": 4 - }, - { - "w": 1521936000, - "a": 2, - "d": 1, - "c": 2 - }, - { - "w": 1522540800, - "a": 142, - "d": 11, - "c": 3 - }, - { - "w": 1523145600, - "a": 2, - "d": 9, - "c": 1 - }, - { - "w": 1523750400, - "a": 31, - "d": 21, - "c": 4 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 657, - "d": 657, - "c": 4 - }, - { - "w": 1525564800, - "a": 235, - "d": 118, - "c": 1 - }, - { - "w": 1526169600, - "a": 112, - "d": 79, - "c": 3 - }, - { - "w": 1526774400, - "a": 3, - "d": 17, - "c": 2 - }, - { - "w": 1527379200, - "a": 692, - "d": 704, - "c": 15 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 482, - "d": 460, - "c": 3 - }, - { - "w": 1529193600, - "a": 601, - "d": 73, - "c": 3 - }, - { - "w": 1529798400, - "a": 315, - "d": 72, - "c": 8 - }, - { - "w": 1530403200, - "a": 53, - "d": 18, - "c": 7 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 577, - "d": 499, - "c": 4 - }, - { - "w": 1533427200, - "a": 528, - "d": 320, - "c": 4 - }, - { - "w": 1534032000, - "a": 812, - "d": 483, - "c": 4 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 1307, - "d": 325, - "c": 2 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 994, - "d": 87, - "c": 1 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "mravn-google", - "id": 22935389, - "node_id": "MDQ6VXNlcjIyOTM1Mzg5", - "avatar_url": "https://avatars0.githubusercontent.com/u/22935389?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/mravn-google", - "html_url": "https://github.com/mravn-google", - "followers_url": "https://api.github.com/users/mravn-google/followers", - "following_url": "https://api.github.com/users/mravn-google/following{/other_user}", - "gists_url": "https://api.github.com/users/mravn-google/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mravn-google/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mravn-google/subscriptions", - "organizations_url": "https://api.github.com/users/mravn-google/orgs", - "repos_url": "https://api.github.com/users/mravn-google/repos", - "events_url": "https://api.github.com/users/mravn-google/events{/privacy}", - "received_events_url": "https://api.github.com/users/mravn-google/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 209, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 84, - "d": 0, - "c": 1 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 15, - "d": 2, - "c": 2 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 600, - "d": 108, - "c": 3 - }, - { - "w": 1504396800, - "a": 11, - "d": 3, - "c": 2 - }, - { - "w": 1505001600, - "a": 110, - "d": 42, - "c": 3 - }, - { - "w": 1505606400, - "a": 12, - "d": 1, - "c": 2 - }, - { - "w": 1506211200, - "a": 74, - "d": 33, - "c": 1 - }, - { - "w": 1506816000, - "a": 223, - "d": 627, - "c": 5 - }, - { - "w": 1507420800, - "a": 217, - "d": 93, - "c": 11 - }, - { - "w": 1508025600, - "a": 20, - "d": 4, - "c": 3 - }, - { - "w": 1508630400, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 41, - "d": 15, - "c": 3 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 2, - "d": 1, - "c": 2 - }, - { - "w": 1511654400, - "a": 35, - "d": 22, - "c": 6 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 7, - "d": 6, - "c": 4 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 132, - "d": 112, - "c": 14 - }, - { - "w": 1515283200, - "a": 195, - "d": 83, - "c": 10 - }, - { - "w": 1515888000, - "a": 62, - "d": 23, - "c": 5 - }, - { - "w": 1516492800, - "a": 39, - "d": 12, - "c": 1 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 67, - "d": 49, - "c": 3 - }, - { - "w": 1518307200, - "a": 270, - "d": 291, - "c": 6 - }, - { - "w": 1518912000, - "a": 38, - "d": 38, - "c": 3 - }, - { - "w": 1519516800, - "a": 127, - "d": 42, - "c": 8 - }, - { - "w": 1520121600, - "a": 550, - "d": 409, - "c": 9 - }, - { - "w": 1520726400, - "a": 551, - "d": 421, - "c": 9 - }, - { - "w": 1521331200, - "a": 108, - "d": 82, - "c": 5 - }, - { - "w": 1521936000, - "a": 77, - "d": 76, - "c": 5 - }, - { - "w": 1522540800, - "a": 6, - "d": 5, - "c": 1 - }, - { - "w": 1523145600, - "a": 175, - "d": 90, - "c": 8 - }, - { - "w": 1523750400, - "a": 18, - "d": 12, - "c": 3 - }, - { - "w": 1524355200, - "a": 14, - "d": 12, - "c": 6 - }, - { - "w": 1524960000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 11, - "d": 3, - "c": 3 - }, - { - "w": 1526774400, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 186, - "d": 9, - "c": 4 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 191, - "d": 31, - "c": 3 - }, - { - "w": 1529798400, - "a": 5, - "d": 4, - "c": 3 - }, - { - "w": 1530403200, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1531008000, - "a": 738, - "d": 718, - "c": 7 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 124, - "d": 12, - "c": 1 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 645, - "d": 597, - "c": 7 - }, - { - "w": 1535846400, - "a": 31, - "d": 16, - "c": 1 - }, - { - "w": 1536451200, - "a": 17, - "d": 16, - "c": 2 - }, - { - "w": 1537056000, - "a": 8, - "d": 8, - "c": 3 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 2, - "d": 3, - "c": 2 - }, - { - "w": 1539475200, - "a": 14, - "d": 23, - "c": 4 - }, - { - "w": 1540080000, - "a": 288, - "d": 261, - "c": 3 - }, - { - "w": 1540684800, - "a": 144, - "d": 124, - "c": 2 - }, - { - "w": 1541289600, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1541894400, - "a": 17, - "d": 8, - "c": 3 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 108, - "d": 64, - "c": 2 - }, - { - "w": 1546128000, - "a": 22, - "d": 4, - "c": 1 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 15, - "d": 5, - "c": 2 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 80, - "d": 8, - "c": 1 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 9, - "c": 1 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 55, - "d": 370, - "c": 1 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "aam", - "id": 381137, - "node_id": "MDQ6VXNlcjM4MTEzNw==", - "avatar_url": "https://avatars0.githubusercontent.com/u/381137?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/aam", - "html_url": "https://github.com/aam", - "followers_url": "https://api.github.com/users/aam/followers", - "following_url": "https://api.github.com/users/aam/following{/other_user}", - "gists_url": "https://api.github.com/users/aam/gists{/gist_id}", - "starred_url": "https://api.github.com/users/aam/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/aam/subscriptions", - "organizations_url": "https://api.github.com/users/aam/orgs", - "repos_url": "https://api.github.com/users/aam/repos", - "events_url": "https://api.github.com/users/aam/events{/privacy}", - "received_events_url": "https://api.github.com/users/aam/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 209, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 760, - "d": 49, - "c": 4 - }, - { - "w": 1433635200, - "a": 703, - "d": 373, - "c": 2 - }, - { - "w": 1434240000, - "a": 1052, - "d": 683, - "c": 5 - }, - { - "w": 1434844800, - "a": 794, - "d": 147, - "c": 3 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 733, - "d": 134, - "c": 12 - }, - { - "w": 1437868800, - "a": 360, - "d": 204, - "c": 13 - }, - { - "w": 1438473600, - "a": 759, - "d": 58, - "c": 12 - }, - { - "w": 1439078400, - "a": 607, - "d": 110, - "c": 19 - }, - { - "w": 1439683200, - "a": 1176, - "d": 801, - "c": 7 - }, - { - "w": 1440288000, - "a": 5065, - "d": 4337, - "c": 22 - }, - { - "w": 1440892800, - "a": 462, - "d": 113, - "c": 18 - }, - { - "w": 1441497600, - "a": 599, - "d": 1, - "c": 1 - }, - { - "w": 1442102400, - "a": 244, - "d": 175, - "c": 1 - }, - { - "w": 1442707200, - "a": 135, - "d": 14, - "c": 4 - }, - { - "w": 1443312000, - "a": 743, - "d": 31, - "c": 2 - }, - { - "w": 1443916800, - "a": 553, - "d": 66, - "c": 12 - }, - { - "w": 1444521600, - "a": 661, - "d": 246, - "c": 21 - }, - { - "w": 1445126400, - "a": 798, - "d": 505, - "c": 8 - }, - { - "w": 1445731200, - "a": 596, - "d": 55, - "c": 12 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 4032, - "c": 1 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 574, - "d": 2, - "c": 2 - }, - { - "w": 1454198400, - "a": 501, - "d": 1, - "c": 1 - }, - { - "w": 1454803200, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1455408000, - "a": 89, - "d": 2, - "c": 2 - }, - { - "w": 1456012800, - "a": 940, - "d": 0, - "c": 1 - }, - { - "w": 1456617600, - "a": 552, - "d": 552, - "c": 1 - }, - { - "w": 1457222400, - "a": 178, - "d": 42, - "c": 2 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 326, - "d": 221, - "c": 1 - }, - { - "w": 1459036800, - "a": 1043, - "d": 3, - "c": 3 - }, - { - "w": 1459641600, - "a": 1036, - "d": 222, - "c": 4 - }, - { - "w": 1460246400, - "a": 252, - "d": 137, - "c": 2 - }, - { - "w": 1460851200, - "a": 625, - "d": 227, - "c": 3 - }, - { - "w": 1461456000, - "a": 513, - "d": 1, - "c": 1 - }, - { - "w": 1462060800, - "a": 65, - "d": 2324, - "c": 2 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 538, - "d": 59, - "c": 2 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 3, - "d": 1, - "c": 1 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "vlidholt", - "id": 1539812, - "node_id": "MDQ6VXNlcjE1Mzk4MTI=", - "avatar_url": "https://avatars3.githubusercontent.com/u/1539812?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/vlidholt", - "html_url": "https://github.com/vlidholt", - "followers_url": "https://api.github.com/users/vlidholt/followers", - "following_url": "https://api.github.com/users/vlidholt/following{/other_user}", - "gists_url": "https://api.github.com/users/vlidholt/gists{/gist_id}", - "starred_url": "https://api.github.com/users/vlidholt/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/vlidholt/subscriptions", - "organizations_url": "https://api.github.com/users/vlidholt/orgs", - "repos_url": "https://api.github.com/users/vlidholt/repos", - "events_url": "https://api.github.com/users/vlidholt/events{/privacy}", - "received_events_url": "https://api.github.com/users/vlidholt/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 216, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 348, - "d": 19, - "c": 1 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 44, - "d": 3, - "c": 1 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 69, - "d": 37, - "c": 2 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 225, - "d": 18, - "c": 3 - }, - { - "w": 1506816000, - "a": 720, - "d": 333, - "c": 2 - }, - { - "w": 1507420800, - "a": 552, - "d": 118, - "c": 5 - }, - { - "w": 1508025600, - "a": 439, - "d": 93, - "c": 2 - }, - { - "w": 1508630400, - "a": 1112, - "d": 534, - "c": 3 - }, - { - "w": 1509235200, - "a": 921, - "d": 83, - "c": 2 - }, - { - "w": 1509840000, - "a": 837, - "d": 156, - "c": 1 - }, - { - "w": 1510444800, - "a": 1570, - "d": 925, - "c": 8 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 166, - "d": 1197, - "c": 3 - }, - { - "w": 1512259200, - "a": 480, - "d": 275, - "c": 6 - }, - { - "w": 1512864000, - "a": 553, - "d": 30, - "c": 5 - }, - { - "w": 1513468800, - "a": 205, - "d": 196, - "c": 3 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 83, - "d": 83, - "c": 1 - }, - { - "w": 1515283200, - "a": 601, - "d": 601, - "c": 3 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 772, - "d": 44, - "c": 2 - }, - { - "w": 1517702400, - "a": 2301, - "d": 1021, - "c": 6 - }, - { - "w": 1518307200, - "a": 437, - "d": 118, - "c": 2 - }, - { - "w": 1518912000, - "a": 4, - "d": 5, - "c": 1 - }, - { - "w": 1519516800, - "a": 2075, - "d": 559, - "c": 3 - }, - { - "w": 1520121600, - "a": 1017, - "d": 500, - "c": 2 - }, - { - "w": 1520726400, - "a": 426, - "d": 155, - "c": 3 - }, - { - "w": 1521331200, - "a": 1403, - "d": 426, - "c": 7 - }, - { - "w": 1521936000, - "a": 48, - "d": 12, - "c": 1 - }, - { - "w": 1522540800, - "a": 2645, - "d": 376, - "c": 4 - }, - { - "w": 1523145600, - "a": 2056, - "d": 709, - "c": 6 - }, - { - "w": 1523750400, - "a": 918, - "d": 606, - "c": 5 - }, - { - "w": 1524355200, - "a": 107, - "d": 7, - "c": 2 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 291, - "d": 19, - "c": 2 - }, - { - "w": 1526169600, - "a": 1653, - "d": 811, - "c": 7 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 431, - "d": 431, - "c": 2 - }, - { - "w": 1527984000, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1528588800, - "a": 216, - "d": 371, - "c": 1 - }, - { - "w": 1529193600, - "a": 999, - "d": 394, - "c": 2 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 437, - "d": 235, - "c": 2 - }, - { - "w": 1531612800, - "a": 289, - "d": 157, - "c": 5 - }, - { - "w": 1532217600, - "a": 167, - "d": 107, - "c": 4 - }, - { - "w": 1532822400, - "a": 722, - "d": 704, - "c": 7 - }, - { - "w": 1533427200, - "a": 502, - "d": 341, - "c": 4 - }, - { - "w": 1534032000, - "a": 108, - "d": 11, - "c": 2 - }, - { - "w": 1534636800, - "a": 21, - "d": 19, - "c": 1 - }, - { - "w": 1535241600, - "a": 216, - "d": 26, - "c": 4 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 695, - "d": 257, - "c": 5 - }, - { - "w": 1537660800, - "a": 62, - "d": 23, - "c": 2 - }, - { - "w": 1538265600, - "a": 6799, - "d": 6222, - "c": 12 - }, - { - "w": 1538870400, - "a": 3885, - "d": 2714, - "c": 6 - }, - { - "w": 1539475200, - "a": 19, - "d": 54, - "c": 5 - }, - { - "w": 1540080000, - "a": 1384, - "d": 176, - "c": 2 - }, - { - "w": 1540684800, - "a": 404, - "d": 78, - "c": 3 - }, - { - "w": 1541289600, - "a": 1571, - "d": 696, - "c": 4 - }, - { - "w": 1541894400, - "a": 1345, - "d": 1231, - "c": 10 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 3, - "d": 55, - "c": 2 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 67, - "d": 15, - "c": 2 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 949, - "d": 106, - "c": 4 - }, - { - "w": 1547337600, - "a": 42, - "d": 47, - "c": 2 - }, - { - "w": 1547942400, - "a": 32, - "d": 2, - "c": 1 - }, - { - "w": 1548547200, - "a": 1385, - "d": 169, - "c": 1 - }, - { - "w": 1549152000, - "a": 11995, - "d": 145, - "c": 4 - }, - { - "w": 1549756800, - "a": 969, - "d": 587, - "c": 3 - }, - { - "w": 1550361600, - "a": 12, - "d": 3, - "c": 2 - }, - { - "w": 1550966400, - "a": 277, - "d": 182, - "c": 3 - }, - { - "w": 1551571200, - "a": 767, - "d": 305, - "c": 2 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "gspencergoog", - "id": 8867023, - "node_id": "MDQ6VXNlcjg4NjcwMjM=", - "avatar_url": "https://avatars2.githubusercontent.com/u/8867023?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/gspencergoog", - "html_url": "https://github.com/gspencergoog", - "followers_url": "https://api.github.com/users/gspencergoog/followers", - "following_url": "https://api.github.com/users/gspencergoog/following{/other_user}", - "gists_url": "https://api.github.com/users/gspencergoog/gists{/gist_id}", - "starred_url": "https://api.github.com/users/gspencergoog/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/gspencergoog/subscriptions", - "organizations_url": "https://api.github.com/users/gspencergoog/orgs", - "repos_url": "https://api.github.com/users/gspencergoog/repos", - "events_url": "https://api.github.com/users/gspencergoog/events{/privacy}", - "received_events_url": "https://api.github.com/users/gspencergoog/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 253, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 192, - "d": 1, - "c": 5 - }, - { - "w": 1454803200, - "a": 928, - "d": 0, - "c": 1 - }, - { - "w": 1455408000, - "a": 288, - "d": 36, - "c": 2 - }, - { - "w": 1456012800, - "a": 1135, - "d": 212, - "c": 7 - }, - { - "w": 1456617600, - "a": 564, - "d": 216, - "c": 8 - }, - { - "w": 1457222400, - "a": 301, - "d": 31, - "c": 4 - }, - { - "w": 1457827200, - "a": 36, - "d": 8, - "c": 2 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 576, - "d": 175, - "c": 4 - }, - { - "w": 1459641600, - "a": 287, - "d": 50, - "c": 3 - }, - { - "w": 1460246400, - "a": 1867, - "d": 1348, - "c": 6 - }, - { - "w": 1460851200, - "a": 111, - "d": 111, - "c": 3 - }, - { - "w": 1461456000, - "a": 167, - "d": 81, - "c": 4 - }, - { - "w": 1462060800, - "a": 7, - "d": 128, - "c": 2 - }, - { - "w": 1462665600, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 28, - "d": 13, - "c": 1 - }, - { - "w": 1464480000, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1468713600, - "a": 43, - "d": 11, - "c": 3 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 17, - "d": 7, - "c": 1 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 11, - "d": 21, - "c": 3 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 34, - "d": 27, - "c": 1 - }, - { - "w": 1473552000, - "a": 2625, - "d": 4, - "c": 2 - }, - { - "w": 1474156800, - "a": 38, - "d": 0, - "c": 1 - }, - { - "w": 1474761600, - "a": 325, - "d": 149, - "c": 1 - }, - { - "w": 1475366400, - "a": 65, - "d": 38, - "c": 4 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 84, - "d": 16, - "c": 6 - }, - { - "w": 1477180800, - "a": 65, - "d": 91, - "c": 2 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 256, - "d": 43, - "c": 3 - }, - { - "w": 1478995200, - "a": 82, - "d": 35, - "c": 2 - }, - { - "w": 1479600000, - "a": 4, - "d": 5, - "c": 1 - }, - { - "w": 1480204800, - "a": 37, - "d": 40, - "c": 2 - }, - { - "w": 1480809600, - "a": 248, - "d": 158, - "c": 3 - }, - { - "w": 1481414400, - "a": 80, - "d": 32, - "c": 2 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 410, - "d": 117, - "c": 6 - }, - { - "w": 1484438400, - "a": 0, - "d": 1, - "c": 1 - }, - { - "w": 1485043200, - "a": 39, - "d": 23, - "c": 2 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 68, - "d": 328, - "c": 2 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 762, - "d": 112, - "c": 3 - }, - { - "w": 1488672000, - "a": 103, - "d": 340, - "c": 4 - }, - { - "w": 1489276800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1489881600, - "a": 104, - "d": 5, - "c": 2 - }, - { - "w": 1490486400, - "a": 104, - "d": 61, - "c": 3 - }, - { - "w": 1491091200, - "a": 679, - "d": 47, - "c": 6 - }, - { - "w": 1491696000, - "a": 286, - "d": 73, - "c": 6 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 129, - "c": 1 - }, - { - "w": 1494115200, - "a": 55, - "d": 11, - "c": 4 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 57, - "d": 24, - "c": 2 - }, - { - "w": 1495929600, - "a": 66, - "d": 46, - "c": 3 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 108, - "d": 435, - "c": 3 - }, - { - "w": 1497744000, - "a": 9, - "d": 1, - "c": 2 - }, - { - "w": 1498348800, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 300, - "d": 3, - "c": 3 - }, - { - "w": 1500163200, - "a": 505, - "d": 221, - "c": 2 - }, - { - "w": 1500768000, - "a": 141, - "d": 3, - "c": 3 - }, - { - "w": 1501372800, - "a": 611, - "d": 4, - "c": 1 - }, - { - "w": 1501977600, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 29, - "d": 12, - "c": 2 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 1384, - "d": 438, - "c": 3 - }, - { - "w": 1505606400, - "a": 1449, - "d": 376, - "c": 4 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 780, - "d": 429, - "c": 3 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 392, - "d": 108, - "c": 2 - }, - { - "w": 1508630400, - "a": 5086, - "d": 1446, - "c": 6 - }, - { - "w": 1509235200, - "a": 645, - "d": 390, - "c": 5 - }, - { - "w": 1509840000, - "a": 357, - "d": 54, - "c": 5 - }, - { - "w": 1510444800, - "a": 24, - "d": 0, - "c": 1 - }, - { - "w": 1511049600, - "a": 97, - "d": 26, - "c": 1 - }, - { - "w": 1511654400, - "a": 24, - "d": 29, - "c": 2 - }, - { - "w": 1512259200, - "a": 3203, - "d": 1090, - "c": 7 - }, - { - "w": 1512864000, - "a": 690, - "d": 195, - "c": 4 - }, - { - "w": 1513468800, - "a": 854, - "d": 260, - "c": 4 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 120, - "d": 115, - "c": 8 - }, - { - "w": 1515283200, - "a": 11, - "d": 6, - "c": 2 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 11, - "d": 0, - "c": 1 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 89, - "d": 16, - "c": 1 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 31, - "d": 27, - "c": 2 - }, - { - "w": 1520121600, - "a": 27, - "d": 20, - "c": 2 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 453, - "d": 666, - "c": 2 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 49, - "d": 12, - "c": 1 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 54, - "d": 16, - "c": 3 - }, - { - "w": 1524355200, - "a": 1676, - "d": 1026, - "c": 3 - }, - { - "w": 1524960000, - "a": 77, - "d": 76, - "c": 3 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 17, - "d": 8, - "c": 1 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 3, - "d": 2, - "c": 1 - }, - { - "w": 1528588800, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1529193600, - "a": 85, - "d": 16, - "c": 2 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 62, - "d": 0, - "c": 1 - }, - { - "w": 1537660800, - "a": 61, - "d": 18, - "c": 1 - }, - { - "w": 1538265600, - "a": 726, - "d": 726, - "c": 3 - }, - { - "w": 1538870400, - "a": 30, - "d": 0, - "c": 1 - }, - { - "w": 1539475200, - "a": 125, - "d": 230, - "c": 3 - }, - { - "w": 1540080000, - "a": 15, - "d": 17, - "c": 4 - }, - { - "w": 1540684800, - "a": 6, - "d": 6, - "c": 2 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 120, - "d": 24, - "c": 1 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "yjbanov", - "id": 211513, - "node_id": "MDQ6VXNlcjIxMTUxMw==", - "avatar_url": "https://avatars1.githubusercontent.com/u/211513?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/yjbanov", - "html_url": "https://github.com/yjbanov", - "followers_url": "https://api.github.com/users/yjbanov/followers", - "following_url": "https://api.github.com/users/yjbanov/following{/other_user}", - "gists_url": "https://api.github.com/users/yjbanov/gists{/gist_id}", - "starred_url": "https://api.github.com/users/yjbanov/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/yjbanov/subscriptions", - "organizations_url": "https://api.github.com/users/yjbanov/orgs", - "repos_url": "https://api.github.com/users/yjbanov/repos", - "events_url": "https://api.github.com/users/yjbanov/events{/privacy}", - "received_events_url": "https://api.github.com/users/yjbanov/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 319, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 202, - "d": 10, - "c": 5 - }, - { - "w": 1520726400, - "a": 378, - "d": 220, - "c": 4 - }, - { - "w": 1521331200, - "a": 2117, - "d": 1672, - "c": 6 - }, - { - "w": 1521936000, - "a": 39, - "d": 2, - "c": 2 - }, - { - "w": 1522540800, - "a": 116, - "d": 59, - "c": 4 - }, - { - "w": 1523145600, - "a": 43, - "d": 12, - "c": 1 - }, - { - "w": 1523750400, - "a": 1135, - "d": 221, - "c": 4 - }, - { - "w": 1524355200, - "a": 41, - "d": 5, - "c": 2 - }, - { - "w": 1524960000, - "a": 300, - "d": 8, - "c": 2 - }, - { - "w": 1525564800, - "a": 163, - "d": 32, - "c": 3 - }, - { - "w": 1526169600, - "a": 22, - "d": 7, - "c": 1 - }, - { - "w": 1526774400, - "a": 289, - "d": 1, - "c": 1 - }, - { - "w": 1527379200, - "a": 149, - "d": 58, - "c": 2 - }, - { - "w": 1527984000, - "a": 428, - "d": 32, - "c": 3 - }, - { - "w": 1528588800, - "a": 572, - "d": 130, - "c": 7 - }, - { - "w": 1529193600, - "a": 758, - "d": 137, - "c": 5 - }, - { - "w": 1529798400, - "a": 118, - "d": 17, - "c": 2 - }, - { - "w": 1530403200, - "a": 1238, - "d": 1238, - "c": 2 - }, - { - "w": 1531008000, - "a": 2112, - "d": 233, - "c": 9 - }, - { - "w": 1531612800, - "a": 637, - "d": 114, - "c": 4 - }, - { - "w": 1532217600, - "a": 1060, - "d": 295, - "c": 12 - }, - { - "w": 1532822400, - "a": 1111, - "d": 199, - "c": 15 - }, - { - "w": 1533427200, - "a": 464, - "d": 80, - "c": 7 - }, - { - "w": 1534032000, - "a": 1316, - "d": 133, - "c": 9 - }, - { - "w": 1534636800, - "a": 1593, - "d": 108, - "c": 4 - }, - { - "w": 1535241600, - "a": 1375, - "d": 161, - "c": 7 - }, - { - "w": 1535846400, - "a": 1140, - "d": 2062, - "c": 9 - }, - { - "w": 1536451200, - "a": 1782, - "d": 412, - "c": 7 - }, - { - "w": 1537056000, - "a": 195, - "d": 205, - "c": 4 - }, - { - "w": 1537660800, - "a": 24, - "d": 5, - "c": 1 - }, - { - "w": 1538265600, - "a": 406, - "d": 90, - "c": 5 - }, - { - "w": 1538870400, - "a": 1052, - "d": 95, - "c": 3 - }, - { - "w": 1539475200, - "a": 99, - "d": 64, - "c": 1 - }, - { - "w": 1540080000, - "a": 266, - "d": 30, - "c": 4 - }, - { - "w": 1540684800, - "a": 2113, - "d": 2819, - "c": 4 - }, - { - "w": 1541289600, - "a": 3975, - "d": 4344, - "c": 19 - }, - { - "w": 1541894400, - "a": 415, - "d": 311, - "c": 5 - }, - { - "w": 1542499200, - "a": 154, - "d": 7, - "c": 2 - }, - { - "w": 1543104000, - "a": 146, - "d": 93, - "c": 1 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 800, - "d": 766, - "c": 10 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 102, - "d": 21, - "c": 1 - }, - { - "w": 1546732800, - "a": 635, - "d": 304, - "c": 8 - }, - { - "w": 1547337600, - "a": 1014, - "d": 27, - "c": 5 - }, - { - "w": 1547942400, - "a": 1375, - "d": 221, - "c": 9 - }, - { - "w": 1548547200, - "a": 242, - "d": 128, - "c": 5 - }, - { - "w": 1549152000, - "a": 1768, - "d": 1441, - "c": 7 - }, - { - "w": 1549756800, - "a": 2805, - "d": 1584, - "c": 10 - }, - { - "w": 1550361600, - "a": 79, - "d": 16, - "c": 4 - }, - { - "w": 1550966400, - "a": 690, - "d": 404, - "c": 9 - }, - { - "w": 1551571200, - "a": 2532, - "d": 2000, - "c": 10 - }, - { - "w": 1552176000, - "a": 544, - "d": 1341, - "c": 9 - }, - { - "w": 1552780800, - "a": 565, - "d": 186, - "c": 15 - }, - { - "w": 1553385600, - "a": 2998, - "d": 1866, - "c": 23 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 478, - "d": 23, - "c": 6 - } - ], - "author": { - "login": "jonahwilliams", - "id": 8975114, - "node_id": "MDQ6VXNlcjg5NzUxMTQ=", - "avatar_url": "https://avatars0.githubusercontent.com/u/8975114?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jonahwilliams", - "html_url": "https://github.com/jonahwilliams", - "followers_url": "https://api.github.com/users/jonahwilliams/followers", - "following_url": "https://api.github.com/users/jonahwilliams/following{/other_user}", - "gists_url": "https://api.github.com/users/jonahwilliams/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jonahwilliams/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jonahwilliams/subscriptions", - "organizations_url": "https://api.github.com/users/jonahwilliams/orgs", - "repos_url": "https://api.github.com/users/jonahwilliams/repos", - "events_url": "https://api.github.com/users/jonahwilliams/events{/privacy}", - "received_events_url": "https://api.github.com/users/jonahwilliams/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 325, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 12, - "d": 2, - "c": 1 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 4, - "d": 2, - "c": 2 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 77, - "d": 23, - "c": 2 - }, - { - "w": 1454803200, - "a": 9, - "d": 10, - "c": 5 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1463270400, - "a": 8, - "d": 4, - "c": 1 - }, - { - "w": 1463875200, - "a": 187, - "d": 104, - "c": 6 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 161, - "d": 96, - "c": 4 - }, - { - "w": 1465689600, - "a": 653, - "d": 97, - "c": 1 - }, - { - "w": 1466294400, - "a": 194, - "d": 139, - "c": 9 - }, - { - "w": 1466899200, - "a": 6, - "d": 19, - "c": 2 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 16, - "d": 2, - "c": 2 - }, - { - "w": 1470528000, - "a": 24, - "d": 14, - "c": 3 - }, - { - "w": 1471132800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1471737600, - "a": 23, - "d": 3, - "c": 2 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 197, - "d": 104, - "c": 3 - }, - { - "w": 1476576000, - "a": 36, - "d": 14, - "c": 1 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1478390400, - "a": 10, - "d": 9, - "c": 1 - }, - { - "w": 1478995200, - "a": 72, - "d": 47, - "c": 2 - }, - { - "w": 1479600000, - "a": 24, - "d": 15, - "c": 1 - }, - { - "w": 1480204800, - "a": 582, - "d": 43, - "c": 4 - }, - { - "w": 1480809600, - "a": 757, - "d": 99, - "c": 5 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 683, - "d": 632, - "c": 3 - }, - { - "w": 1483833600, - "a": 594, - "d": 369, - "c": 8 - }, - { - "w": 1484438400, - "a": 44, - "d": 8, - "c": 2 - }, - { - "w": 1485043200, - "a": 280, - "d": 1251, - "c": 5 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 307, - "d": 168, - "c": 12 - }, - { - "w": 1487462400, - "a": 385, - "d": 60, - "c": 3 - }, - { - "w": 1488067200, - "a": 233, - "d": 41, - "c": 3 - }, - { - "w": 1488672000, - "a": 12501, - "d": 320, - "c": 11 - }, - { - "w": 1489276800, - "a": 152, - "d": 103, - "c": 3 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 70, - "d": 23, - "c": 1 - }, - { - "w": 1491091200, - "a": 2, - "d": 1, - "c": 1 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1492905600, - "a": 308, - "d": 12205, - "c": 8 - }, - { - "w": 1493510400, - "a": 212, - "d": 340, - "c": 8 - }, - { - "w": 1494115200, - "a": 8, - "d": 3, - "c": 3 - }, - { - "w": 1494720000, - "a": 175, - "d": 126, - "c": 5 - }, - { - "w": 1495324800, - "a": 80, - "d": 3, - "c": 2 - }, - { - "w": 1495929600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1496534400, - "a": 103, - "d": 103, - "c": 3 - }, - { - "w": 1497139200, - "a": 137, - "d": 106, - "c": 9 - }, - { - "w": 1497744000, - "a": 13, - "d": 7, - "c": 3 - }, - { - "w": 1498348800, - "a": 23, - "d": 24, - "c": 4 - }, - { - "w": 1498953600, - "a": 6, - "d": 7, - "c": 1 - }, - { - "w": 1499558400, - "a": 49, - "d": 30, - "c": 9 - }, - { - "w": 1500163200, - "a": 22, - "d": 50, - "c": 6 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 38, - "d": 1, - "c": 1 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 253, - "d": 89, - "c": 6 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 58, - "d": 49, - "c": 1 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1509840000, - "a": 455, - "d": 442, - "c": 2 - }, - { - "w": 1510444800, - "a": 72, - "d": 54, - "c": 4 - }, - { - "w": 1511049600, - "a": 104, - "d": 42, - "c": 1 - }, - { - "w": 1511654400, - "a": 44, - "d": 65, - "c": 2 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 100, - "d": 219, - "c": 1 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 8, - "d": 9, - "c": 1 - }, - { - "w": 1517097600, - "a": 72, - "d": 32, - "c": 1 - }, - { - "w": 1517702400, - "a": 11, - "d": 4, - "c": 1 - }, - { - "w": 1518307200, - "a": 230, - "d": 522, - "c": 7 - }, - { - "w": 1518912000, - "a": 36, - "d": 8, - "c": 6 - }, - { - "w": 1519516800, - "a": 30, - "d": 15, - "c": 7 - }, - { - "w": 1520121600, - "a": 39, - "d": 23, - "c": 6 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 1137, - "d": 844, - "c": 6 - }, - { - "w": 1522540800, - "a": 66, - "d": 8, - "c": 3 - }, - { - "w": 1523145600, - "a": 191, - "d": 153, - "c": 2 - }, - { - "w": 1523750400, - "a": 140, - "d": 76, - "c": 14 - }, - { - "w": 1524355200, - "a": 337, - "d": 50, - "c": 6 - }, - { - "w": 1524960000, - "a": 1548, - "d": 246, - "c": 11 - }, - { - "w": 1525564800, - "a": 158, - "d": 31, - "c": 12 - }, - { - "w": 1526169600, - "a": 160, - "d": 48, - "c": 5 - }, - { - "w": 1526774400, - "a": 14, - "d": 5, - "c": 3 - }, - { - "w": 1527379200, - "a": 154, - "d": 55, - "c": 3 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 41662, - "d": 41660, - "c": 5 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 31, - "d": 15, - "c": 1 - }, - { - "w": 1534032000, - "a": 5, - "d": 0, - "c": 1 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 51, - "d": 51, - "c": 1 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 11, - "d": 5, - "c": 2 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 121, - "d": 85, - "c": 5 - }, - { - "w": 1541894400, - "a": 49, - "d": 2, - "c": 1 - }, - { - "w": 1542499200, - "a": 5, - "d": 5, - "c": 4 - }, - { - "w": 1543104000, - "a": 3, - "d": 2, - "c": 2 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 41, - "d": 15, - "c": 2 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 21, - "d": 6, - "c": 1 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 169, - "d": 193, - "c": 4 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 170, - "d": 774, - "c": 1 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 45, - "d": 23, - "c": 5 - } - ], - "author": { - "login": "tvolkert", - "id": 15253456, - "node_id": "MDQ6VXNlcjE1MjUzNDU2", - "avatar_url": "https://avatars0.githubusercontent.com/u/15253456?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/tvolkert", - "html_url": "https://github.com/tvolkert", - "followers_url": "https://api.github.com/users/tvolkert/followers", - "following_url": "https://api.github.com/users/tvolkert/following{/other_user}", - "gists_url": "https://api.github.com/users/tvolkert/gists{/gist_id}", - "starred_url": "https://api.github.com/users/tvolkert/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/tvolkert/subscriptions", - "organizations_url": "https://api.github.com/users/tvolkert/orgs", - "repos_url": "https://api.github.com/users/tvolkert/repos", - "events_url": "https://api.github.com/users/tvolkert/events{/privacy}", - "received_events_url": "https://api.github.com/users/tvolkert/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 337, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 132, - "d": 19, - "c": 4 - }, - { - "w": 1485648000, - "a": 257, - "d": 48, - "c": 3 - }, - { - "w": 1486252800, - "a": 125, - "d": 22, - "c": 2 - }, - { - "w": 1486857600, - "a": 213, - "d": 60, - "c": 4 - }, - { - "w": 1487462400, - "a": 381, - "d": 153, - "c": 3 - }, - { - "w": 1488067200, - "a": 5379, - "d": 4706, - "c": 3 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 2, - "d": 16, - "c": 1 - }, - { - "w": 1490486400, - "a": 73, - "d": 37, - "c": 3 - }, - { - "w": 1491091200, - "a": 590, - "d": 356, - "c": 5 - }, - { - "w": 1491696000, - "a": 1569, - "d": 1289, - "c": 6 - }, - { - "w": 1492300800, - "a": 59, - "d": 44, - "c": 4 - }, - { - "w": 1492905600, - "a": 1020, - "d": 101, - "c": 5 - }, - { - "w": 1493510400, - "a": 180, - "d": 918, - "c": 9 - }, - { - "w": 1494115200, - "a": 188, - "d": 80, - "c": 4 - }, - { - "w": 1494720000, - "a": 948, - "d": 369, - "c": 4 - }, - { - "w": 1495324800, - "a": 2143, - "d": 1869, - "c": 4 - }, - { - "w": 1495929600, - "a": 487, - "d": 107, - "c": 4 - }, - { - "w": 1496534400, - "a": 247, - "d": 56, - "c": 1 - }, - { - "w": 1497139200, - "a": 968, - "d": 159, - "c": 6 - }, - { - "w": 1497744000, - "a": 101, - "d": 4, - "c": 1 - }, - { - "w": 1498348800, - "a": 175, - "d": 28, - "c": 4 - }, - { - "w": 1498953600, - "a": 127, - "d": 19, - "c": 2 - }, - { - "w": 1499558400, - "a": 486, - "d": 192, - "c": 3 - }, - { - "w": 1500163200, - "a": 426, - "d": 66, - "c": 1 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1501977600, - "a": 124, - "d": 16, - "c": 3 - }, - { - "w": 1502582400, - "a": 234, - "d": 40, - "c": 7 - }, - { - "w": 1503187200, - "a": 35, - "d": 7, - "c": 3 - }, - { - "w": 1503792000, - "a": 5, - "d": 2, - "c": 1 - }, - { - "w": 1504396800, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1505001600, - "a": 386, - "d": 66, - "c": 1 - }, - { - "w": 1505606400, - "a": 2092, - "d": 1164, - "c": 7 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 340, - "d": 127, - "c": 6 - }, - { - "w": 1508630400, - "a": 106, - "d": 3, - "c": 1 - }, - { - "w": 1509235200, - "a": 861, - "d": 28, - "c": 3 - }, - { - "w": 1509840000, - "a": 163, - "d": 5, - "c": 4 - }, - { - "w": 1510444800, - "a": 93, - "d": 36, - "c": 2 - }, - { - "w": 1511049600, - "a": 22, - "d": 0, - "c": 2 - }, - { - "w": 1511654400, - "a": 498, - "d": 293, - "c": 6 - }, - { - "w": 1512259200, - "a": 664, - "d": 163, - "c": 4 - }, - { - "w": 1512864000, - "a": 282, - "d": 24, - "c": 7 - }, - { - "w": 1513468800, - "a": 595, - "d": 162, - "c": 3 - }, - { - "w": 1514073600, - "a": 279, - "d": 254, - "c": 2 - }, - { - "w": 1514678400, - "a": 94, - "d": 3, - "c": 2 - }, - { - "w": 1515283200, - "a": 34, - "d": 6, - "c": 2 - }, - { - "w": 1515888000, - "a": 42, - "d": 20, - "c": 1 - }, - { - "w": 1516492800, - "a": 2862, - "d": 359, - "c": 2 - }, - { - "w": 1517097600, - "a": 530, - "d": 128, - "c": 3 - }, - { - "w": 1517702400, - "a": 205, - "d": 99, - "c": 8 - }, - { - "w": 1518307200, - "a": 360, - "d": 120, - "c": 9 - }, - { - "w": 1518912000, - "a": 243, - "d": 18, - "c": 4 - }, - { - "w": 1519516800, - "a": 96, - "d": 13, - "c": 4 - }, - { - "w": 1520121600, - "a": 119, - "d": 20, - "c": 2 - }, - { - "w": 1520726400, - "a": 75, - "d": 15, - "c": 3 - }, - { - "w": 1521331200, - "a": 2443, - "d": 216, - "c": 11 - }, - { - "w": 1521936000, - "a": 137, - "d": 83, - "c": 6 - }, - { - "w": 1522540800, - "a": 153, - "d": 43, - "c": 4 - }, - { - "w": 1523145600, - "a": 18, - "d": 18, - "c": 2 - }, - { - "w": 1523750400, - "a": 152, - "d": 52, - "c": 5 - }, - { - "w": 1524355200, - "a": 91, - "d": 79, - "c": 5 - }, - { - "w": 1524960000, - "a": 202, - "d": 153, - "c": 6 - }, - { - "w": 1525564800, - "a": 112, - "d": 30, - "c": 5 - }, - { - "w": 1526169600, - "a": 73, - "d": 17, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 10, - "d": 7, - "c": 1 - }, - { - "w": 1528588800, - "a": 75, - "d": 18, - "c": 3 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 896, - "d": 862, - "c": 1 - }, - { - "w": 1531008000, - "a": 291, - "d": 33, - "c": 5 - }, - { - "w": 1531612800, - "a": 6, - "d": 3, - "c": 3 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 868, - "d": 343, - "c": 3 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 487, - "d": 65, - "c": 7 - }, - { - "w": 1534636800, - "a": 780, - "d": 234, - "c": 1 - }, - { - "w": 1535241600, - "a": 2974, - "d": 429, - "c": 5 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 414, - "d": 109, - "c": 5 - }, - { - "w": 1538265600, - "a": 291, - "d": 154, - "c": 6 - }, - { - "w": 1538870400, - "a": 15, - "d": 1, - "c": 2 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 2486, - "d": 209, - "c": 5 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1541894400, - "a": 528, - "d": 18, - "c": 2 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 95, - "d": 3, - "c": 2 - }, - { - "w": 1544918400, - "a": 3510, - "d": 1076, - "c": 5 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 7, - "d": 7, - "c": 2 - }, - { - "w": 1546732800, - "a": 25, - "d": 11, - "c": 4 - }, - { - "w": 1547337600, - "a": 8, - "d": 317, - "c": 1 - }, - { - "w": 1547942400, - "a": 121, - "d": 8, - "c": 3 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 1520, - "d": 946, - "c": 7 - }, - { - "w": 1549756800, - "a": 1304, - "d": 200, - "c": 4 - }, - { - "w": 1550361600, - "a": 481, - "d": 1340, - "c": 4 - }, - { - "w": 1550966400, - "a": 1257, - "d": 329, - "c": 2 - }, - { - "w": 1551571200, - "a": 443, - "d": 57, - "c": 3 - }, - { - "w": 1552176000, - "a": 107, - "d": 4, - "c": 1 - }, - { - "w": 1552780800, - "a": 20, - "d": 5, - "c": 2 - }, - { - "w": 1553385600, - "a": 30152, - "d": 29852, - "c": 4 - }, - { - "w": 1553990400, - "a": 61, - "d": 40, - "c": 5 - }, - { - "w": 1554595200, - "a": 787, - "d": 254, - "c": 3 - } - ], - "author": { - "login": "xster", - "id": 156888, - "node_id": "MDQ6VXNlcjE1Njg4OA==", - "avatar_url": "https://avatars2.githubusercontent.com/u/156888?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/xster", - "html_url": "https://github.com/xster", - "followers_url": "https://api.github.com/users/xster/followers", - "following_url": "https://api.github.com/users/xster/following{/other_user}", - "gists_url": "https://api.github.com/users/xster/gists{/gist_id}", - "starred_url": "https://api.github.com/users/xster/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/xster/subscriptions", - "organizations_url": "https://api.github.com/users/xster/orgs", - "repos_url": "https://api.github.com/users/xster/repos", - "events_url": "https://api.github.com/users/xster/events{/privacy}", - "received_events_url": "https://api.github.com/users/xster/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 356, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 173, - "d": 18, - "c": 2 - }, - { - "w": 1442707200, - "a": 297, - "d": 100, - "c": 2 - }, - { - "w": 1443312000, - "a": 11, - "d": 9, - "c": 2 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 277, - "d": 227, - "c": 5 - }, - { - "w": 1445126400, - "a": 65, - "d": 6, - "c": 4 - }, - { - "w": 1445731200, - "a": 14, - "d": 20, - "c": 4 - }, - { - "w": 1446336000, - "a": 77, - "d": 49, - "c": 2 - }, - { - "w": 1446940800, - "a": 161, - "d": 91, - "c": 4 - }, - { - "w": 1447545600, - "a": 456, - "d": 88, - "c": 3 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 214, - "d": 4, - "c": 4 - }, - { - "w": 1449360000, - "a": 202, - "d": 142, - "c": 4 - }, - { - "w": 1449964800, - "a": 31, - "d": 17, - "c": 5 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 58, - "d": 8, - "c": 1 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 39, - "d": 60, - "c": 2 - }, - { - "w": 1454198400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1454803200, - "a": 395, - "d": 236, - "c": 3 - }, - { - "w": 1455408000, - "a": 6, - "d": 0, - "c": 1 - }, - { - "w": 1456012800, - "a": 10, - "d": 3, - "c": 1 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 285, - "d": 3, - "c": 3 - }, - { - "w": 1457827200, - "a": 60, - "d": 0, - "c": 1 - }, - { - "w": 1458432000, - "a": 464, - "d": 85, - "c": 9 - }, - { - "w": 1459036800, - "a": 33, - "d": 5, - "c": 1 - }, - { - "w": 1459641600, - "a": 148, - "d": 40, - "c": 3 - }, - { - "w": 1460246400, - "a": 99, - "d": 13, - "c": 2 - }, - { - "w": 1460851200, - "a": 89, - "d": 69, - "c": 2 - }, - { - "w": 1461456000, - "a": 197, - "d": 13, - "c": 2 - }, - { - "w": 1462060800, - "a": 143, - "d": 63, - "c": 3 - }, - { - "w": 1462665600, - "a": 338, - "d": 936, - "c": 7 - }, - { - "w": 1463270400, - "a": 23, - "d": 24, - "c": 3 - }, - { - "w": 1463875200, - "a": 28, - "d": 22, - "c": 2 - }, - { - "w": 1464480000, - "a": 105, - "d": 19, - "c": 3 - }, - { - "w": 1465084800, - "a": 29, - "d": 89, - "c": 3 - }, - { - "w": 1465689600, - "a": 2, - "d": 584, - "c": 1 - }, - { - "w": 1466294400, - "a": 18, - "d": 67, - "c": 5 - }, - { - "w": 1466899200, - "a": 6, - "d": 2, - "c": 1 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 3, - "d": 5, - "c": 3 - }, - { - "w": 1468713600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1469318400, - "a": 75, - "d": 11, - "c": 4 - }, - { - "w": 1469923200, - "a": 283, - "d": 45, - "c": 5 - }, - { - "w": 1470528000, - "a": 90, - "d": 24, - "c": 3 - }, - { - "w": 1471132800, - "a": 34, - "d": 39, - "c": 5 - }, - { - "w": 1471737600, - "a": 4, - "d": 4, - "c": 4 - }, - { - "w": 1472342400, - "a": 44, - "d": 3, - "c": 3 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 5, - "d": 5, - "c": 2 - }, - { - "w": 1475366400, - "a": 89, - "d": 45, - "c": 5 - }, - { - "w": 1475971200, - "a": 6, - "d": 6, - "c": 2 - }, - { - "w": 1476576000, - "a": 55, - "d": 148, - "c": 5 - }, - { - "w": 1477180800, - "a": 98, - "d": 46, - "c": 4 - }, - { - "w": 1477785600, - "a": 19, - "d": 17, - "c": 5 - }, - { - "w": 1478390400, - "a": 62, - "d": 45, - "c": 1 - }, - { - "w": 1478995200, - "a": 21, - "d": 1, - "c": 1 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 193, - "d": 81, - "c": 3 - }, - { - "w": 1480809600, - "a": 148, - "d": 2, - "c": 4 - }, - { - "w": 1481414400, - "a": 195, - "d": 2, - "c": 3 - }, - { - "w": 1482019200, - "a": 7, - "d": 1, - "c": 1 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 99, - "d": 6, - "c": 5 - }, - { - "w": 1484438400, - "a": 5, - "d": 2, - "c": 1 - }, - { - "w": 1485043200, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1485648000, - "a": 25, - "d": 18, - "c": 5 - }, - { - "w": 1486252800, - "a": 82, - "d": 0, - "c": 4 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1488067200, - "a": 241, - "d": 9, - "c": 3 - }, - { - "w": 1488672000, - "a": 2, - "d": 0, - "c": 1 - }, - { - "w": 1489276800, - "a": 74, - "d": 12, - "c": 4 - }, - { - "w": 1489881600, - "a": 53, - "d": 23, - "c": 2 - }, - { - "w": 1490486400, - "a": 28, - "d": 67, - "c": 4 - }, - { - "w": 1491091200, - "a": 121, - "d": 68, - "c": 6 - }, - { - "w": 1491696000, - "a": 74, - "d": 17, - "c": 4 - }, - { - "w": 1492300800, - "a": 19, - "d": 2, - "c": 2 - }, - { - "w": 1492905600, - "a": 6, - "d": 4, - "c": 4 - }, - { - "w": 1493510400, - "a": 201, - "d": 194, - "c": 4 - }, - { - "w": 1494115200, - "a": 172, - "d": 24, - "c": 7 - }, - { - "w": 1494720000, - "a": 2607, - "d": 1639, - "c": 2 - }, - { - "w": 1495324800, - "a": 54, - "d": 4, - "c": 2 - }, - { - "w": 1495929600, - "a": 183, - "d": 9, - "c": 3 - }, - { - "w": 1496534400, - "a": 53, - "d": 13, - "c": 1 - }, - { - "w": 1497139200, - "a": 11, - "d": 1, - "c": 1 - }, - { - "w": 1497744000, - "a": 144, - "d": 42, - "c": 8 - }, - { - "w": 1498348800, - "a": 23, - "d": 1, - "c": 1 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 87, - "d": 15, - "c": 4 - }, - { - "w": 1500163200, - "a": 51, - "d": 6, - "c": 3 - }, - { - "w": 1500768000, - "a": 97, - "d": 17, - "c": 4 - }, - { - "w": 1501372800, - "a": 73, - "d": 12, - "c": 5 - }, - { - "w": 1501977600, - "a": 32, - "d": 3, - "c": 3 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 2, - "d": 49, - "c": 3 - }, - { - "w": 1503792000, - "a": 48, - "d": 4, - "c": 2 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 4, - "d": 2, - "c": 1 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 12, - "d": 8, - "c": 5 - }, - { - "w": 1508630400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1509235200, - "a": 89, - "d": 195, - "c": 4 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 2, - "d": 3, - "c": 1 - }, - { - "w": 1512864000, - "a": 6, - "d": 4, - "c": 2 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 14, - "d": 15, - "c": 4 - }, - { - "w": 1515888000, - "a": 20, - "d": 37, - "c": 2 - }, - { - "w": 1516492800, - "a": 1, - "d": 2, - "c": 2 - }, - { - "w": 1517097600, - "a": 82, - "d": 14, - "c": 1 - }, - { - "w": 1517702400, - "a": 15, - "d": 10, - "c": 3 - }, - { - "w": 1518307200, - "a": 9, - "d": 1, - "c": 2 - }, - { - "w": 1518912000, - "a": 28, - "d": 27, - "c": 2 - }, - { - "w": 1519516800, - "a": 38, - "d": 14, - "c": 2 - }, - { - "w": 1520121600, - "a": 34, - "d": 9, - "c": 7 - }, - { - "w": 1520726400, - "a": 751, - "d": 715, - "c": 6 - }, - { - "w": 1521331200, - "a": 8, - "d": 2, - "c": 2 - }, - { - "w": 1521936000, - "a": 28, - "d": 3, - "c": 1 - }, - { - "w": 1522540800, - "a": 11, - "d": 11, - "c": 1 - }, - { - "w": 1523145600, - "a": 39, - "d": 7, - "c": 1 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 5, - "d": 30, - "c": 2 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 70, - "d": 8, - "c": 2 - }, - { - "w": 1526169600, - "a": 31, - "d": 6, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 4, - "d": 4, - "c": 3 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 3, - "d": 3, - "c": 2 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 8, - "d": 9, - "c": 3 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 37, - "d": 3, - "c": 1 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 85, - "d": 78, - "c": 3 - }, - { - "w": 1538870400, - "a": 19, - "d": 1, - "c": 3 - }, - { - "w": 1539475200, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1540080000, - "a": 97, - "d": 25, - "c": 3 - }, - { - "w": 1540684800, - "a": 120, - "d": 0, - "c": 2 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 23, - "d": 16, - "c": 1 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 7, - "d": 0, - "c": 1 - }, - { - "w": 1547337600, - "a": 43, - "d": 11, - "c": 2 - }, - { - "w": 1547942400, - "a": 61, - "d": 61, - "c": 2 - }, - { - "w": 1548547200, - "a": 11, - "d": 0, - "c": 1 - }, - { - "w": 1549152000, - "a": 0, - "d": 3, - "c": 1 - }, - { - "w": 1549756800, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1551571200, - "a": 18, - "d": 34, - "c": 3 - }, - { - "w": 1552176000, - "a": 6, - "d": 1, - "c": 1 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "jason-simmons", - "id": 14226037, - "node_id": "MDQ6VXNlcjE0MjI2MDM3", - "avatar_url": "https://avatars3.githubusercontent.com/u/14226037?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jason-simmons", - "html_url": "https://github.com/jason-simmons", - "followers_url": "https://api.github.com/users/jason-simmons/followers", - "following_url": "https://api.github.com/users/jason-simmons/following{/other_user}", - "gists_url": "https://api.github.com/users/jason-simmons/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jason-simmons/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jason-simmons/subscriptions", - "organizations_url": "https://api.github.com/users/jason-simmons/orgs", - "repos_url": "https://api.github.com/users/jason-simmons/repos", - "events_url": "https://api.github.com/users/jason-simmons/events{/privacy}", - "received_events_url": "https://api.github.com/users/jason-simmons/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 370, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485648000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486252800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1486857600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492905600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1493510400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494115200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1534032000, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1534636800, - "a": 8, - "d": 8, - "c": 8 - }, - { - "w": 1535241600, - "a": 10, - "d": 10, - "c": 10 - }, - { - "w": 1535846400, - "a": 8, - "d": 8, - "c": 8 - }, - { - "w": 1536451200, - "a": 9, - "d": 9, - "c": 9 - }, - { - "w": 1537056000, - "a": 8, - "d": 8, - "c": 8 - }, - { - "w": 1537660800, - "a": 6, - "d": 6, - "c": 6 - }, - { - "w": 1538265600, - "a": 9, - "d": 9, - "c": 9 - }, - { - "w": 1538870400, - "a": 16, - "d": 16, - "c": 16 - }, - { - "w": 1539475200, - "a": 8, - "d": 8, - "c": 8 - }, - { - "w": 1540080000, - "a": 7, - "d": 7, - "c": 7 - }, - { - "w": 1540684800, - "a": 9, - "d": 9, - "c": 9 - }, - { - "w": 1541289600, - "a": 15, - "d": 15, - "c": 15 - }, - { - "w": 1541894400, - "a": 41, - "d": 41, - "c": 41 - }, - { - "w": 1542499200, - "a": 8, - "d": 8, - "c": 8 - }, - { - "w": 1543104000, - "a": 7, - "d": 7, - "c": 7 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 7, - "d": 7, - "c": 7 - }, - { - "w": 1544918400, - "a": 9, - "d": 9, - "c": 9 - }, - { - "w": 1545523200, - "a": 5, - "d": 5, - "c": 5 - }, - { - "w": 1546128000, - "a": 8, - "d": 8, - "c": 8 - }, - { - "w": 1546732800, - "a": 3, - "d": 3, - "c": 3 - }, - { - "w": 1547337600, - "a": 9, - "d": 9, - "c": 9 - }, - { - "w": 1547942400, - "a": 11, - "d": 11, - "c": 11 - }, - { - "w": 1548547200, - "a": 4, - "d": 4, - "c": 4 - }, - { - "w": 1549152000, - "a": 15, - "d": 15, - "c": 15 - }, - { - "w": 1549756800, - "a": 11, - "d": 11, - "c": 11 - }, - { - "w": 1550361600, - "a": 6, - "d": 6, - "c": 6 - }, - { - "w": 1550966400, - "a": 15, - "d": 15, - "c": 15 - }, - { - "w": 1551571200, - "a": 15, - "d": 15, - "c": 15 - }, - { - "w": 1552176000, - "a": 14, - "d": 14, - "c": 14 - }, - { - "w": 1552780800, - "a": 18, - "d": 18, - "c": 18 - }, - { - "w": 1553385600, - "a": 17, - "d": 17, - "c": 17 - }, - { - "w": 1553990400, - "a": 25, - "d": 25, - "c": 25 - }, - { - "w": 1554595200, - "a": 7, - "d": 7, - "c": 7 - } - ], - "author": { - "login": "engine-flutter-autoroll", - "id": 42042535, - "node_id": "MDQ6VXNlcjQyMDQyNTM1", - "avatar_url": "https://avatars2.githubusercontent.com/u/42042535?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/engine-flutter-autoroll", - "html_url": "https://github.com/engine-flutter-autoroll", - "followers_url": "https://api.github.com/users/engine-flutter-autoroll/followers", - "following_url": "https://api.github.com/users/engine-flutter-autoroll/following{/other_user}", - "gists_url": "https://api.github.com/users/engine-flutter-autoroll/gists{/gist_id}", - "starred_url": "https://api.github.com/users/engine-flutter-autoroll/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/engine-flutter-autoroll/subscriptions", - "organizations_url": "https://api.github.com/users/engine-flutter-autoroll/orgs", - "repos_url": "https://api.github.com/users/engine-flutter-autoroll/repos", - "events_url": "https://api.github.com/users/engine-flutter-autoroll/events{/privacy}", - "received_events_url": "https://api.github.com/users/engine-flutter-autoroll/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 420, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474761600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475366400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1475971200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477785600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 24, - "d": 0, - "c": 1 - }, - { - "w": 1483833600, - "a": 282, - "d": 158, - "c": 5 - }, - { - "w": 1484438400, - "a": 58, - "d": 19, - "c": 3 - }, - { - "w": 1485043200, - "a": 340, - "d": 315, - "c": 9 - }, - { - "w": 1485648000, - "a": 45, - "d": 42, - "c": 7 - }, - { - "w": 1486252800, - "a": 599, - "d": 256, - "c": 13 - }, - { - "w": 1486857600, - "a": 1327, - "d": 1100, - "c": 13 - }, - { - "w": 1487462400, - "a": 117, - "d": 108, - "c": 12 - }, - { - "w": 1488067200, - "a": 589, - "d": 410, - "c": 15 - }, - { - "w": 1488672000, - "a": 116, - "d": 215, - "c": 12 - }, - { - "w": 1489276800, - "a": 220, - "d": 163, - "c": 11 - }, - { - "w": 1489881600, - "a": 335, - "d": 78, - "c": 8 - }, - { - "w": 1490486400, - "a": 19, - "d": 11, - "c": 2 - }, - { - "w": 1491091200, - "a": 36, - "d": 41, - "c": 3 - }, - { - "w": 1491696000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1492300800, - "a": 3, - "d": 1, - "c": 1 - }, - { - "w": 1492905600, - "a": 135, - "d": 27, - "c": 5 - }, - { - "w": 1493510400, - "a": 31, - "d": 4, - "c": 2 - }, - { - "w": 1494115200, - "a": 138, - "d": 121, - "c": 2 - }, - { - "w": 1494720000, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1495324800, - "a": 6, - "d": 4, - "c": 4 - }, - { - "w": 1495929600, - "a": 569, - "d": 187, - "c": 4 - }, - { - "w": 1496534400, - "a": 17, - "d": 4, - "c": 5 - }, - { - "w": 1497139200, - "a": 420, - "d": 96, - "c": 9 - }, - { - "w": 1497744000, - "a": 765, - "d": 168, - "c": 4 - }, - { - "w": 1498348800, - "a": 3, - "d": 1, - "c": 1 - }, - { - "w": 1498953600, - "a": 150, - "d": 39, - "c": 5 - }, - { - "w": 1499558400, - "a": 292, - "d": 103, - "c": 9 - }, - { - "w": 1500163200, - "a": 371, - "d": 22, - "c": 6 - }, - { - "w": 1500768000, - "a": 2, - "d": 7, - "c": 1 - }, - { - "w": 1501372800, - "a": 419, - "d": 60, - "c": 6 - }, - { - "w": 1501977600, - "a": 353, - "d": 72, - "c": 5 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 913, - "d": 133, - "c": 4 - }, - { - "w": 1503792000, - "a": 826, - "d": 56, - "c": 6 - }, - { - "w": 1504396800, - "a": 377, - "d": 27, - "c": 6 - }, - { - "w": 1505001600, - "a": 57, - "d": 22, - "c": 2 - }, - { - "w": 1505606400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1506211200, - "a": 134, - "d": 18, - "c": 4 - }, - { - "w": 1506816000, - "a": 564, - "d": 145, - "c": 5 - }, - { - "w": 1507420800, - "a": 106, - "d": 33, - "c": 2 - }, - { - "w": 1508025600, - "a": 2528, - "d": 1784, - "c": 5 - }, - { - "w": 1508630400, - "a": 1102, - "d": 297, - "c": 4 - }, - { - "w": 1509235200, - "a": 721, - "d": 39, - "c": 7 - }, - { - "w": 1509840000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1510444800, - "a": 50, - "d": 1, - "c": 1 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 176, - "d": 154, - "c": 1 - }, - { - "w": 1512259200, - "a": 341, - "d": 16, - "c": 2 - }, - { - "w": 1512864000, - "a": 1062, - "d": 224, - "c": 4 - }, - { - "w": 1513468800, - "a": 239, - "d": 32, - "c": 5 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 635, - "d": 139, - "c": 4 - }, - { - "w": 1515283200, - "a": 1195, - "d": 803, - "c": 6 - }, - { - "w": 1515888000, - "a": 280, - "d": 34, - "c": 5 - }, - { - "w": 1516492800, - "a": 932, - "d": 164, - "c": 7 - }, - { - "w": 1517097600, - "a": 589, - "d": 192, - "c": 2 - }, - { - "w": 1517702400, - "a": 562, - "d": 217, - "c": 3 - }, - { - "w": 1518307200, - "a": 186, - "d": 13, - "c": 2 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 600, - "d": 93, - "c": 6 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 99, - "d": 5, - "c": 1 - }, - { - "w": 1521936000, - "a": 45, - "d": 7, - "c": 1 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 106, - "d": 20, - "c": 1 - }, - { - "w": 1523750400, - "a": 296, - "d": 21, - "c": 4 - }, - { - "w": 1524355200, - "a": 5, - "d": 4, - "c": 2 - }, - { - "w": 1524960000, - "a": 3807, - "d": 891, - "c": 1 - }, - { - "w": 1525564800, - "a": 94, - "d": 21, - "c": 3 - }, - { - "w": 1526169600, - "a": 14, - "d": 28, - "c": 3 - }, - { - "w": 1526774400, - "a": 1749, - "d": 102, - "c": 4 - }, - { - "w": 1527379200, - "a": 112, - "d": 2, - "c": 4 - }, - { - "w": 1527984000, - "a": 1539, - "d": 105, - "c": 3 - }, - { - "w": 1528588800, - "a": 521, - "d": 23, - "c": 4 - }, - { - "w": 1529193600, - "a": 103, - "d": 10, - "c": 2 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 16, - "d": 2, - "c": 1 - }, - { - "w": 1531008000, - "a": 81, - "d": 2, - "c": 1 - }, - { - "w": 1531612800, - "a": 10, - "d": 8, - "c": 3 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 254, - "d": 76, - "c": 9 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 448, - "d": 394, - "c": 3 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 18, - "d": 261, - "c": 3 - }, - { - "w": 1535846400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1536451200, - "a": 11, - "d": 11, - "c": 7 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 20, - "d": 1, - "c": 1 - }, - { - "w": 1538265600, - "a": 8, - "d": 2, - "c": 2 - }, - { - "w": 1538870400, - "a": 208, - "d": 186, - "c": 1 - }, - { - "w": 1539475200, - "a": 179, - "d": 201, - "c": 2 - }, - { - "w": 1540080000, - "a": 235, - "d": 155, - "c": 3 - }, - { - "w": 1540684800, - "a": 8, - "d": 8, - "c": 2 - }, - { - "w": 1541289600, - "a": 6, - "d": 3, - "c": 3 - }, - { - "w": 1541894400, - "a": 4, - "d": 4, - "c": 4 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 70, - "d": 0, - "c": 1 - }, - { - "w": 1544313600, - "a": 381, - "d": 38, - "c": 9 - }, - { - "w": 1544918400, - "a": 130, - "d": 77, - "c": 1 - }, - { - "w": 1545523200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1546128000, - "a": 39, - "d": 5, - "c": 3 - }, - { - "w": 1546732800, - "a": 370, - "d": 526, - "c": 3 - }, - { - "w": 1547337600, - "a": 1292, - "d": 341, - "c": 7 - }, - { - "w": 1547942400, - "a": 16, - "d": 4, - "c": 2 - }, - { - "w": 1548547200, - "a": 454, - "d": 164, - "c": 6 - }, - { - "w": 1549152000, - "a": 84, - "d": 11, - "c": 3 - }, - { - "w": 1549756800, - "a": 219, - "d": 80, - "c": 4 - }, - { - "w": 1550361600, - "a": 226, - "d": 37, - "c": 5 - }, - { - "w": 1550966400, - "a": 443, - "d": 317, - "c": 4 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 486, - "d": 105, - "c": 4 - }, - { - "w": 1552780800, - "a": 4, - "d": 4, - "c": 2 - }, - { - "w": 1553385600, - "a": 561, - "d": 9, - "c": 1 - }, - { - "w": 1553990400, - "a": 196, - "d": 27, - "c": 7 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "goderbauer", - "id": 1227763, - "node_id": "MDQ6VXNlcjEyMjc3NjM=", - "avatar_url": "https://avatars2.githubusercontent.com/u/1227763?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/goderbauer", - "html_url": "https://github.com/goderbauer", - "followers_url": "https://api.github.com/users/goderbauer/followers", - "following_url": "https://api.github.com/users/goderbauer/following{/other_user}", - "gists_url": "https://api.github.com/users/goderbauer/gists{/gist_id}", - "starred_url": "https://api.github.com/users/goderbauer/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/goderbauer/subscriptions", - "organizations_url": "https://api.github.com/users/goderbauer/orgs", - "repos_url": "https://api.github.com/users/goderbauer/repos", - "events_url": "https://api.github.com/users/goderbauer/events{/privacy}", - "received_events_url": "https://api.github.com/users/goderbauer/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 496, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 395, - "d": 27, - "c": 9 - }, - { - "w": 1439078400, - "a": 40, - "d": 26, - "c": 5 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 17, - "d": 7, - "c": 1 - }, - { - "w": 1441497600, - "a": 26, - "d": 29, - "c": 1 - }, - { - "w": 1442102400, - "a": 3, - "d": 5, - "c": 1 - }, - { - "w": 1442707200, - "a": 48, - "d": 23, - "c": 3 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 37, - "d": 27, - "c": 8 - }, - { - "w": 1444521600, - "a": 55, - "d": 43, - "c": 1 - }, - { - "w": 1445126400, - "a": 59, - "d": 22, - "c": 6 - }, - { - "w": 1445731200, - "a": 105, - "d": 53, - "c": 8 - }, - { - "w": 1446336000, - "a": 588, - "d": 101, - "c": 5 - }, - { - "w": 1446940800, - "a": 57, - "d": 22, - "c": 6 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 42, - "d": 41, - "c": 3 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 154, - "d": 73, - "c": 7 - }, - { - "w": 1450569600, - "a": 29, - "d": 30, - "c": 3 - }, - { - "w": 1451174400, - "a": 213, - "d": 206, - "c": 2 - }, - { - "w": 1451779200, - "a": 27, - "d": 12, - "c": 2 - }, - { - "w": 1452384000, - "a": 7, - "d": 248, - "c": 3 - }, - { - "w": 1452988800, - "a": 2182, - "d": 1558, - "c": 12 - }, - { - "w": 1453593600, - "a": 1288, - "d": 931, - "c": 14 - }, - { - "w": 1454198400, - "a": 1132, - "d": 684, - "c": 14 - }, - { - "w": 1454803200, - "a": 986, - "d": 685, - "c": 12 - }, - { - "w": 1455408000, - "a": 2266, - "d": 1742, - "c": 6 - }, - { - "w": 1456012800, - "a": 817, - "d": 436, - "c": 20 - }, - { - "w": 1456617600, - "a": 263, - "d": 184, - "c": 10 - }, - { - "w": 1457222400, - "a": 766, - "d": 570, - "c": 17 - }, - { - "w": 1457827200, - "a": 842, - "d": 656, - "c": 9 - }, - { - "w": 1458432000, - "a": 884, - "d": 623, - "c": 11 - }, - { - "w": 1459036800, - "a": 272, - "d": 105, - "c": 9 - }, - { - "w": 1459641600, - "a": 724, - "d": 526, - "c": 13 - }, - { - "w": 1460246400, - "a": 1600, - "d": 1231, - "c": 10 - }, - { - "w": 1460851200, - "a": 304, - "d": 221, - "c": 11 - }, - { - "w": 1461456000, - "a": 1649, - "d": 902, - "c": 15 - }, - { - "w": 1462060800, - "a": 803, - "d": 533, - "c": 12 - }, - { - "w": 1462665600, - "a": 1056, - "d": 629, - "c": 10 - }, - { - "w": 1463270400, - "a": 115, - "d": 31, - "c": 6 - }, - { - "w": 1463875200, - "a": 1158, - "d": 809, - "c": 12 - }, - { - "w": 1464480000, - "a": 102, - "d": 55, - "c": 6 - }, - { - "w": 1465084800, - "a": 912, - "d": 499, - "c": 9 - }, - { - "w": 1465689600, - "a": 244, - "d": 72, - "c": 3 - }, - { - "w": 1466294400, - "a": 54, - "d": 15, - "c": 4 - }, - { - "w": 1466899200, - "a": 26, - "d": 18, - "c": 2 - }, - { - "w": 1467504000, - "a": 69, - "d": 13, - "c": 1 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 488, - "d": 76, - "c": 3 - }, - { - "w": 1469318400, - "a": 58, - "d": 50, - "c": 3 - }, - { - "w": 1469923200, - "a": 62, - "d": 64, - "c": 2 - }, - { - "w": 1470528000, - "a": 299, - "d": 166, - "c": 6 - }, - { - "w": 1471132800, - "a": 77, - "d": 53, - "c": 6 - }, - { - "w": 1471737600, - "a": 7, - "d": 3, - "c": 1 - }, - { - "w": 1472342400, - "a": 4, - "d": 3, - "c": 1 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 3, - "d": 0, - "c": 1 - }, - { - "w": 1474156800, - "a": 35, - "d": 20, - "c": 2 - }, - { - "w": 1474761600, - "a": 359, - "d": 65, - "c": 7 - }, - { - "w": 1475366400, - "a": 192, - "d": 15, - "c": 4 - }, - { - "w": 1475971200, - "a": 5, - "d": 5, - "c": 1 - }, - { - "w": 1476576000, - "a": 98, - "d": 36, - "c": 3 - }, - { - "w": 1477180800, - "a": 16, - "d": 0, - "c": 1 - }, - { - "w": 1477785600, - "a": 84, - "d": 231, - "c": 3 - }, - { - "w": 1478390400, - "a": 3, - "d": 4, - "c": 2 - }, - { - "w": 1478995200, - "a": 16, - "d": 10, - "c": 1 - }, - { - "w": 1479600000, - "a": 21, - "d": 10, - "c": 3 - }, - { - "w": 1480204800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1480809600, - "a": 79, - "d": 28, - "c": 2 - }, - { - "w": 1481414400, - "a": 20, - "d": 6, - "c": 2 - }, - { - "w": 1482019200, - "a": 9, - "d": 12, - "c": 1 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 37, - "d": 19, - "c": 3 - }, - { - "w": 1484438400, - "a": 49, - "d": 0, - "c": 1 - }, - { - "w": 1485043200, - "a": 0, - "d": 69, - "c": 1 - }, - { - "w": 1485648000, - "a": 12, - "d": 2, - "c": 2 - }, - { - "w": 1486252800, - "a": 75, - "d": 156, - "c": 5 - }, - { - "w": 1486857600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1487462400, - "a": 8, - "d": 3, - "c": 1 - }, - { - "w": 1488067200, - "a": 13, - "d": 5, - "c": 2 - }, - { - "w": 1488672000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1489276800, - "a": 52, - "d": 9, - "c": 2 - }, - { - "w": 1489881600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1490486400, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1491091200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1491696000, - "a": 69, - "d": 46, - "c": 5 - }, - { - "w": 1492300800, - "a": 108, - "d": 44, - "c": 4 - }, - { - "w": 1492905600, - "a": 82, - "d": 20, - "c": 2 - }, - { - "w": 1493510400, - "a": 43, - "d": 32, - "c": 2 - }, - { - "w": 1494115200, - "a": 7, - "d": 8, - "c": 1 - }, - { - "w": 1494720000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495324800, - "a": 70, - "d": 18, - "c": 2 - }, - { - "w": 1495929600, - "a": 89, - "d": 44, - "c": 2 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 9, - "d": 15, - "c": 2 - }, - { - "w": 1498348800, - "a": 11, - "d": 18, - "c": 2 - }, - { - "w": 1498953600, - "a": 71, - "d": 17, - "c": 2 - }, - { - "w": 1499558400, - "a": 7, - "d": 10, - "c": 2 - }, - { - "w": 1500163200, - "a": 96, - "d": 34, - "c": 3 - }, - { - "w": 1500768000, - "a": 252, - "d": 244, - "c": 4 - }, - { - "w": 1501372800, - "a": 183, - "d": 44, - "c": 4 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 160, - "d": 160, - "c": 3 - }, - { - "w": 1503792000, - "a": 209, - "d": 23, - "c": 2 - }, - { - "w": 1504396800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505001600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1505606400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 23, - "d": 17, - "c": 1 - }, - { - "w": 1507420800, - "a": 16, - "d": 4, - "c": 1 - }, - { - "w": 1508025600, - "a": 9, - "d": 10, - "c": 2 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509840000, - "a": 26, - "d": 30, - "c": 3 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 21, - "c": 1 - }, - { - "w": 1511654400, - "a": 53, - "d": 14, - "c": 3 - }, - { - "w": 1512259200, - "a": 102, - "d": 38, - "c": 2 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 52, - "d": 10, - "c": 1 - }, - { - "w": 1515888000, - "a": 15, - "d": 2, - "c": 1 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 4, - "d": 7, - "c": 2 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 106, - "d": 6, - "c": 1 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 51, - "d": 75, - "c": 1 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 7, - "d": 2, - "c": 2 - }, - { - "w": 1523145600, - "a": 1395, - "d": 1386, - "c": 3 - }, - { - "w": 1523750400, - "a": 46, - "d": 24, - "c": 4 - }, - { - "w": 1524355200, - "a": 8, - "d": 3, - "c": 1 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 888, - "d": 1249, - "c": 5 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 13, - "d": 9, - "c": 3 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 10, - "d": 11, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 104, - "d": 213, - "c": 2 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 15, - "d": 79, - "c": 3 - }, - { - "w": 1533427200, - "a": 29, - "d": 11, - "c": 1 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 32, - "d": 2, - "c": 1 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 1, - "d": 32, - "c": 2 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 48, - "d": 2, - "c": 1 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 46, - "d": 12, - "c": 2 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 13, - "d": 26, - "c": 3 - }, - { - "w": 1541289600, - "a": 11, - "d": 0, - "c": 1 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 144, - "d": 60, - "c": 2 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 4, - "d": 4, - "c": 1 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "devoncarew", - "id": 1269969, - "node_id": "MDQ6VXNlcjEyNjk5Njk=", - "avatar_url": "https://avatars0.githubusercontent.com/u/1269969?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/devoncarew", - "html_url": "https://github.com/devoncarew", - "followers_url": "https://api.github.com/users/devoncarew/followers", - "following_url": "https://api.github.com/users/devoncarew/following{/other_user}", - "gists_url": "https://api.github.com/users/devoncarew/gists{/gist_id}", - "starred_url": "https://api.github.com/users/devoncarew/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/devoncarew/subscriptions", - "organizations_url": "https://api.github.com/users/devoncarew/orgs", - "repos_url": "https://api.github.com/users/devoncarew/repos", - "events_url": "https://api.github.com/users/devoncarew/events{/privacy}", - "received_events_url": "https://api.github.com/users/devoncarew/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 537, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434240000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437264000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440288000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1440892800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1441497600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443312000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1443916800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1444521600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445126400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1445731200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446336000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1446940800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1447545600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448150400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1448755200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449360000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1449964800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452384000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1452988800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454803200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1455408000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456012800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1456617600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457222400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1457827200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1458432000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459036800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1459641600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460246400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1460851200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1461456000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462060800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463875200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1464480000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466294400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469318400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1469923200, - "a": 42, - "d": 10, - "c": 4 - }, - { - "w": 1470528000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471132800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1471737600, - "a": 125, - "d": 49, - "c": 3 - }, - { - "w": 1472342400, - "a": 3, - "d": 3, - "c": 2 - }, - { - "w": 1472947200, - "a": 19, - "d": 26, - "c": 3 - }, - { - "w": 1473552000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1474156800, - "a": 5, - "d": 2, - "c": 1 - }, - { - "w": 1474761600, - "a": 594, - "d": 522, - "c": 5 - }, - { - "w": 1475366400, - "a": 316, - "d": 9, - "c": 4 - }, - { - "w": 1475971200, - "a": 17, - "d": 4, - "c": 2 - }, - { - "w": 1476576000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1477180800, - "a": 59, - "d": 47, - "c": 7 - }, - { - "w": 1477785600, - "a": 182, - "d": 68, - "c": 8 - }, - { - "w": 1478390400, - "a": 88, - "d": 10, - "c": 1 - }, - { - "w": 1478995200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1479600000, - "a": 22, - "d": 9, - "c": 3 - }, - { - "w": 1480204800, - "a": 51, - "d": 0, - "c": 1 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483833600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1484438400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1485043200, - "a": 67, - "d": 7, - "c": 5 - }, - { - "w": 1485648000, - "a": 368, - "d": 114, - "c": 18 - }, - { - "w": 1486252800, - "a": 330, - "d": 129, - "c": 17 - }, - { - "w": 1486857600, - "a": 30, - "d": 13, - "c": 4 - }, - { - "w": 1487462400, - "a": 219, - "d": 32, - "c": 9 - }, - { - "w": 1488067200, - "a": 4715, - "d": 4348, - "c": 20 - }, - { - "w": 1488672000, - "a": 2971, - "d": 2941, - "c": 19 - }, - { - "w": 1489276800, - "a": 24, - "d": 8, - "c": 6 - }, - { - "w": 1489881600, - "a": 315, - "d": 56, - "c": 2 - }, - { - "w": 1490486400, - "a": 135, - "d": 90, - "c": 5 - }, - { - "w": 1491091200, - "a": 37, - "d": 17, - "c": 4 - }, - { - "w": 1491696000, - "a": 13, - "d": 4, - "c": 3 - }, - { - "w": 1492300800, - "a": 3, - "d": 1, - "c": 1 - }, - { - "w": 1492905600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1493510400, - "a": 1322, - "d": 1041, - "c": 16 - }, - { - "w": 1494115200, - "a": 1380, - "d": 93, - "c": 14 - }, - { - "w": 1494720000, - "a": 123, - "d": 28, - "c": 8 - }, - { - "w": 1495324800, - "a": 466, - "d": 403, - "c": 9 - }, - { - "w": 1495929600, - "a": 35, - "d": 8, - "c": 7 - }, - { - "w": 1496534400, - "a": 13, - "d": 7, - "c": 7 - }, - { - "w": 1497139200, - "a": 508, - "d": 493, - "c": 12 - }, - { - "w": 1497744000, - "a": 353, - "d": 218, - "c": 10 - }, - { - "w": 1498348800, - "a": 299, - "d": 42, - "c": 6 - }, - { - "w": 1498953600, - "a": 131, - "d": 41, - "c": 2 - }, - { - "w": 1499558400, - "a": 93, - "d": 6, - "c": 3 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 463, - "d": 172, - "c": 4 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 161, - "d": 31, - "c": 7 - }, - { - "w": 1503792000, - "a": 752, - "d": 309, - "c": 6 - }, - { - "w": 1504396800, - "a": 83, - "d": 44, - "c": 7 - }, - { - "w": 1505001600, - "a": 122, - "d": 34, - "c": 1 - }, - { - "w": 1505606400, - "a": 35, - "d": 7, - "c": 3 - }, - { - "w": 1506211200, - "a": 458, - "d": 52, - "c": 5 - }, - { - "w": 1506816000, - "a": 3, - "d": 5, - "c": 3 - }, - { - "w": 1507420800, - "a": 10, - "d": 10, - "c": 3 - }, - { - "w": 1508025600, - "a": 4, - "d": 2, - "c": 1 - }, - { - "w": 1508630400, - "a": 21, - "d": 7, - "c": 2 - }, - { - "w": 1509235200, - "a": 74, - "d": 74, - "c": 6 - }, - { - "w": 1509840000, - "a": 120, - "d": 75, - "c": 6 - }, - { - "w": 1510444800, - "a": 49, - "d": 0, - "c": 1 - }, - { - "w": 1511049600, - "a": 2321, - "d": 2630, - "c": 8 - }, - { - "w": 1511654400, - "a": 201, - "d": 128, - "c": 7 - }, - { - "w": 1512259200, - "a": 284, - "d": 150, - "c": 12 - }, - { - "w": 1512864000, - "a": 992, - "d": 787, - "c": 16 - }, - { - "w": 1513468800, - "a": 83, - "d": 88, - "c": 3 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 29, - "d": 17, - "c": 3 - }, - { - "w": 1515283200, - "a": 70, - "d": 1, - "c": 1 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 462, - "d": 263, - "c": 6 - }, - { - "w": 1517097600, - "a": 172, - "d": 23, - "c": 6 - }, - { - "w": 1517702400, - "a": 383, - "d": 102, - "c": 14 - }, - { - "w": 1518307200, - "a": 2, - "d": 2, - "c": 2 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 15, - "d": 22, - "c": 4 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 4, - "d": 4, - "c": 4 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 18, - "d": 18, - "c": 8 - }, - { - "w": 1522540800, - "a": 3, - "d": 3, - "c": 3 - }, - { - "w": 1523145600, - "a": 47, - "d": 44, - "c": 3 - }, - { - "w": 1523750400, - "a": 35, - "d": 4, - "c": 1 - }, - { - "w": 1524355200, - "a": 914, - "d": 742, - "c": 19 - }, - { - "w": 1524960000, - "a": 1421, - "d": 1681, - "c": 21 - }, - { - "w": 1525564800, - "a": 635, - "d": 246, - "c": 17 - }, - { - "w": 1526169600, - "a": 96, - "d": 56, - "c": 8 - }, - { - "w": 1526774400, - "a": 76, - "d": 1, - "c": 2 - }, - { - "w": 1527379200, - "a": 1, - "d": 79, - "c": 2 - }, - { - "w": 1527984000, - "a": 1419, - "d": 1999, - "c": 7 - }, - { - "w": 1528588800, - "a": 1251, - "d": 441, - "c": 2 - }, - { - "w": 1529193600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529798400, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 88, - "d": 237, - "c": 5 - }, - { - "w": 1531612800, - "a": 4, - "d": 115, - "c": 2 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 221, - "d": 114, - "c": 7 - }, - { - "w": 1535846400, - "a": 224, - "d": 760, - "c": 12 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 334, - "d": 160, - "c": 3 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 9, - "d": 17, - "c": 1 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 6, - "d": 6, - "c": 1 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 41, - "d": 8, - "c": 3 - }, - { - "w": 1547337600, - "a": 51, - "d": 26, - "c": 3 - }, - { - "w": 1547942400, - "a": 7, - "d": 13, - "c": 2 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 4, - "d": 4, - "c": 4 - }, - { - "w": 1550966400, - "a": 4, - "d": 4, - "c": 4 - }, - { - "w": 1551571200, - "a": 27, - "d": 5, - "c": 2 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "cbracken", - "id": 351029, - "node_id": "MDQ6VXNlcjM1MTAyOQ==", - "avatar_url": "https://avatars3.githubusercontent.com/u/351029?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/cbracken", - "html_url": "https://github.com/cbracken", - "followers_url": "https://api.github.com/users/cbracken/followers", - "following_url": "https://api.github.com/users/cbracken/following{/other_user}", - "gists_url": "https://api.github.com/users/cbracken/gists{/gist_id}", - "starred_url": "https://api.github.com/users/cbracken/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/cbracken/subscriptions", - "organizations_url": "https://api.github.com/users/cbracken/orgs", - "repos_url": "https://api.github.com/users/cbracken/repos", - "events_url": "https://api.github.com/users/cbracken/events{/privacy}", - "received_events_url": "https://api.github.com/users/cbracken/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 699, - "weeks": [ - { - "w": 1413676800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420934400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 213, - "d": 13, - "c": 2 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 96, - "d": 0, - "c": 1 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1432425600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433030400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1433635200, - "a": 86, - "d": 111, - "c": 3 - }, - { - "w": 1434240000, - "a": 144, - "d": 16, - "c": 5 - }, - { - "w": 1434844800, - "a": 64, - "d": 2, - "c": 2 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 328, - "d": 135, - "c": 1 - }, - { - "w": 1437264000, - "a": 164, - "d": 142, - "c": 8 - }, - { - "w": 1437868800, - "a": 281, - "d": 89, - "c": 4 - }, - { - "w": 1438473600, - "a": 110, - "d": 25, - "c": 4 - }, - { - "w": 1439078400, - "a": 707, - "d": 60, - "c": 4 - }, - { - "w": 1439683200, - "a": 631, - "d": 320, - "c": 5 - }, - { - "w": 1440288000, - "a": 152, - "d": 61, - "c": 5 - }, - { - "w": 1440892800, - "a": 873, - "d": 384, - "c": 9 - }, - { - "w": 1441497600, - "a": 146, - "d": 57, - "c": 3 - }, - { - "w": 1442102400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1442707200, - "a": 108, - "d": 33, - "c": 7 - }, - { - "w": 1443312000, - "a": 657, - "d": 139, - "c": 10 - }, - { - "w": 1443916800, - "a": 409, - "d": 79, - "c": 5 - }, - { - "w": 1444521600, - "a": 450, - "d": 27, - "c": 6 - }, - { - "w": 1445126400, - "a": 474, - "d": 75, - "c": 4 - }, - { - "w": 1445731200, - "a": 249, - "d": 7, - "c": 3 - }, - { - "w": 1446336000, - "a": 623, - "d": 288, - "c": 13 - }, - { - "w": 1446940800, - "a": 495, - "d": 241, - "c": 9 - }, - { - "w": 1447545600, - "a": 157, - "d": 121, - "c": 3 - }, - { - "w": 1448150400, - "a": 347, - "d": 278, - "c": 1 - }, - { - "w": 1448755200, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1449360000, - "a": 665, - "d": 343, - "c": 8 - }, - { - "w": 1449964800, - "a": 310, - "d": 98, - "c": 5 - }, - { - "w": 1450569600, - "a": 328, - "d": 217, - "c": 2 - }, - { - "w": 1451174400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451779200, - "a": 282, - "d": 131, - "c": 4 - }, - { - "w": 1452384000, - "a": 753, - "d": 640, - "c": 4 - }, - { - "w": 1452988800, - "a": 416, - "d": 82, - "c": 3 - }, - { - "w": 1453593600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1454198400, - "a": 1078, - "d": 280, - "c": 7 - }, - { - "w": 1454803200, - "a": 1674, - "d": 632, - "c": 7 - }, - { - "w": 1455408000, - "a": 736, - "d": 101, - "c": 6 - }, - { - "w": 1456012800, - "a": 1019, - "d": 356, - "c": 8 - }, - { - "w": 1456617600, - "a": 276, - "d": 116, - "c": 8 - }, - { - "w": 1457222400, - "a": 529, - "d": 258, - "c": 6 - }, - { - "w": 1457827200, - "a": 402, - "d": 172, - "c": 3 - }, - { - "w": 1458432000, - "a": 135, - "d": 72, - "c": 5 - }, - { - "w": 1459036800, - "a": 65, - "d": 50, - "c": 5 - }, - { - "w": 1459641600, - "a": 802, - "d": 586, - "c": 7 - }, - { - "w": 1460246400, - "a": 674, - "d": 90, - "c": 3 - }, - { - "w": 1460851200, - "a": 451, - "d": 127, - "c": 7 - }, - { - "w": 1461456000, - "a": 188, - "d": 43, - "c": 3 - }, - { - "w": 1462060800, - "a": 599, - "d": 53, - "c": 3 - }, - { - "w": 1462665600, - "a": 14974, - "d": 14869, - "c": 9 - }, - { - "w": 1463270400, - "a": 806, - "d": 363, - "c": 6 - }, - { - "w": 1463875200, - "a": 110, - "d": 65, - "c": 8 - }, - { - "w": 1464480000, - "a": 2617, - "d": 1698, - "c": 5 - }, - { - "w": 1465084800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1465689600, - "a": 660, - "d": 330, - "c": 10 - }, - { - "w": 1466294400, - "a": 1239, - "d": 465, - "c": 9 - }, - { - "w": 1466899200, - "a": 429, - "d": 193, - "c": 4 - }, - { - "w": 1467504000, - "a": 78, - "d": 51, - "c": 1 - }, - { - "w": 1468108800, - "a": 185, - "d": 104, - "c": 4 - }, - { - "w": 1468713600, - "a": 1120, - "d": 70, - "c": 5 - }, - { - "w": 1469318400, - "a": 259, - "d": 175, - "c": 9 - }, - { - "w": 1469923200, - "a": 382, - "d": 124, - "c": 7 - }, - { - "w": 1470528000, - "a": 5, - "d": 5, - "c": 2 - }, - { - "w": 1471132800, - "a": 502, - "d": 339, - "c": 10 - }, - { - "w": 1471737600, - "a": 364, - "d": 213, - "c": 5 - }, - { - "w": 1472342400, - "a": 267, - "d": 35, - "c": 6 - }, - { - "w": 1472947200, - "a": 233, - "d": 40, - "c": 2 - }, - { - "w": 1473552000, - "a": 303, - "d": 79, - "c": 3 - }, - { - "w": 1474156800, - "a": 365, - "d": 91, - "c": 4 - }, - { - "w": 1474761600, - "a": 243, - "d": 15, - "c": 1 - }, - { - "w": 1475366400, - "a": 304, - "d": 84, - "c": 4 - }, - { - "w": 1475971200, - "a": 178, - "d": 121, - "c": 1 - }, - { - "w": 1476576000, - "a": 139, - "d": 33, - "c": 4 - }, - { - "w": 1477180800, - "a": 38, - "d": 30, - "c": 2 - }, - { - "w": 1477785600, - "a": 292, - "d": 230, - "c": 3 - }, - { - "w": 1478390400, - "a": 242, - "d": 59, - "c": 1 - }, - { - "w": 1478995200, - "a": 478, - "d": 253, - "c": 6 - }, - { - "w": 1479600000, - "a": 502, - "d": 184, - "c": 5 - }, - { - "w": 1480204800, - "a": 387, - "d": 199, - "c": 8 - }, - { - "w": 1480809600, - "a": 132, - "d": 19, - "c": 2 - }, - { - "w": 1481414400, - "a": 63, - "d": 3, - "c": 2 - }, - { - "w": 1482019200, - "a": 548, - "d": 104, - "c": 2 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 46, - "d": 1, - "c": 1 - }, - { - "w": 1483833600, - "a": 1529, - "d": 1414, - "c": 3 - }, - { - "w": 1484438400, - "a": 572, - "d": 11, - "c": 2 - }, - { - "w": 1485043200, - "a": 449, - "d": 95, - "c": 5 - }, - { - "w": 1485648000, - "a": 11, - "d": 0, - "c": 1 - }, - { - "w": 1486252800, - "a": 322, - "d": 141, - "c": 3 - }, - { - "w": 1486857600, - "a": 565, - "d": 447, - "c": 3 - }, - { - "w": 1487462400, - "a": 273, - "d": 32, - "c": 2 - }, - { - "w": 1488067200, - "a": 866, - "d": 4, - "c": 2 - }, - { - "w": 1488672000, - "a": 303, - "d": 47, - "c": 4 - }, - { - "w": 1489276800, - "a": 1515, - "d": 930, - "c": 6 - }, - { - "w": 1489881600, - "a": 1235, - "d": 946, - "c": 4 - }, - { - "w": 1490486400, - "a": 303, - "d": 200, - "c": 2 - }, - { - "w": 1491091200, - "a": 166, - "d": 55, - "c": 2 - }, - { - "w": 1491696000, - "a": 1211, - "d": 429, - "c": 6 - }, - { - "w": 1492300800, - "a": 773, - "d": 47, - "c": 7 - }, - { - "w": 1492905600, - "a": 655, - "d": 1, - "c": 2 - }, - { - "w": 1493510400, - "a": 2552, - "d": 200, - "c": 5 - }, - { - "w": 1494115200, - "a": 533, - "d": 143, - "c": 4 - }, - { - "w": 1494720000, - "a": 972, - "d": 192, - "c": 3 - }, - { - "w": 1495324800, - "a": 1332, - "d": 462, - "c": 9 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 805, - "d": 187, - "c": 6 - }, - { - "w": 1497139200, - "a": 459, - "d": 238, - "c": 4 - }, - { - "w": 1497744000, - "a": 271, - "d": 57, - "c": 3 - }, - { - "w": 1498348800, - "a": 193, - "d": 65, - "c": 3 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 212, - "d": 18, - "c": 2 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 202, - "d": 14, - "c": 2 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 1061, - "d": 237, - "c": 1 - }, - { - "w": 1503792000, - "a": 805, - "d": 261, - "c": 5 - }, - { - "w": 1504396800, - "a": 807, - "d": 94, - "c": 2 - }, - { - "w": 1505001600, - "a": 1089, - "d": 107, - "c": 4 - }, - { - "w": 1505606400, - "a": 378, - "d": 14, - "c": 2 - }, - { - "w": 1506211200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1506816000, - "a": 184, - "d": 0, - "c": 1 - }, - { - "w": 1507420800, - "a": 3620, - "d": 3060, - "c": 1 - }, - { - "w": 1508025600, - "a": 202, - "d": 11, - "c": 3 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 109, - "d": 72, - "c": 2 - }, - { - "w": 1509840000, - "a": 123, - "d": 20, - "c": 1 - }, - { - "w": 1510444800, - "a": 64, - "d": 6, - "c": 2 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 954, - "d": 287, - "c": 2 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 3735, - "d": 2009, - "c": 3 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 4071, - "d": 984, - "c": 3 - }, - { - "w": 1515888000, - "a": 676, - "d": 97, - "c": 5 - }, - { - "w": 1516492800, - "a": 42, - "d": 1, - "c": 1 - }, - { - "w": 1517097600, - "a": 40, - "d": 4, - "c": 1 - }, - { - "w": 1517702400, - "a": 1197, - "d": 389, - "c": 4 - }, - { - "w": 1518307200, - "a": 275, - "d": 71, - "c": 1 - }, - { - "w": 1518912000, - "a": 650, - "d": 185, - "c": 2 - }, - { - "w": 1519516800, - "a": 833, - "d": 18, - "c": 2 - }, - { - "w": 1520121600, - "a": 554, - "d": 175, - "c": 4 - }, - { - "w": 1520726400, - "a": 1031, - "d": 247, - "c": 9 - }, - { - "w": 1521331200, - "a": 654, - "d": 149, - "c": 6 - }, - { - "w": 1521936000, - "a": 304, - "d": 223, - "c": 5 - }, - { - "w": 1522540800, - "a": 717, - "d": 164, - "c": 7 - }, - { - "w": 1523145600, - "a": 33, - "d": 25, - "c": 3 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 6149, - "d": 5162, - "c": 9 - }, - { - "w": 1524960000, - "a": 681, - "d": 462, - "c": 8 - }, - { - "w": 1525564800, - "a": 199, - "d": 114, - "c": 5 - }, - { - "w": 1526169600, - "a": 1743, - "d": 1015, - "c": 6 - }, - { - "w": 1526774400, - "a": 315, - "d": 146, - "c": 6 - }, - { - "w": 1527379200, - "a": 16, - "d": 2, - "c": 1 - }, - { - "w": 1527984000, - "a": 330, - "d": 21, - "c": 3 - }, - { - "w": 1528588800, - "a": 244, - "d": 75, - "c": 2 - }, - { - "w": 1529193600, - "a": 130, - "d": 0, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 12, - "d": 7, - "c": 1 - }, - { - "w": 1531008000, - "a": 1111, - "d": 127, - "c": 4 - }, - { - "w": 1531612800, - "a": 9003, - "d": 2379, - "c": 3 - }, - { - "w": 1532217600, - "a": 506, - "d": 51, - "c": 1 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 262, - "d": 1, - "c": 2 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 8368, - "d": 4901, - "c": 4 - }, - { - "w": 1535241600, - "a": 14, - "d": 0, - "c": 1 - }, - { - "w": 1535846400, - "a": 1627, - "d": 39, - "c": 3 - }, - { - "w": 1536451200, - "a": 2319, - "d": 1179, - "c": 2 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 877, - "d": 426, - "c": 4 - }, - { - "w": 1538265600, - "a": 2332, - "d": 1105, - "c": 4 - }, - { - "w": 1538870400, - "a": 1358, - "d": 694, - "c": 5 - }, - { - "w": 1539475200, - "a": 913, - "d": 140, - "c": 5 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 7170, - "d": 5808, - "c": 7 - }, - { - "w": 1541289600, - "a": 259, - "d": 8, - "c": 2 - }, - { - "w": 1541894400, - "a": 487, - "d": 6, - "c": 2 - }, - { - "w": 1542499200, - "a": 4831, - "d": 4242, - "c": 5 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 204, - "d": 83, - "c": 6 - }, - { - "w": 1544918400, - "a": 3311, - "d": 1985, - "c": 6 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 98, - "d": 26, - "c": 2 - }, - { - "w": 1546732800, - "a": 162, - "d": 2, - "c": 3 - }, - { - "w": 1547337600, - "a": 256, - "d": 41, - "c": 4 - }, - { - "w": 1547942400, - "a": 310, - "d": 24, - "c": 3 - }, - { - "w": 1548547200, - "a": 96, - "d": 5, - "c": 2 - }, - { - "w": 1549152000, - "a": 1656, - "d": 301, - "c": 9 - }, - { - "w": 1549756800, - "a": 837, - "d": 11, - "c": 3 - }, - { - "w": 1550361600, - "a": 856, - "d": 208, - "c": 1 - }, - { - "w": 1550966400, - "a": 180, - "d": 19, - "c": 4 - }, - { - "w": 1551571200, - "a": 91, - "d": 20, - "c": 1 - }, - { - "w": 1552176000, - "a": 1383, - "d": 1326, - "c": 4 - }, - { - "w": 1552780800, - "a": 34, - "d": 26, - "c": 1 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 398, - "d": 11, - "c": 4 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "HansMuller", - "id": 1377460, - "node_id": "MDQ6VXNlcjEzNzc0NjA=", - "avatar_url": "https://avatars2.githubusercontent.com/u/1377460?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/HansMuller", - "html_url": "https://github.com/HansMuller", - "followers_url": "https://api.github.com/users/HansMuller/followers", - "following_url": "https://api.github.com/users/HansMuller/following{/other_user}", - "gists_url": "https://api.github.com/users/HansMuller/gists{/gist_id}", - "starred_url": "https://api.github.com/users/HansMuller/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/HansMuller/subscriptions", - "organizations_url": "https://api.github.com/users/HansMuller/orgs", - "repos_url": "https://api.github.com/users/HansMuller/repos", - "events_url": "https://api.github.com/users/HansMuller/events{/privacy}", - "received_events_url": "https://api.github.com/users/HansMuller/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 1486, - "weeks": [ - { - "w": 1413676800, - "a": 8, - "d": 1, - "c": 2 - }, - { - "w": 1414281600, - "a": 73, - "d": 61, - "c": 4 - }, - { - "w": 1414886400, - "a": 292, - "d": 21, - "c": 6 - }, - { - "w": 1415491200, - "a": 612, - "d": 11, - "c": 2 - }, - { - "w": 1416096000, - "a": 65, - "d": 86, - "c": 9 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 71, - "d": 75, - "c": 3 - }, - { - "w": 1420934400, - "a": 14, - "d": 5, - "c": 1 - }, - { - "w": 1421539200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422144000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423958400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1424563200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1425168000, - "a": 120, - "d": 62, - "c": 2 - }, - { - "w": 1425772800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426377600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1426982400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1427587200, - "a": 12, - "d": 12, - "c": 1 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 10, - "d": 12, - "c": 4 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 137, - "d": 37, - "c": 6 - }, - { - "w": 1431820800, - "a": 7, - "d": 7, - "c": 1 - }, - { - "w": 1432425600, - "a": 31067, - "d": 268, - "c": 13 - }, - { - "w": 1433030400, - "a": 172, - "d": 92, - "c": 9 - }, - { - "w": 1433635200, - "a": 1322, - "d": 1188, - "c": 16 - }, - { - "w": 1434240000, - "a": 389, - "d": 219, - "c": 12 - }, - { - "w": 1434844800, - "a": 257, - "d": 63, - "c": 10 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436659200, - "a": 7, - "d": 7, - "c": 1 - }, - { - "w": 1437264000, - "a": 1262, - "d": 641, - "c": 25 - }, - { - "w": 1437868800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1438473600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439078400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1439683200, - "a": 840, - "d": 456, - "c": 21 - }, - { - "w": 1440288000, - "a": 1799, - "d": 766, - "c": 21 - }, - { - "w": 1440892800, - "a": 491, - "d": 129, - "c": 6 - }, - { - "w": 1441497600, - "a": 309, - "d": 131, - "c": 7 - }, - { - "w": 1442102400, - "a": 1510, - "d": 1107, - "c": 21 - }, - { - "w": 1442707200, - "a": 3347, - "d": 1310, - "c": 19 - }, - { - "w": 1443312000, - "a": 3205, - "d": 1088, - "c": 29 - }, - { - "w": 1443916800, - "a": 2176, - "d": 1618, - "c": 12 - }, - { - "w": 1444521600, - "a": 732, - "d": 76, - "c": 8 - }, - { - "w": 1445126400, - "a": 1769, - "d": 1052, - "c": 19 - }, - { - "w": 1445731200, - "a": 1354, - "d": 668, - "c": 22 - }, - { - "w": 1446336000, - "a": 1795, - "d": 1388, - "c": 20 - }, - { - "w": 1446940800, - "a": 919, - "d": 377, - "c": 7 - }, - { - "w": 1447545600, - "a": 2569, - "d": 1289, - "c": 18 - }, - { - "w": 1448150400, - "a": 511, - "d": 258, - "c": 11 - }, - { - "w": 1448755200, - "a": 6011, - "d": 5828, - "c": 21 - }, - { - "w": 1449360000, - "a": 867, - "d": 639, - "c": 20 - }, - { - "w": 1449964800, - "a": 17722, - "d": 13872, - "c": 16 - }, - { - "w": 1450569600, - "a": 250, - "d": 113, - "c": 3 - }, - { - "w": 1451174400, - "a": 274, - "d": 225, - "c": 5 - }, - { - "w": 1451779200, - "a": 1191, - "d": 646, - "c": 14 - }, - { - "w": 1452384000, - "a": 1823, - "d": 698, - "c": 21 - }, - { - "w": 1452988800, - "a": 352, - "d": 176, - "c": 7 - }, - { - "w": 1453593600, - "a": 182, - "d": 153, - "c": 5 - }, - { - "w": 1454198400, - "a": 213, - "d": 107, - "c": 3 - }, - { - "w": 1454803200, - "a": 3295, - "d": 1334, - "c": 25 - }, - { - "w": 1455408000, - "a": 127, - "d": 19, - "c": 4 - }, - { - "w": 1456012800, - "a": 1197, - "d": 1212, - "c": 22 - }, - { - "w": 1456617600, - "a": 954, - "d": 512, - "c": 12 - }, - { - "w": 1457222400, - "a": 3522, - "d": 3086, - "c": 22 - }, - { - "w": 1457827200, - "a": 9110, - "d": 4283, - "c": 26 - }, - { - "w": 1458432000, - "a": 2500, - "d": 577, - "c": 18 - }, - { - "w": 1459036800, - "a": 1649, - "d": 507, - "c": 13 - }, - { - "w": 1459641600, - "a": 977, - "d": 446, - "c": 11 - }, - { - "w": 1460246400, - "a": 2869, - "d": 930, - "c": 15 - }, - { - "w": 1460851200, - "a": 2654, - "d": 1949, - "c": 17 - }, - { - "w": 1461456000, - "a": 10573, - "d": 10640, - "c": 6 - }, - { - "w": 1462060800, - "a": 683, - "d": 105, - "c": 8 - }, - { - "w": 1462665600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1463270400, - "a": 5233, - "d": 3567, - "c": 16 - }, - { - "w": 1463875200, - "a": 2124, - "d": 1754, - "c": 4 - }, - { - "w": 1464480000, - "a": 2121, - "d": 1124, - "c": 8 - }, - { - "w": 1465084800, - "a": 1128, - "d": 407, - "c": 5 - }, - { - "w": 1465689600, - "a": 2609, - "d": 2074, - "c": 10 - }, - { - "w": 1466294400, - "a": 1641, - "d": 292, - "c": 6 - }, - { - "w": 1466899200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1467504000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468108800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1468713600, - "a": 135, - "d": 69, - "c": 1 - }, - { - "w": 1469318400, - "a": 1062, - "d": 473, - "c": 8 - }, - { - "w": 1469923200, - "a": 353, - "d": 125, - "c": 5 - }, - { - "w": 1470528000, - "a": 598, - "d": 150, - "c": 5 - }, - { - "w": 1471132800, - "a": 1111, - "d": 109, - "c": 6 - }, - { - "w": 1471737600, - "a": 243, - "d": 58, - "c": 4 - }, - { - "w": 1472342400, - "a": 1682, - "d": 366, - "c": 7 - }, - { - "w": 1472947200, - "a": 1032, - "d": 362, - "c": 6 - }, - { - "w": 1473552000, - "a": 726, - "d": 319, - "c": 8 - }, - { - "w": 1474156800, - "a": 492, - "d": 113, - "c": 8 - }, - { - "w": 1474761600, - "a": 1711, - "d": 537, - "c": 5 - }, - { - "w": 1475366400, - "a": 21, - "d": 7, - "c": 2 - }, - { - "w": 1475971200, - "a": 102, - "d": 22, - "c": 3 - }, - { - "w": 1476576000, - "a": 320, - "d": 30, - "c": 7 - }, - { - "w": 1477180800, - "a": 1154, - "d": 135, - "c": 11 - }, - { - "w": 1477785600, - "a": 610, - "d": 227, - "c": 23 - }, - { - "w": 1478390400, - "a": 18652, - "d": 17591, - "c": 18 - }, - { - "w": 1478995200, - "a": 779, - "d": 444, - "c": 16 - }, - { - "w": 1479600000, - "a": 3, - "d": 3, - "c": 1 - }, - { - "w": 1480204800, - "a": 90, - "d": 36, - "c": 3 - }, - { - "w": 1480809600, - "a": 14, - "d": 3, - "c": 2 - }, - { - "w": 1481414400, - "a": 514, - "d": 245, - "c": 5 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 448, - "d": 143, - "c": 10 - }, - { - "w": 1483833600, - "a": 2248, - "d": 19, - "c": 4 - }, - { - "w": 1484438400, - "a": 4307, - "d": 571, - "c": 12 - }, - { - "w": 1485043200, - "a": 6235, - "d": 1783, - "c": 32 - }, - { - "w": 1485648000, - "a": 3330, - "d": 2557, - "c": 19 - }, - { - "w": 1486252800, - "a": 2085, - "d": 1765, - "c": 15 - }, - { - "w": 1486857600, - "a": 1244, - "d": 517, - "c": 11 - }, - { - "w": 1487462400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1488067200, - "a": 7, - "d": 1, - "c": 1 - }, - { - "w": 1488672000, - "a": 1076, - "d": 1939, - "c": 3 - }, - { - "w": 1489276800, - "a": 406, - "d": 304, - "c": 3 - }, - { - "w": 1489881600, - "a": 15, - "d": 0, - "c": 2 - }, - { - "w": 1490486400, - "a": 148, - "d": 90, - "c": 6 - }, - { - "w": 1491091200, - "a": 4162, - "d": 2001, - "c": 22 - }, - { - "w": 1491696000, - "a": 3477, - "d": 2850, - "c": 6 - }, - { - "w": 1492300800, - "a": 998, - "d": 631, - "c": 6 - }, - { - "w": 1492905600, - "a": 1949, - "d": 1544, - "c": 8 - }, - { - "w": 1493510400, - "a": 1834, - "d": 903, - "c": 16 - }, - { - "w": 1494115200, - "a": 5208, - "d": 4038, - "c": 22 - }, - { - "w": 1494720000, - "a": 1777, - "d": 465, - "c": 16 - }, - { - "w": 1495324800, - "a": 1541, - "d": 210, - "c": 11 - }, - { - "w": 1495929600, - "a": 755, - "d": 172, - "c": 4 - }, - { - "w": 1496534400, - "a": 1814, - "d": 718, - "c": 10 - }, - { - "w": 1497139200, - "a": 1519, - "d": 393, - "c": 8 - }, - { - "w": 1497744000, - "a": 2576, - "d": 419, - "c": 12 - }, - { - "w": 1498348800, - "a": 2441, - "d": 198, - "c": 7 - }, - { - "w": 1498953600, - "a": 11, - "d": 9, - "c": 2 - }, - { - "w": 1499558400, - "a": 5, - "d": 3, - "c": 1 - }, - { - "w": 1500163200, - "a": 1589, - "d": 401, - "c": 8 - }, - { - "w": 1500768000, - "a": 1270, - "d": 510, - "c": 4 - }, - { - "w": 1501372800, - "a": 496, - "d": 340, - "c": 6 - }, - { - "w": 1501977600, - "a": 509, - "d": 298, - "c": 2 - }, - { - "w": 1502582400, - "a": 668, - "d": 1015, - "c": 3 - }, - { - "w": 1503187200, - "a": 337, - "d": 116, - "c": 4 - }, - { - "w": 1503792000, - "a": 5393, - "d": 1757, - "c": 6 - }, - { - "w": 1504396800, - "a": 2520, - "d": 1167, - "c": 4 - }, - { - "w": 1505001600, - "a": 1566, - "d": 1070, - "c": 12 - }, - { - "w": 1505606400, - "a": 6444, - "d": 2876, - "c": 13 - }, - { - "w": 1506211200, - "a": 3530, - "d": 726, - "c": 13 - }, - { - "w": 1506816000, - "a": 2862, - "d": 585, - "c": 7 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 2019, - "d": 432, - "c": 6 - }, - { - "w": 1508630400, - "a": 297, - "d": 21, - "c": 3 - }, - { - "w": 1509235200, - "a": 3541, - "d": 229, - "c": 7 - }, - { - "w": 1509840000, - "a": 209, - "d": 115, - "c": 1 - }, - { - "w": 1510444800, - "a": 477, - "d": 130, - "c": 4 - }, - { - "w": 1511049600, - "a": 1280, - "d": 301, - "c": 5 - }, - { - "w": 1511654400, - "a": 679, - "d": 361, - "c": 7 - }, - { - "w": 1512259200, - "a": 3769, - "d": 3131, - "c": 7 - }, - { - "w": 1512864000, - "a": 693, - "d": 81, - "c": 7 - }, - { - "w": 1513468800, - "a": 1215, - "d": 260, - "c": 6 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 1334, - "d": 199, - "c": 18 - }, - { - "w": 1515888000, - "a": 2305, - "d": 571, - "c": 14 - }, - { - "w": 1516492800, - "a": 256, - "d": 92, - "c": 6 - }, - { - "w": 1517097600, - "a": 787, - "d": 271, - "c": 9 - }, - { - "w": 1517702400, - "a": 182, - "d": 25, - "c": 2 - }, - { - "w": 1518307200, - "a": 221, - "d": 73, - "c": 3 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 66, - "d": 9, - "c": 2 - }, - { - "w": 1520121600, - "a": 9, - "d": 3, - "c": 1 - }, - { - "w": 1520726400, - "a": 148, - "d": 51, - "c": 2 - }, - { - "w": 1521331200, - "a": 2269, - "d": 928, - "c": 10 - }, - { - "w": 1521936000, - "a": 2, - "d": 2, - "c": 1 - }, - { - "w": 1522540800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523145600, - "a": 80, - "d": 21, - "c": 4 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 266, - "d": 6, - "c": 4 - }, - { - "w": 1524960000, - "a": 389, - "d": 280, - "c": 4 - }, - { - "w": 1525564800, - "a": 349, - "d": 34, - "c": 1 - }, - { - "w": 1526169600, - "a": 80, - "d": 18, - "c": 1 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 749, - "d": 214, - "c": 5 - }, - { - "w": 1527984000, - "a": 456, - "d": 367, - "c": 7 - }, - { - "w": 1528588800, - "a": 931, - "d": 649, - "c": 4 - }, - { - "w": 1529193600, - "a": 232, - "d": 225, - "c": 1 - }, - { - "w": 1529798400, - "a": 659, - "d": 312, - "c": 6 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 263, - "d": 255, - "c": 3 - }, - { - "w": 1531612800, - "a": 41131, - "d": 41133, - "c": 3 - }, - { - "w": 1532217600, - "a": 1069, - "d": 1033, - "c": 3 - }, - { - "w": 1532822400, - "a": 11320, - "d": 4475, - "c": 7 - }, - { - "w": 1533427200, - "a": 1644, - "d": 448, - "c": 6 - }, - { - "w": 1534032000, - "a": 1355, - "d": 1191, - "c": 13 - }, - { - "w": 1534636800, - "a": 346, - "d": 225, - "c": 5 - }, - { - "w": 1535241600, - "a": 205, - "d": 107, - "c": 3 - }, - { - "w": 1535846400, - "a": 6, - "d": 6, - "c": 1 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 94, - "d": 71, - "c": 2 - }, - { - "w": 1537660800, - "a": 758, - "d": 427, - "c": 1 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 209, - "d": 133, - "c": 1 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 696, - "d": 75, - "c": 6 - }, - { - "w": 1540684800, - "a": 192, - "d": 334, - "c": 4 - }, - { - "w": 1541289600, - "a": 443, - "d": 414, - "c": 3 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 110, - "d": 45, - "c": 7 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 3056, - "d": 3056, - "c": 3 - }, - { - "w": 1545523200, - "a": 620, - "d": 163, - "c": 6 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 2, - "c": 1 - }, - { - "w": 1547337600, - "a": 2760, - "d": 1514, - "c": 6 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 245, - "d": 22, - "c": 2 - }, - { - "w": 1549152000, - "a": 253, - "d": 24, - "c": 2 - }, - { - "w": 1549756800, - "a": 249, - "d": 146, - "c": 2 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 41, - "d": 7, - "c": 1 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 11, - "d": 5, - "c": 1 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "Hixie", - "id": 551196, - "node_id": "MDQ6VXNlcjU1MTE5Ng==", - "avatar_url": "https://avatars2.githubusercontent.com/u/551196?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Hixie", - "html_url": "https://github.com/Hixie", - "followers_url": "https://api.github.com/users/Hixie/followers", - "following_url": "https://api.github.com/users/Hixie/following{/other_user}", - "gists_url": "https://api.github.com/users/Hixie/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Hixie/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Hixie/subscriptions", - "organizations_url": "https://api.github.com/users/Hixie/orgs", - "repos_url": "https://api.github.com/users/Hixie/repos", - "events_url": "https://api.github.com/users/Hixie/events{/privacy}", - "received_events_url": "https://api.github.com/users/Hixie/received_events", - "type": "User", - "site_admin": false - } - }, - { - "total": 1830, - "weeks": [ - { - "w": 1413676800, - "a": 80, - "d": 0, - "c": 1 - }, - { - "w": 1414281600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1414886400, - "a": 47, - "d": 8, - "c": 3 - }, - { - "w": 1415491200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1416096000, - "a": 26, - "d": 0, - "c": 1 - }, - { - "w": 1416700800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417305600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1417910400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1418515200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419120000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1419724800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1420329600, - "a": 8, - "d": 2, - "c": 2 - }, - { - "w": 1420934400, - "a": 109, - "d": 13, - "c": 4 - }, - { - "w": 1421539200, - "a": 10, - "d": 13, - "c": 2 - }, - { - "w": 1422144000, - "a": 5163, - "d": 5010, - "c": 6 - }, - { - "w": 1422748800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1423353600, - "a": 122, - "d": 15, - "c": 2 - }, - { - "w": 1423958400, - "a": 104, - "d": 61, - "c": 4 - }, - { - "w": 1424563200, - "a": 521, - "d": 607, - "c": 15 - }, - { - "w": 1425168000, - "a": 8398, - "d": 14677, - "c": 17 - }, - { - "w": 1425772800, - "a": 631, - "d": 1533, - "c": 14 - }, - { - "w": 1426377600, - "a": 3576, - "d": 3463, - "c": 13 - }, - { - "w": 1426982400, - "a": 63217, - "d": 37295, - "c": 15 - }, - { - "w": 1427587200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428192000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1428796800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1429401600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430006400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1430611200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431216000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1431820800, - "a": 254, - "d": 26, - "c": 10 - }, - { - "w": 1432425600, - "a": 624, - "d": 718, - "c": 6 - }, - { - "w": 1433030400, - "a": 173, - "d": 118, - "c": 10 - }, - { - "w": 1433635200, - "a": 303, - "d": 297, - "c": 16 - }, - { - "w": 1434240000, - "a": 41, - "d": 43, - "c": 6 - }, - { - "w": 1434844800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1435449600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1436054400, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1436659200, - "a": 330, - "d": 68, - "c": 2 - }, - { - "w": 1437264000, - "a": 411, - "d": 417, - "c": 32 - }, - { - "w": 1437868800, - "a": 507, - "d": 486, - "c": 28 - }, - { - "w": 1438473600, - "a": 2409, - "d": 1755, - "c": 29 - }, - { - "w": 1439078400, - "a": 890, - "d": 474, - "c": 31 - }, - { - "w": 1439683200, - "a": 4617, - "d": 3081, - "c": 43 - }, - { - "w": 1440288000, - "a": 3040, - "d": 1204, - "c": 40 - }, - { - "w": 1440892800, - "a": 17925, - "d": 16635, - "c": 30 - }, - { - "w": 1441497600, - "a": 4284, - "d": 5311, - "c": 19 - }, - { - "w": 1442102400, - "a": 3499, - "d": 2938, - "c": 35 - }, - { - "w": 1442707200, - "a": 9523, - "d": 1838, - "c": 57 - }, - { - "w": 1443312000, - "a": 9016, - "d": 18483, - "c": 31 - }, - { - "w": 1443916800, - "a": 7980, - "d": 8116, - "c": 35 - }, - { - "w": 1444521600, - "a": 7565, - "d": 7505, - "c": 33 - }, - { - "w": 1445126400, - "a": 1126, - "d": 1808, - "c": 27 - }, - { - "w": 1445731200, - "a": 2621, - "d": 3555, - "c": 28 - }, - { - "w": 1446336000, - "a": 1668, - "d": 1219, - "c": 44 - }, - { - "w": 1446940800, - "a": 744, - "d": 280, - "c": 23 - }, - { - "w": 1447545600, - "a": 1595, - "d": 903, - "c": 34 - }, - { - "w": 1448150400, - "a": 3458, - "d": 2437, - "c": 26 - }, - { - "w": 1448755200, - "a": 1246, - "d": 776, - "c": 33 - }, - { - "w": 1449360000, - "a": 1390, - "d": 586, - "c": 23 - }, - { - "w": 1449964800, - "a": 1, - "d": 0, - "c": 1 - }, - { - "w": 1450569600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1451174400, - "a": 589, - "d": 160, - "c": 5 - }, - { - "w": 1451779200, - "a": 1601, - "d": 764, - "c": 18 - }, - { - "w": 1452384000, - "a": 1843, - "d": 1517, - "c": 19 - }, - { - "w": 1452988800, - "a": 4072, - "d": 3895, - "c": 29 - }, - { - "w": 1453593600, - "a": 1206, - "d": 649, - "c": 15 - }, - { - "w": 1454198400, - "a": 1749, - "d": 1090, - "c": 16 - }, - { - "w": 1454803200, - "a": 3950, - "d": 4369, - "c": 32 - }, - { - "w": 1455408000, - "a": 1717, - "d": 1911, - "c": 25 - }, - { - "w": 1456012800, - "a": 1076, - "d": 1040, - "c": 15 - }, - { - "w": 1456617600, - "a": 1986, - "d": 1089, - "c": 24 - }, - { - "w": 1457222400, - "a": 4820, - "d": 4482, - "c": 37 - }, - { - "w": 1457827200, - "a": 448, - "d": 108, - "c": 15 - }, - { - "w": 1458432000, - "a": 404, - "d": 183, - "c": 13 - }, - { - "w": 1459036800, - "a": 1622, - "d": 762, - "c": 29 - }, - { - "w": 1459641600, - "a": 3189, - "d": 2345, - "c": 24 - }, - { - "w": 1460246400, - "a": 522, - "d": 100, - "c": 4 - }, - { - "w": 1460851200, - "a": 1131, - "d": 279, - "c": 13 - }, - { - "w": 1461456000, - "a": 5508, - "d": 4788, - "c": 28 - }, - { - "w": 1462060800, - "a": 1179, - "d": 809, - "c": 18 - }, - { - "w": 1462665600, - "a": 203, - "d": 27, - "c": 4 - }, - { - "w": 1463270400, - "a": 1562, - "d": 516, - "c": 14 - }, - { - "w": 1463875200, - "a": 1638, - "d": 608, - "c": 23 - }, - { - "w": 1464480000, - "a": 3424, - "d": 1902, - "c": 26 - }, - { - "w": 1465084800, - "a": 1648, - "d": 712, - "c": 23 - }, - { - "w": 1465689600, - "a": 888, - "d": 749, - "c": 12 - }, - { - "w": 1466294400, - "a": 1666, - "d": 408, - "c": 24 - }, - { - "w": 1466899200, - "a": 2197, - "d": 1455, - "c": 13 - }, - { - "w": 1467504000, - "a": 5269, - "d": 2969, - "c": 17 - }, - { - "w": 1468108800, - "a": 4, - "d": 3, - "c": 2 - }, - { - "w": 1468713600, - "a": 132, - "d": 41, - "c": 5 - }, - { - "w": 1469318400, - "a": 737, - "d": 346, - "c": 11 - }, - { - "w": 1469923200, - "a": 307, - "d": 188, - "c": 11 - }, - { - "w": 1470528000, - "a": 6, - "d": 6, - "c": 5 - }, - { - "w": 1471132800, - "a": 173, - "d": 3, - "c": 2 - }, - { - "w": 1471737600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1472342400, - "a": 39, - "d": 25, - "c": 1 - }, - { - "w": 1472947200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1473552000, - "a": 265, - "d": 422, - "c": 8 - }, - { - "w": 1474156800, - "a": 1538, - "d": 7145, - "c": 18 - }, - { - "w": 1474761600, - "a": 1397, - "d": 1077, - "c": 16 - }, - { - "w": 1475366400, - "a": 981, - "d": 1554, - "c": 9 - }, - { - "w": 1475971200, - "a": 1718, - "d": 1425, - "c": 26 - }, - { - "w": 1476576000, - "a": 1583, - "d": 1140, - "c": 23 - }, - { - "w": 1477180800, - "a": 143, - "d": 250, - "c": 10 - }, - { - "w": 1477785600, - "a": 201, - "d": 61, - "c": 6 - }, - { - "w": 1478390400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1478995200, - "a": 311, - "d": 56, - "c": 6 - }, - { - "w": 1479600000, - "a": 460, - "d": 243, - "c": 4 - }, - { - "w": 1480204800, - "a": 71, - "d": 62, - "c": 5 - }, - { - "w": 1480809600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1481414400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482019200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1482624000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1483228800, - "a": 1451, - "d": 3016, - "c": 14 - }, - { - "w": 1483833600, - "a": 3080, - "d": 768, - "c": 21 - }, - { - "w": 1484438400, - "a": 2482, - "d": 1620, - "c": 16 - }, - { - "w": 1485043200, - "a": 2061, - "d": 936, - "c": 13 - }, - { - "w": 1485648000, - "a": 6910, - "d": 3816, - "c": 26 - }, - { - "w": 1486252800, - "a": 4188, - "d": 5064, - "c": 28 - }, - { - "w": 1486857600, - "a": 2870, - "d": 7835, - "c": 29 - }, - { - "w": 1487462400, - "a": 2062, - "d": 1437, - "c": 16 - }, - { - "w": 1488067200, - "a": 791, - "d": 169, - "c": 9 - }, - { - "w": 1488672000, - "a": 0, - "d": 2, - "c": 1 - }, - { - "w": 1489276800, - "a": 1323, - "d": 520, - "c": 18 - }, - { - "w": 1489881600, - "a": 1408, - "d": 1155, - "c": 10 - }, - { - "w": 1490486400, - "a": 4303, - "d": 3904, - "c": 10 - }, - { - "w": 1491091200, - "a": 2275, - "d": 326, - "c": 13 - }, - { - "w": 1491696000, - "a": 37, - "d": 10, - "c": 1 - }, - { - "w": 1492300800, - "a": 406, - "d": 143, - "c": 7 - }, - { - "w": 1492905600, - "a": 3533, - "d": 1287, - "c": 7 - }, - { - "w": 1493510400, - "a": 1038, - "d": 235, - "c": 8 - }, - { - "w": 1494115200, - "a": 246, - "d": 1033, - "c": 6 - }, - { - "w": 1494720000, - "a": 171, - "d": 53, - "c": 4 - }, - { - "w": 1495324800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1495929600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1496534400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497139200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1497744000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498348800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1498953600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1499558400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500163200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1500768000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501372800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1501977600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1502582400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503187200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1503792000, - "a": 3351, - "d": 973, - "c": 14 - }, - { - "w": 1504396800, - "a": 5016, - "d": 3100, - "c": 6 - }, - { - "w": 1505001600, - "a": 53, - "d": 34, - "c": 1 - }, - { - "w": 1505606400, - "a": 995, - "d": 438, - "c": 3 - }, - { - "w": 1506211200, - "a": 43, - "d": 40, - "c": 2 - }, - { - "w": 1506816000, - "a": 2242, - "d": 1744, - "c": 5 - }, - { - "w": 1507420800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1508025600, - "a": 67, - "d": 14, - "c": 2 - }, - { - "w": 1508630400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1509235200, - "a": 62, - "d": 8, - "c": 2 - }, - { - "w": 1509840000, - "a": 9, - "d": 1, - "c": 1 - }, - { - "w": 1510444800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511049600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1511654400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512259200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1512864000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1513468800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514073600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1514678400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515283200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1515888000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1516492800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517097600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1517702400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518307200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1518912000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1519516800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520121600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1520726400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521331200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1521936000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1522540800, - "a": 5, - "d": 0, - "c": 1 - }, - { - "w": 1523145600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1523750400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524355200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1524960000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1525564800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526169600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1526774400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527379200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1527984000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1528588800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1529193600, - "a": 1, - "d": 1, - "c": 1 - }, - { - "w": 1529798400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1530403200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531008000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1531612800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532217600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1532822400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1533427200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534032000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1534636800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535241600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1535846400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1536451200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537056000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1537660800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538265600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1538870400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1539475200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540080000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1540684800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541289600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1541894400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1542499200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543104000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1543708800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544313600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1544918400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1545523200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546128000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1546732800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547337600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1547942400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1548547200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549152000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1549756800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550361600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1550966400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1551571200, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552176000, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1552780800, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553385600, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1553990400, - "a": 0, - "d": 0, - "c": 0 - }, - { - "w": 1554595200, - "a": 0, - "d": 0, - "c": 0 - } - ], - "author": { - "login": "abarth", - "id": 112007, - "node_id": "MDQ6VXNlcjExMjAwNw==", - "avatar_url": "https://avatars3.githubusercontent.com/u/112007?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/abarth", - "html_url": "https://github.com/abarth", - "followers_url": "https://api.github.com/users/abarth/followers", - "following_url": "https://api.github.com/users/abarth/following{/other_user}", - "gists_url": "https://api.github.com/users/abarth/gists{/gist_id}", - "starred_url": "https://api.github.com/users/abarth/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/abarth/subscriptions", - "organizations_url": "https://api.github.com/users/abarth/orgs", - "repos_url": "https://api.github.com/users/abarth/repos", - "events_url": "https://api.github.com/users/abarth/events{/privacy}", - "received_events_url": "https://api.github.com/users/abarth/received_events", - "type": "User", - "site_admin": false - } - } -] diff --git a/web/github_dataviz/github_data/forks.tsv b/web/github_dataviz/github_data/forks.tsv deleted file mode 100644 index f65d01de3..000000000 --- a/web/github_dataviz/github_data/forks.tsv +++ /dev/null @@ -1,175 +0,0 @@ -51 1 -54 14 -55 19 -56 11 -57 7 -58 2 -59 2 -60 4 -61 2 -62 3 -63 6 -64 2 -65 6 -66 2 -67 4 -68 5 -69 3 -70 2 -71 3 -72 3 -73 6 -75 3 -76 2 -77 6 -78 1 -79 2 -80 5 -81 4 -82 7 -83 6 -85 2 -86 1 -87 4 -88 2 -89 3 -90 1 -91 3 -92 1 -93 3 -94 4 -95 15 -96 11 -97 6 -98 1 -99 2 -100 2 -101 3 -102 2 -103 2 -104 1 -105 5 -106 6 -107 8 -108 7 -109 7 -110 4 -111 5 -112 3 -113 5 -114 2 -115 8 -116 7 -117 5 -118 5 -119 8 -120 6 -121 6 -122 5 -123 6 -124 6 -125 4 -126 5 -127 7 -128 6 -129 4 -130 4 -131 3 -132 5 -133 18 -134 9 -135 16 -136 14 -137 5 -138 6 -139 12 -140 8 -141 9 -142 9 -143 2 -144 9 -145 11 -146 7 -147 7 -148 2 -149 10 -150 13 -151 12 -152 61 -153 35 -154 15 -155 20 -156 18 -157 10 -158 8 -159 17 -160 12 -161 14 -162 21 -163 12 -164 21 -165 21 -166 10 -167 3 -171 9 -172 17 -173 14 -174 33 -175 274 -176 154 -177 111 -178 96 -179 65 -180 50 -181 65 -182 67 -183 68 -184 46 -185 87 -186 68 -187 85 -188 65 -189 73 -190 66 -191 176 -192 156 -193 109 -194 95 -195 87 -196 68 -197 98 -198 65 -199 82 -200 51 -201 68 -202 54 -203 66 -204 96 -205 62 -206 68 -207 60 -208 71 -209 74 -210 69 -211 78 -212 72 -213 66 -214 68 -215 237 -216 193 -217 117 -218 96 -219 137 -220 116 -221 133 -222 122 -223 85 -224 69 -225 115 -226 138 -227 139 -228 168 -229 145 -230 152 -231 139 -232 8 diff --git a/web/github_dataviz/github_data/pull_requests.tsv b/web/github_dataviz/github_data/pull_requests.tsv deleted file mode 100644 index 2ab33cabb..000000000 --- a/web/github_dataviz/github_data/pull_requests.tsv +++ /dev/null @@ -1,177 +0,0 @@ -54 25 -55 122 -56 146 -57 90 -58 146 -59 130 -60 103 -61 21 -62 22 -63 88 -64 108 -65 92 -66 94 -67 116 -68 174 -69 124 -70 173 -71 146 -72 179 -73 142 -74 138 -75 165 -76 160 -77 114 -78 122 -79 133 -80 124 -81 110 -82 141 -83 128 -84 119 -85 117 -86 90 -87 124 -88 71 -89 37 -90 38 -91 71 -92 92 -93 106 -94 98 -95 117 -96 90 -97 80 -98 55 -99 104 -100 131 -101 101 -102 92 -103 98 -104 137 -105 113 -106 134 -107 103 -108 105 -109 75 -110 100 -111 70 -112 47 -113 10 -115 73 -116 137 -117 78 -118 178 -119 191 -120 206 -121 205 -122 138 -123 160 -124 149 -125 167 -126 130 -127 126 -128 175 -129 87 -130 148 -131 129 -132 181 -133 194 -134 124 -135 114 -136 101 -137 107 -138 157 -139 127 -140 100 -141 39 -142 106 -143 105 -144 52 -145 77 -146 60 -147 43 -148 103 -149 127 -150 88 -151 98 -152 84 -153 104 -154 93 -155 74 -156 119 -157 72 -158 101 -159 110 -160 72 -161 95 -162 129 -163 139 -164 148 -165 105 -166 9 -167 4 -171 44 -172 160 -173 146 -174 92 -175 117 -176 156 -177 151 -178 140 -179 110 -180 48 -181 99 -182 128 -183 140 -184 149 -185 127 -186 100 -187 76 -188 131 -189 103 -190 125 -191 108 -192 120 -193 82 -194 125 -195 123 -196 166 -197 226 -198 178 -199 216 -200 148 -201 201 -202 219 -203 166 -204 157 -205 217 -206 246 -207 190 -208 221 -209 209 -210 172 -211 221 -212 183 -213 91 -214 104 -215 52 -216 165 -217 157 -218 99 -219 213 -220 246 -221 260 -222 169 -223 174 -224 199 -225 233 -226 190 -227 233 -228 181 -229 257 -230 240 -231 284 -232 214 -233 271 -234 48 diff --git a/web/github_dataviz/github_data/stars.tsv b/web/github_dataviz/github_data/stars.tsv deleted file mode 100644 index e9237339f..000000000 --- a/web/github_dataviz/github_data/stars.tsv +++ /dev/null @@ -1,206 +0,0 @@ -22 8 -23 4 -24 3 -25 2 -26 1 -27 356 -28 1108 -29 118 -30 36 -31 28 -32 19 -33 24 -34 11 -35 6 -36 20 -37 14 -38 17 -39 1 -40 3 -43 1 -44 2 -47 2 -48 1 -50 1 -51 1 -52 1 -53 5 -54 85 -55 68 -56 54 -57 116 -58 43 -59 36 -60 24 -61 25 -62 26 -63 31 -64 28 -65 23 -66 19 -67 15 -68 12 -69 22 -70 15 -71 21 -72 18 -73 19 -74 11 -75 15 -76 8 -77 7 -78 10 -79 3 -80 10 -81 9 -82 30 -83 17 -84 13 -85 12 -86 4 -87 25 -88 58 -89 7 -90 13 -91 8 -92 10 -93 11 -94 38 -95 112 -96 44 -97 22 -98 36 -99 25 -100 10 -101 32 -102 11 -103 12 -104 20 -105 107 -106 38 -107 33 -108 41 -109 21 -110 27 -111 17 -112 22 -113 10 -114 9 -115 54 -116 32 -117 35 -118 26 -119 19 -120 30 -121 83 -122 30 -123 33 -124 31 -125 28 -126 13 -127 77 -128 41 -129 27 -130 36 -131 26 -132 26 -133 248 -134 166 -135 138 -136 91 -137 63 -138 61 -139 169 -140 144 -141 69 -142 45 -143 45 -144 43 -145 59 -146 50 -147 86 -148 114 -149 96 -150 93 -151 74 -152 944 -153 352 -154 130 -155 159 -156 111 -157 105 -158 64 -159 113 -160 121 -161 150 -162 167 -163 120 -164 208 -165 151 -166 92 -167 96 -168 116 -169 108 -170 139 -171 156 -172 162 -173 108 -174 353 -175 4210 -176 2601 -177 1227 -178 798 -179 594 -180 464 -181 633 -182 514 -183 400 -184 388 -185 717 -186 644 -187 646 -188 526 -189 756 -190 457 -191 2248 -192 1649 -193 906 -194 794 -195 702 -196 591 -197 725 -198 584 -199 502 -200 477 -201 506 -202 488 -203 398 -204 738 -205 549 -206 339 -207 455 -208 398 -209 452 -210 424 -211 485 -212 415 -213 411 -214 493 -215 2359 -216 1458 -217 860 -218 764 -219 716 -220 741 -221 999 -222 904 -223 669 -224 430 -225 729 -226 793 -227 976 -228 1032 -229 973 -230 998 -231 1032 -232 87 diff --git a/web/github_dataviz/lib/catmull.dart b/web/github_dataviz/lib/catmull.dart deleted file mode 100644 index 6dc2ee9be..000000000 --- a/web/github_dataviz/lib/catmull.dart +++ /dev/null @@ -1,79 +0,0 @@ -import 'package:github_dataviz/mathutils.dart'; - -class ControlPointAndValue { - late int point; - double? value; - - ControlPointAndValue() { - value = 0; - point = 2; - } -} - -class CatmullInterpolator implements Interpolator { - List controlPoints; - - CatmullInterpolator(this.controlPoints); - - @override - double get(double v) { - for (int i = 2; i < controlPoints.length - 1; i++) { - if (controlPoints[i].x >= v) { - double t = (v - controlPoints[i - 1].x) / - (controlPoints[i].x - controlPoints[i - 1].x); - double p0 = controlPoints[i - 2].y; - double p1 = controlPoints[i - 1].y; - double p2 = controlPoints[i].y; - double p3 = controlPoints[i + 1].y; - return 0.5 * - ((2 * p1) + - (p2 - p0) * t + - (2 * p0 - 5 * p1 + 4 * p2 - p3) * t * t + - (3 * p1 - p0 - 3 * p2 + p3) * t * t * t); - } - } - // Will be unreachable if the control points were set up right - return 0; - } - - ControlPointAndValue progressiveGet(ControlPointAndValue cpv) { - double? v = cpv.value; - for (int i = cpv.point; i < controlPoints.length - 1; i++) { - if (controlPoints[i].x >= v!) { - double t = (v - controlPoints[i - 1].x) / - (controlPoints[i].x - controlPoints[i - 1].x); - double p0 = controlPoints[i - 2].y; - double p1 = controlPoints[i - 1].y; - double p2 = controlPoints[i].y; - double p3 = controlPoints[i + 1].y; - cpv.value = 0.5 * - ((2 * p1) + - (p2 - p0) * t + - (2 * p0 - 5 * p1 + 4 * p2 - p3) * t * t + - (3 * p1 - p0 - 3 * p2 + p3) * t * t * t); - cpv.point = i; - return cpv; - } - } - // Will be unreachable if the control points were set up right - return cpv; - } - - static void test() { - final controlPoints = []; - controlPoints.add(Point2D(-1, 1)); - controlPoints.add(Point2D(0, 1)); - controlPoints.add(Point2D(1, -1)); - controlPoints.add(Point2D(3, 4)); - controlPoints.add(Point2D(10, -2)); - controlPoints.add(Point2D(11, -2)); - CatmullInterpolator catmull = CatmullInterpolator(controlPoints); - print(catmull.get(0)); - print(catmull.get(1)); - print(catmull.get(2)); - print(catmull.get(5)); - print(catmull.get(7)); - print(catmull.get(8)); - print(catmull.get(10)); - } -} diff --git a/web/github_dataviz/lib/constants.dart b/web/github_dataviz/lib/constants.dart deleted file mode 100644 index dceba4e27..000000000 --- a/web/github_dataviz/lib/constants.dart +++ /dev/null @@ -1,8 +0,0 @@ -import 'package:flutter/material.dart'; - -class Constants { - static const Color backgroundColor = Color(0xFF000020); - static const Color timelineLineColor = Color(0x60FFFFFF); - static const Color milestoneColor = Color(0x40FFFFFF); - static const Color milestoneTimelineColor = Colors.white; -} diff --git a/web/github_dataviz/lib/data/contribution_data.dart b/web/github_dataviz/lib/data/contribution_data.dart deleted file mode 100644 index 9ef6abf5e..000000000 --- a/web/github_dataviz/lib/data/contribution_data.dart +++ /dev/null @@ -1,14 +0,0 @@ -class ContributionData { - int weekTime; - int add; - int delete; - int change; - - ContributionData(this.weekTime, this.add, this.delete, this.change); - - static ContributionData fromJson(Map jsonMap) { - ContributionData data = ContributionData( - jsonMap['w'], jsonMap['a'], jsonMap['d'], jsonMap['c']); - return data; - } -} diff --git a/web/github_dataviz/lib/data/data_series.dart b/web/github_dataviz/lib/data/data_series.dart deleted file mode 100644 index effdb6b91..000000000 --- a/web/github_dataviz/lib/data/data_series.dart +++ /dev/null @@ -1,6 +0,0 @@ -class DataSeries { - String label; - List series; - - DataSeries(this.label, this.series); -} diff --git a/web/github_dataviz/lib/data/stat_for_week.dart b/web/github_dataviz/lib/data/stat_for_week.dart deleted file mode 100644 index 89350d57e..000000000 --- a/web/github_dataviz/lib/data/stat_for_week.dart +++ /dev/null @@ -1,6 +0,0 @@ -class StatForWeek { - int weekIndex; - int stat; - - StatForWeek(this.weekIndex, this.stat); -} diff --git a/web/github_dataviz/lib/data/user.dart b/web/github_dataviz/lib/data/user.dart deleted file mode 100644 index 7533e51e1..000000000 --- a/web/github_dataviz/lib/data/user.dart +++ /dev/null @@ -1,12 +0,0 @@ -class User { - int id; - String username; - String avatarUrl; - - User(this.id, this.username, this.avatarUrl); - - static User fromJson(Map jsonMap) { - User user = User(jsonMap['id'], jsonMap['login'], jsonMap['avatar_url']); - return user; - } -} diff --git a/web/github_dataviz/lib/data/user_contribution.dart b/web/github_dataviz/lib/data/user_contribution.dart deleted file mode 100644 index 49611ccce..000000000 --- a/web/github_dataviz/lib/data/user_contribution.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:github_dataviz/data/contribution_data.dart'; -import 'package:github_dataviz/data/user.dart'; - -class UserContribution { - User user; - List contributions; - - UserContribution(this.user, this.contributions); - - static UserContribution fromJson(Map jsonMap) { - List contributionList = (jsonMap['weeks'] as List) - .map((e) => ContributionData.fromJson(e)) - .toList(); - var userContribution = - UserContribution(User.fromJson(jsonMap['author']), contributionList); - return userContribution; - } -} diff --git a/web/github_dataviz/lib/data/week_label.dart b/web/github_dataviz/lib/data/week_label.dart deleted file mode 100644 index 37d1baced..000000000 --- a/web/github_dataviz/lib/data/week_label.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:intl/intl.dart'; - -class WeekLabel { - int? weekNum; - String label; - - WeekLabel(this.weekNum, this.label); - - WeekLabel.forDate(DateTime date, this.label) { - int year = getYear(date); - int weekOfYearNum = getWeekNumber(date); - weekNum = 9 + ((year - 2015) * 52) + weekOfYearNum; - } - - int getYear(DateTime date) { - return int.parse(DateFormat('y').format(date)); - } - - int getWeekNumber(DateTime date) { - int dayOfYear = int.parse(DateFormat('D').format(date)); - return ((dayOfYear - date.weekday + 10) / 7).floor(); - } -} diff --git a/web/github_dataviz/lib/layered_chart.dart b/web/github_dataviz/lib/layered_chart.dart deleted file mode 100644 index ea89b4892..000000000 --- a/web/github_dataviz/lib/layered_chart.dart +++ /dev/null @@ -1,336 +0,0 @@ -import 'dart:math'; - -import 'package:flutter/material.dart'; -import 'package:github_dataviz/catmull.dart'; -import 'package:github_dataviz/constants.dart'; -import 'package:github_dataviz/data/data_series.dart'; -import 'package:github_dataviz/data/week_label.dart'; -import 'package:github_dataviz/mathutils.dart'; - -class LayeredChart extends StatefulWidget { - final List dataToPlot; - final List milestones; - final double animationValue; - - const LayeredChart(this.dataToPlot, this.milestones, this.animationValue, - {Key? key}) - : super(key: key); - - @override - State createState() { - return _LayeredChartState(); - } -} - -class _LayeredChartState extends State { - late List paths; - late List capPaths; - late List maxValues; - late double theta; - late double graphHeight; - late List labelPainter; - late List milestonePainter; - Size? lastSize; - - void buildPaths( - Size size, - List dataToPlot, - List milestones, - int numPoints, - double graphGap, - double margin, - double capTheta, - double capSize) { - double screenRatio = size.width / size.height; - double degrees = MathUtils.clampedMap(screenRatio, 0.5, 2.5, 50, 5); - theta = pi * degrees / 180; - graphHeight = MathUtils.clampedMap(screenRatio, 0.5, 2.5, 50, 150); - - int m = dataToPlot.length; - paths = []; - capPaths = []; - maxValues = []; - for (int i = 0; i < m; i++) { - int n = dataToPlot[i].series.length; - maxValues.add(0); - for (int j = 0; j < n; j++) { - double v = dataToPlot[i].series[j].toDouble(); - if (v > maxValues[i]) { - maxValues[i] = v; - } - } - } - double totalGap = m * graphGap; - double xIndent = totalGap / tan(capTheta); - double startX = margin + xIndent; - double endX = size.width - margin; - double startY = size.height; - double endY = startY - (endX - startX) * tan(theta); - double xWidth = (endX - startX) / numPoints; - double capRangeX = capSize * cos(capTheta); - double tanCapTheta = tan(capTheta); - final curvePoints = []; - for (int i = 0; i < m; i++) { - List series = dataToPlot[i].series; - int n = series.length; - final controlPoints = []; - controlPoints.add(Point2D(-1, 0)); - double last = 0; - for (int j = 0; j < n; j++) { - double v = series[j].toDouble(); - controlPoints.add(Point2D(j.toDouble(), v)); - last = v; - } - controlPoints.add(Point2D(n.toDouble(), last)); - CatmullInterpolator curve = CatmullInterpolator(controlPoints); - ControlPointAndValue cpv = ControlPointAndValue(); - for (int j = 0; j < numPoints; j++) { - cpv.value = MathUtils.map( - j.toDouble(), 0, (numPoints - 1).toDouble(), 0, (n - 1).toDouble()); - curve.progressiveGet(cpv); - curvePoints.add(MathUtils.map( - max(0, cpv.value!), 0, maxValues[i].toDouble(), 0, graphHeight)); - } - paths.add(Path()); - capPaths.add(Path()); - paths[i].moveTo(startX, startY); - capPaths[i].moveTo(startX, startY); - for (int j = 0; j < numPoints; j++) { - double v = curvePoints[j]; - int k = j + 1; - double xDist = xWidth; - double capV = v; - while (k < numPoints && xDist <= capRangeX) { - double cy = curvePoints[k] + xDist * tanCapTheta; - capV = max(capV, cy); - k++; - xDist += xWidth; - } - double x = MathUtils.map( - j.toDouble(), 0, (numPoints - 1).toDouble(), startX, endX); - double baseY = MathUtils.map( - j.toDouble(), 0, (numPoints - 1).toDouble(), startY, endY); - double y = baseY - v; - double cY = baseY - capV; - paths[i].lineTo(x, y); - if (j == 0) { - int k = capRangeX ~/ xWidth; - double mx = MathUtils.map( - -k.toDouble(), 0, (numPoints - 1).toDouble(), startX, endX); - double my = MathUtils.map( - -k.toDouble(), 0, (numPoints - 1).toDouble(), startY, endY) - - capV; - capPaths[i].lineTo(mx, my); - } - capPaths[i].lineTo(x, cY); - } - paths[i].lineTo(endX, endY); - paths[i].lineTo(endX, endY + 1); - paths[i].lineTo(startX, startY + 1); - paths[i].close(); - capPaths[i].lineTo(endX, endY); - capPaths[i].lineTo(endX, endY + 1); - capPaths[i].lineTo(startX, startY + 1); - capPaths[i].close(); - } - labelPainter = []; - for (int i = 0; i < dataToPlot.length; i++) { - TextSpan span = TextSpan( - style: const TextStyle( - color: Color.fromARGB(255, 255, 255, 255), fontSize: 12), - text: dataToPlot[i].label.toUpperCase()); - TextPainter tp = TextPainter( - text: span, - textAlign: TextAlign.left, - textDirection: TextDirection.ltr); - tp.layout(); - labelPainter.add(tp); - } - milestonePainter = []; - for (int i = 0; i < milestones.length; i++) { - TextSpan span = TextSpan( - style: const TextStyle( - color: Color.fromARGB(255, 255, 255, 255), fontSize: 10), - text: milestones[i].label.toUpperCase()); - TextPainter tp = TextPainter( - text: span, - textAlign: TextAlign.left, - textDirection: TextDirection.ltr); - tp.layout(); - milestonePainter.add(tp); - } - lastSize = Size(size.width, size.height); - } - - @override - Widget build(BuildContext context) { - return Container( - color: Constants.backgroundColor, - child: CustomPaint( - foregroundPainter: _ChartPainter(this, widget.dataToPlot, - widget.milestones, 80, 50, 50, 12, 500, widget.animationValue), - child: Container())); - } -} - -class _ChartPainter extends CustomPainter { - static List colors = [ - Colors.red[900], - const Color(0xffc4721a), - Colors.lime[900], - Colors.green[900], - Colors.blue[900], - Colors.purple[900], - ]; - static List capColors = [ - Colors.red[500], - Colors.amber[500], - Colors.lime[500], - Colors.green[500], - Colors.blue[500], - Colors.purple[500], - ]; - - List dataToPlot; - List milestones; - - double margin; - double graphGap; - late double capTheta; - double capSize; - int numPoints; - double amount = 1.0; - - late Paint pathPaint; - late Paint capPaint; - late Paint textPaint; - late Paint milestonePaint; - late Paint linePaint; - late Paint fillPaint; - - _LayeredChartState state; - - _ChartPainter( - this.state, - this.dataToPlot, - this.milestones, - this.margin, - this.graphGap, - double capDegrees, - this.capSize, - this.numPoints, - this.amount) { - capTheta = pi * capDegrees / 180; - pathPaint = Paint(); - pathPaint.style = PaintingStyle.fill; - capPaint = Paint(); - capPaint.style = PaintingStyle.fill; - textPaint = Paint(); - textPaint.color = const Color(0xFFFFFFFF); - milestonePaint = Paint(); - milestonePaint.color = Constants.milestoneColor; - milestonePaint.style = PaintingStyle.stroke; - milestonePaint.strokeWidth = 2; - linePaint = Paint(); - linePaint.style = PaintingStyle.stroke; - linePaint.strokeWidth = 0.5; - fillPaint = Paint(); - fillPaint.style = PaintingStyle.fill; - fillPaint.color = const Color(0xFF000000); - } - - @override - void paint(Canvas canvas, Size size) { - if (dataToPlot.isEmpty) { - return; - } - - if (state.lastSize == null || - size.width != state.lastSize!.width || - size.height != state.lastSize!.height) { - print('Building paths, lastsize = ${state.lastSize}'); - state.buildPaths(size, dataToPlot, milestones, numPoints, graphGap, - margin, capTheta, capSize); - } - int m = dataToPlot.length; - int numWeeks = dataToPlot[0].series.length; - // How far along to draw - double totalGap = m * graphGap; - double xIndent = totalGap / tan(capTheta); - double dx = xIndent / (m - 1); - double startX = margin + xIndent; - double endX = size.width - margin; - double startY = size.height; - double endY = startY - (endX - startX) * tan(state.theta); - // MILESTONES - { - for (int i = 0; i < milestones.length; i++) { - WeekLabel milestone = milestones[i]; - double p = (milestone.weekNum!.toDouble() / numWeeks) + (1 - amount); - if (p < 1) { - double x1 = MathUtils.map(p, 0, 1, startX, endX); - double y1 = MathUtils.map(p, 0, 1, startY, endY); - double x2 = x1 - xIndent; - double y2 = y1 - graphGap * (m - 1); - x1 += dx * 0.5; - y1 += graphGap * 0.5; - double textY = y1 + 5; - double textX = x1 + 5 * tan(capTheta); - canvas.drawLine(Offset(x1, y1), Offset(x2, y2), milestonePaint); - canvas.save(); - TextPainter tp = state.milestonePainter[i]; - canvas.translate(textX, textY); - canvas.skew(tan(capTheta * 1.0), -tan(state.theta)); - canvas.translate(-tp.width / 2, 0); - tp.paint(canvas, const Offset(0, 0)); - canvas.restore(); - } - } - } - for (int i = m - 1; i >= 0; i--) { - canvas.save(); - canvas.translate(-dx * i, -graphGap * i); - - { - // TEXT LABELS - canvas.save(); - double textPosition = 0.2; - double textX = MathUtils.map(textPosition, 0, 1, startX, endX); - double textY = MathUtils.map(textPosition, 0, 1, startY, endY) + 5; - canvas.translate(textX, textY); - TextPainter tp = state.labelPainter[i]; - canvas.skew(0, -tan(state.theta)); - canvas.drawRect( - Rect.fromLTWH(-1, -1, tp.width + 2, tp.height + 2), fillPaint); - tp.paint(canvas, const Offset(0, 0)); - canvas.restore(); - } - - linePaint.color = capColors[i]!; - canvas.drawLine(Offset(startX, startY), Offset(endX, endY), linePaint); - - Path clipPath = Path(); - clipPath.moveTo(startX - capSize, startY + 11); - clipPath.lineTo(endX, endY + 1); - clipPath.lineTo(endX, endY - state.graphHeight - capSize); - clipPath.lineTo(startX - capSize, startY - state.graphHeight - capSize); - clipPath.close(); - canvas.clipPath(clipPath); - - pathPaint.color = colors[i]!; - capPaint.color = capColors[i]!; - double offsetX = MathUtils.map(1 - amount, 0, 1, startX, endX); - double offsetY = MathUtils.map(1 - amount, 0, 1, startY, endY); - canvas.translate(offsetX - startX, offsetY - startY); - canvas.drawPath(state.capPaths[i], capPaint); - canvas.drawPath(state.paths[i], pathPaint); - - canvas.restore(); - } - } - - @override - bool shouldRepaint(CustomPainter oldDelegate) { - return true; - } -} diff --git a/web/github_dataviz/lib/main.dart b/web/github_dataviz/lib/main.dart deleted file mode 100644 index c19df527f..000000000 --- a/web/github_dataviz/lib/main.dart +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:collection'; -import 'dart:convert'; - -import 'package:http/http.dart' as http; - -import 'package:flutter/material.dart'; -import 'package:github_dataviz/constants.dart'; -import 'package:github_dataviz/data/contribution_data.dart'; -import 'package:github_dataviz/data/data_series.dart'; -import 'package:github_dataviz/data/stat_for_week.dart'; -import 'package:github_dataviz/data/user_contribution.dart'; -import 'package:github_dataviz/data/week_label.dart'; -import 'package:github_dataviz/layered_chart.dart'; -import 'package:github_dataviz/mathutils.dart'; -import 'package:github_dataviz/timeline.dart'; - -class MainLayout extends StatefulWidget { - const MainLayout({Key? key}) : super(key: key); - - @override - State createState() => _MainLayoutState(); -} - -class _MainLayoutState extends State with TickerProviderStateMixin { - AnimationController? _animation; - List? contributions; - List? starsByWeek; - List? forksByWeek; - List? pushesByWeek; - List? issueCommentsByWeek; - List? pullRequestActivityByWeek; - late List weekLabels; - - static const double earlyInterpolatorFraction = 0.8; - static final EarlyInterpolator interpolator = - EarlyInterpolator(earlyInterpolatorFraction); - double animationValue = 1.0; - double interpolatedAnimationValue = 1.0; - bool timelineOverride = false; - - @override - void initState() { - super.initState(); - - createAnimation(0); - - weekLabels = []; - weekLabels.add(WeekLabel.forDate(DateTime(2019, 2, 26), 'v1.2')); - weekLabels.add(WeekLabel.forDate(DateTime(2018, 12, 4), 'v1.0')); -// weekLabels.add(WeekLabel.forDate(new DateTime(2018, 9, 19), "Preview 2")); - weekLabels.add(WeekLabel.forDate(DateTime(2018, 6, 21), 'Preview 1')); -// weekLabels.add(WeekLabel.forDate(new DateTime(2018, 5, 7), "Beta 3")); - weekLabels.add(WeekLabel.forDate(DateTime(2018, 2, 27), 'Beta 1')); - weekLabels.add(WeekLabel.forDate(DateTime(2017, 5, 1), 'Alpha')); - weekLabels.add(WeekLabel(48, 'Repo Made Public')); - - loadGitHubData(); - } - - void createAnimation(double startValue) { - _animation?.dispose(); - _animation = AnimationController( - value: startValue, - duration: const Duration(milliseconds: 14400), - vsync: this, - )..repeat(); - _animation!.addListener(() { - setState(() { - if (!timelineOverride) { - animationValue = _animation!.value; - interpolatedAnimationValue = interpolator.get(animationValue); - } - }); - }); - } - - @override - Widget build(BuildContext context) { - // Combined contributions data - List dataToPlot = []; - if (contributions != null) { - List series = []; - for (UserContribution userContrib in contributions!) { - for (int i = 0; i < userContrib.contributions.length; i++) { - ContributionData data = userContrib.contributions[i]; - if (series.length > i) { - series[i] = series[i] + data.add; - } else { - series.add(data.add); - } - } - } - dataToPlot.add(DataSeries('Added Lines', series)); - } - - if (starsByWeek != null) { - dataToPlot - .add(DataSeries('Stars', starsByWeek!.map((e) => e.stat).toList())); - } - - if (forksByWeek != null) { - dataToPlot - .add(DataSeries('Forks', forksByWeek!.map((e) => e.stat).toList())); - } - - if (pushesByWeek != null) { - dataToPlot - .add(DataSeries('Pushes', pushesByWeek!.map((e) => e.stat).toList())); - } - - if (issueCommentsByWeek != null) { - dataToPlot.add(DataSeries( - 'Issue Comments', issueCommentsByWeek!.map((e) => e.stat).toList())); - } - - if (pullRequestActivityByWeek != null) { - dataToPlot.add(DataSeries('Pull Request Activity', - pullRequestActivityByWeek!.map((e) => e.stat).toList())); - } - - LayeredChart layeredChart = - LayeredChart(dataToPlot, weekLabels, interpolatedAnimationValue); - - const double timelinePadding = 60.0; - - var timeline = Timeline( - numWeeks: dataToPlot.isNotEmpty ? dataToPlot.last.series.length : 0, - animationValue: interpolatedAnimationValue, - weekLabels: weekLabels, - mouseDownCallback: (double xFraction) { - setState(() { - timelineOverride = true; - _animation?.stop(); - interpolatedAnimationValue = xFraction; - }); - }, - mouseMoveCallback: (double xFraction) { - setState(() { - interpolatedAnimationValue = xFraction; - }); - }, - mouseUpCallback: () { - setState(() { - timelineOverride = false; - createAnimation( - interpolatedAnimationValue * earlyInterpolatorFraction); - }); - }, - ); - - Column mainColumn = Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Expanded(child: layeredChart), - Padding( - padding: const EdgeInsets.only( - left: timelinePadding, - right: timelinePadding, - bottom: timelinePadding), - child: timeline, - ), - ], - ); - - return Container( - color: Constants.backgroundColor, - child: - Directionality(textDirection: TextDirection.ltr, child: mainColumn), - ); - } - - @override - void dispose() { - _animation?.dispose(); - super.dispose(); - } - - Future loadGitHubData() async { - String contributorsJsonStr = - (await http.get(Uri.parse('assets/github_data/contributors.json'))) - .body; - List jsonObjs = jsonDecode(contributorsJsonStr) as List; - List contributionList = - jsonObjs.map((e) => UserContribution.fromJson(e)).toList(); - print( - 'Loaded ${contributionList.length} code contributions to /flutter/flutter repo.'); - - int numWeeksTotal = contributionList[0].contributions.length; - - String starsByWeekStr = - (await http.get(Uri.parse('assets/github_data/stars.tsv'))).body; - List starsByWeekLoaded = - summarizeWeeksFromTSV(starsByWeekStr, numWeeksTotal); - - String forksByWeekStr = - (await http.get(Uri.parse('assets/github_data/forks.tsv'))).body; - List forksByWeekLoaded = - summarizeWeeksFromTSV(forksByWeekStr, numWeeksTotal); - - String commitsByWeekStr = - (await http.get(Uri.parse('assets/github_data/commits.tsv'))).body; - List commitsByWeekLoaded = - summarizeWeeksFromTSV(commitsByWeekStr, numWeeksTotal); - - String commentsByWeekStr = - (await http.get(Uri.parse('assets/github_data/comments.tsv'))).body; - List commentsByWeekLoaded = - summarizeWeeksFromTSV(commentsByWeekStr, numWeeksTotal); - - String pullRequestActivityByWeekStr = - (await http.get(Uri.parse('assets/github_data/pull_requests.tsv'))) - .body; - List pullRequestActivityByWeekLoaded = - summarizeWeeksFromTSV(pullRequestActivityByWeekStr, numWeeksTotal); - - setState(() { - contributions = contributionList; - starsByWeek = starsByWeekLoaded; - forksByWeek = forksByWeekLoaded; - pushesByWeek = commitsByWeekLoaded; - issueCommentsByWeek = commentsByWeekLoaded; - pullRequestActivityByWeek = pullRequestActivityByWeekLoaded; - }); - } - - List summarizeWeeksFromTSV( - String statByWeekStr, int numWeeksTotal) { - List loadedStats = []; - HashMap statMap = HashMap(); - statByWeekStr.split('\n').forEach((s) { - List split = s.split('\t'); - if (split.length == 2) { - int weekNum = int.parse(split[0]); - statMap[weekNum] = StatForWeek(weekNum, int.parse(split[1])); - } - }); - print('Loaded ${statMap.length} weeks.'); - - // Convert into a list by week, but fill in empty weeks with 0 - for (int i = 0; i < numWeeksTotal; i++) { - StatForWeek? starsForWeek = statMap[i]; - if (starsForWeek == null) { - loadedStats.add(StatForWeek(i, 0)); - } else { - loadedStats.add(starsForWeek); - } - } - return loadedStats; - } -} - -void main() { - runApp(const Center(child: MainLayout())); -} diff --git a/web/github_dataviz/lib/mathutils.dart b/web/github_dataviz/lib/mathutils.dart deleted file mode 100644 index 854662af1..000000000 --- a/web/github_dataviz/lib/mathutils.dart +++ /dev/null @@ -1,48 +0,0 @@ -abstract class Interpolator { - double get(double x); -} - -class EarlyInterpolator implements Interpolator { - double amount; - - EarlyInterpolator(this.amount); - - @override - double get(double x) { - if (x >= amount) { - return 1; - } else { - return MathUtils.map(x, 0, amount, 0, 1); - } - } -} - -class Point2D { - double x, y; - - Point2D(this.x, this.y); -} - -class MathUtils { - static double map(double x, double a, double b, double u, double v) { - double p = (x - a) / (b - a); - return u + p * (v - u); - } - - static double clampedMap(double x, double a, double b, double u, double v) { - if (x <= a) { - return u; - } else if (x >= b) { - return v; - } else { - double p = (x - a) / (b - a); - return u + p * (v - u); - } - } - - static double clamp(double x, double a, double b) { - if (x < a) return a; - if (x > b) return b; - return x; - } -} diff --git a/web/github_dataviz/lib/timeline.dart b/web/github_dataviz/lib/timeline.dart deleted file mode 100644 index 6562559a5..000000000 --- a/web/github_dataviz/lib/timeline.dart +++ /dev/null @@ -1,227 +0,0 @@ -import 'dart:collection'; - -import 'package:flutter/material.dart'; -import 'package:github_dataviz/constants.dart'; -import 'package:github_dataviz/data/week_label.dart'; -import 'package:github_dataviz/mathutils.dart'; - -typedef MouseDownCallback = void Function(double xFraction); -typedef MouseMoveCallback = void Function(double xFraction); -typedef MouseUpCallback = void Function(); - -class Timeline extends StatefulWidget { - final int numWeeks; - final double animationValue; - final List weekLabels; - - final MouseDownCallback? mouseDownCallback; - final MouseMoveCallback? mouseMoveCallback; - final MouseUpCallback? mouseUpCallback; - - const Timeline( - {required this.numWeeks, - required this.animationValue, - required this.weekLabels, - this.mouseDownCallback, - this.mouseMoveCallback, - this.mouseUpCallback, - Key? key}) - : super(key: key); - - @override - State createState() { - return _TimelineState(); - } -} - -class _TimelineState extends State { - HashMap labelPainters = HashMap(); - - @override - void initState() { - super.initState(); - for (int year = 2015; year < 2020; year++) { - String yearLabel = '$year'; - labelPainters[yearLabel] = - _makeTextPainter(Constants.timelineLineColor, yearLabel); - } - - for (var weekLabel in widget.weekLabels) { - labelPainters[weekLabel.label] = - _makeTextPainter(Constants.milestoneTimelineColor, weekLabel.label); - labelPainters['${weekLabel.label}_red'] = - _makeTextPainter(Colors.redAccent, weekLabel.label); - } - } - - @override - Widget build(BuildContext context) { - return GestureDetector( - behavior: HitTestBehavior.translucent, - onHorizontalDragDown: (DragDownDetails details) { - final mouseDownCallback = widget.mouseDownCallback; - if (mouseDownCallback != null) { - mouseDownCallback( - _getClampedXFractionLocalCoords(context, details.globalPosition)); - } - }, - onHorizontalDragEnd: (DragEndDetails details) { - final mouseUpCallback = widget.mouseUpCallback; - if (mouseUpCallback != null) { - mouseUpCallback(); - } - }, - onHorizontalDragUpdate: (DragUpdateDetails details) { - final mouseMoveCallback = widget.mouseMoveCallback; - if (mouseMoveCallback != null) { - mouseMoveCallback( - _getClampedXFractionLocalCoords(context, details.globalPosition)); - } - }, - child: CustomPaint( - foregroundPainter: _TimelinePainter( - this, widget.numWeeks, widget.animationValue, widget.weekLabels), - child: Container( - height: 200, - )), - ); - } - - TextPainter _makeTextPainter(Color color, String label) { - TextSpan span = - TextSpan(style: TextStyle(color: color, fontSize: 12), text: label); - TextPainter tp = TextPainter( - text: span, - textAlign: TextAlign.left, - textDirection: TextDirection.ltr); - tp.layout(); - return tp; - } - - double _getClampedXFractionLocalCoords( - BuildContext context, Offset globalOffset) { - final RenderBox box = context.findRenderObject() as RenderBox; - final Offset localOffset = box.globalToLocal(globalOffset); - return MathUtils.clamp(localOffset.dx / context.size!.width, 0, 1); - } -} - -class _TimelinePainter extends CustomPainter { - _TimelineState state; - - late Paint mainLinePaint; - late Paint milestoneLinePaint; - - Color lineColor = Colors.white; - - int numWeeks; - double animationValue; - int weekYearOffset = - 9; // Week 0 in our data is 9 weeks before the year boundary (i.e. week 43) - - List weekLabels; - - int yearNumber = 2015; - - _TimelinePainter( - this.state, this.numWeeks, this.animationValue, this.weekLabels) { - mainLinePaint = Paint(); - mainLinePaint.style = PaintingStyle.stroke; - mainLinePaint.color = Constants.timelineLineColor; - milestoneLinePaint = Paint(); - milestoneLinePaint.style = PaintingStyle.stroke; - milestoneLinePaint.color = Constants.milestoneTimelineColor; - } - - @override - void paint(Canvas canvas, Size size) { - double labelHeight = 20; - double labelHeightDoubled = labelHeight * 2; - - double mainLineY = size.height / 2; - canvas.drawLine( - Offset(0, mainLineY), Offset(size.width, mainLineY), mainLinePaint); - - double currTimeX = size.width * animationValue; - canvas.drawLine( - Offset(currTimeX, labelHeightDoubled), - Offset(currTimeX, size.height - labelHeightDoubled), - milestoneLinePaint); - - { - for (int week = 0; week < numWeeks; week++) { - double lineHeight = size.height / 32; - bool isYear = false; - if ((week - 9) % 52 == 0) { - // Year - isYear = true; - lineHeight = size.height / 2; - } else if ((week - 1) % 4 == 0) { - // Month - lineHeight = size.height / 8; - } - - double currX = (week / numWeeks.toDouble()) * size.width; - if (lineHeight > 0) { - double margin = (size.height - lineHeight) / 2; - double currTimeXDiff = (currTimeX - currX) / size.width; - if (currTimeXDiff > 0) { - var mappedValue = - MathUtils.clampedMap(currTimeXDiff, 0, 0.025, 0, 1); - var lerpedColor = Color.lerp(Constants.milestoneTimelineColor, - Constants.timelineLineColor, mappedValue)!; - mainLinePaint.color = lerpedColor; - } else { - mainLinePaint.color = Constants.timelineLineColor; - } - canvas.drawLine(Offset(currX, margin), - Offset(currX, size.height - margin), mainLinePaint); - } - - if (isYear) { - var yearLabel = '$yearNumber'; - state.labelPainters[yearLabel]! - .paint(canvas, Offset(currX, size.height - labelHeight)); - yearNumber++; - } - } - } - - { - for (int i = 0; i < weekLabels.length; i++) { - WeekLabel weekLabel = weekLabels[i]; - double currX = (weekLabel.weekNum! / numWeeks.toDouble()) * size.width; - var timelineXDiff = (currTimeX - currX) / size.width; - double maxTimelineDiff = 0.08; - TextPainter textPainter = state.labelPainters[weekLabel.label]!; - if (timelineXDiff > 0 && - timelineXDiff < maxTimelineDiff && - animationValue < 1) { - var mappedValue = - MathUtils.clampedMap(timelineXDiff, 0, maxTimelineDiff, 0, 1); - var lerpedColor = Color.lerp( - Colors.redAccent, Constants.milestoneTimelineColor, mappedValue)!; - milestoneLinePaint.strokeWidth = - MathUtils.clampedMap(timelineXDiff, 0, maxTimelineDiff, 6, 1); - milestoneLinePaint.color = lerpedColor; - } else { - milestoneLinePaint.strokeWidth = 1; - milestoneLinePaint.color = Constants.milestoneTimelineColor; - } - - double lineHeight = size.height / 2; - double margin = (size.height - lineHeight) / 2; - canvas.drawLine(Offset(currX, margin), - Offset(currX, size.height - margin), milestoneLinePaint); - - textPainter.paint( - canvas, Offset(currX, size.height - labelHeightDoubled)); - } - } - } - - @override - bool shouldRepaint(CustomPainter oldDelegate) { - return true; - } -} diff --git a/web/github_dataviz/pubspec.yaml b/web/github_dataviz/pubspec.yaml deleted file mode 100644 index 0a5b48a99..000000000 --- a/web/github_dataviz/pubspec.yaml +++ /dev/null @@ -1,18 +0,0 @@ -name: github_dataviz - -environment: - sdk: ">=2.17.0-0 <3.0.0" - -dependencies: - flutter: - sdk: flutter - intl: ^0.17.0 - http: ^0.13.4 - -dev_dependencies: - flutter_lints: ^2.0.1 - -flutter: - assets: - - preview.png - - github_data/ diff --git a/web/github_dataviz/web/index.html b/web/github_dataviz/web/index.html deleted file mode 100644 index 1785ebb8b..000000000 --- a/web/github_dataviz/web/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/web/samples_index/lib/src/samples.yaml b/web/samples_index/lib/src/samples.yaml index f43b7286f..751a150df 100644 --- a/web/samples_index/lib/src/samples.yaml +++ b/web/samples_index/lib/src/samples.yaml @@ -617,23 +617,6 @@ samples: type: demo web: web/game_template - - name: GitHub Dataviz - author: Larva Labs - screenshots: - - url: images/github_dataviz1.png - alt: GitHub Dataviz screenshot - source: https://github.com/flutter/samples/tree/main/web/github_dataviz - description: > - A visualization for Flutter repository data - difficulty: intermediate - widgets: [] - packages: [] - platforms: ['web'] - links: [] - tags: ['demo', 'data', 'visualization'] - web: web/github_dataviz - type: demo - - name: Dice author: Jaime Blasco screenshots: From ddd2ede915b2cd035e158ead5822e9f92bfb7ae4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Dec 2022 01:39:03 -0600 Subject: [PATCH 049/134] Bump github/codeql-action from 2.1.33 to 2.1.35 (#1512) --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index ee6d1771d..afe81a817 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@678fc3afe258fb2e0cdc165ccf77b85719de7b3c + uses: github/codeql-action/upload-sarif@b2a92eb56d8cb930006a1c6ed86b0782dd8a4297 with: sarif_file: results.sarif From 56fa9f93e3d723f00e4b1c54f2be68859d7407f0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Dec 2022 01:39:31 -0600 Subject: [PATCH 050/134] Bump actions/setup-java from 3.6.0 to 3.7.0 (#1513) --- .github/workflows/beta.yml | 6 +++--- .github/workflows/main.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index 95f364532..50724b321 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -27,7 +27,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc + - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d with: distribution: 'zulu' java-version: '12.x' @@ -42,7 +42,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc + - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d with: distribution: 'zulu' java-version: '12.x' @@ -57,7 +57,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc + - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d with: distribution: 'zulu' java-version: '12.x' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d4df2388d..6d23d72c6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc + - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d with: distribution: 'zulu' java-version: '12.x' @@ -41,7 +41,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc + - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d with: distribution: 'zulu' java-version: '12.x' @@ -54,7 +54,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc + - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d with: distribution: 'zulu' java-version: '12.x' From a94e5e88a2ea00d1ad4c0b191073f4f3bbdfabbd Mon Sep 17 00:00:00 2001 From: Filip Hracek Date: Sat, 3 Dec 2022 23:06:49 +0100 Subject: [PATCH 051/134] Fix go_router navigation (#1515) --- .../lib/src/level_selection/level_selection_screen.dart | 2 +- game_template/lib/src/main_menu/main_menu_screen.dart | 2 +- game_template/lib/src/play_session/play_session_screen.dart | 2 +- game_template/lib/src/win_game/win_game_screen.dart | 2 +- game_template/pubspec.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/game_template/lib/src/level_selection/level_selection_screen.dart b/game_template/lib/src/level_selection/level_selection_screen.dart index 1a9a7076e..ec1ace081 100644 --- a/game_template/lib/src/level_selection/level_selection_screen.dart +++ b/game_template/lib/src/level_selection/level_selection_screen.dart @@ -61,7 +61,7 @@ class LevelSelectionScreen extends StatelessWidget { ), rectangularMenuArea: ElevatedButton( onPressed: () { - GoRouter.of(context).pop(); + GoRouter.of(context).go('/'); }, child: const Text('Back'), ), diff --git a/game_template/lib/src/main_menu/main_menu_screen.dart b/game_template/lib/src/main_menu/main_menu_screen.dart index a8ab0edaf..aef2c6774 100644 --- a/game_template/lib/src/main_menu/main_menu_screen.dart +++ b/game_template/lib/src/main_menu/main_menu_screen.dart @@ -71,7 +71,7 @@ class MainMenuScreen extends StatelessWidget { _gap, ], ElevatedButton( - onPressed: () => GoRouter.of(context).go('/settings'), + onPressed: () => GoRouter.of(context).push('/settings'), child: const Text('Settings'), ), _gap, diff --git a/game_template/lib/src/play_session/play_session_screen.dart b/game_template/lib/src/play_session/play_session_screen.dart index f38163976..0b4cddad4 100644 --- a/game_template/lib/src/play_session/play_session_screen.dart +++ b/game_template/lib/src/play_session/play_session_screen.dart @@ -94,7 +94,7 @@ class _PlaySessionScreenState extends State { child: SizedBox( width: double.infinity, child: ElevatedButton( - onPressed: () => GoRouter.of(context).pop(), + onPressed: () => GoRouter.of(context).go('/play'), child: const Text('Back'), ), ), diff --git a/game_template/lib/src/win_game/win_game_screen.dart b/game_template/lib/src/win_game/win_game_screen.dart index 88a5ca2b8..b78cea05d 100644 --- a/game_template/lib/src/win_game/win_game_screen.dart +++ b/game_template/lib/src/win_game/win_game_screen.dart @@ -63,7 +63,7 @@ class WinGameScreen extends StatelessWidget { ), rectangularMenuArea: ElevatedButton( onPressed: () { - GoRouter.of(context).pop(); + GoRouter.of(context).go('/play'); }, child: const Text('Continue'), ), diff --git a/game_template/pubspec.yaml b/game_template/pubspec.yaml index 8227b2138..703256398 100644 --- a/game_template/pubspec.yaml +++ b/game_template/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: audioplayers: ^1.1.0 cupertino_icons: ^1.0.2 - go_router: ^5.0.5 + go_router: ^5.2.1 logging: ^1.1.0 provider: ^6.0.2 shared_preferences: ^2.0.13 From fa1071fbadddcee46984ae5fa364bb4fe977965d Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Tue, 6 Dec 2022 10:52:22 +1000 Subject: [PATCH 052/134] Add API key requirement to Photo Search top level (#1506) --- desktop_photo_search/README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/desktop_photo_search/README.md b/desktop_photo_search/README.md index 772c0dda2..9825d37ee 100644 --- a/desktop_photo_search/README.md +++ b/desktop_photo_search/README.md @@ -1,8 +1,15 @@ # Photo Search app +This desktop application enables you to search +[Unsplash](https://unsplash.com/) for photographs that interest you. +To use it, you need to add an **Access Key** from +[Unsplash API](https://unsplash.com/developers) to +`lib/unsplash_access_key.dart`. + This is the Photo Search app, built out with two different widget sets: - - [Material](material) shows the Photo Search app built with Material widgets + - [Material](material) shows the Photo Search app built with [Material widgets][] - [Fluent UI](fluent_ui) shows the Photo Search app built with [Fluent UI][] widgets -[Fluent UI]: https://pub.dev/packages/fluent_ui \ No newline at end of file +[Fluent UI]: https://pub.dev/packages/fluent_ui +[Material widgets]: https://docs.flutter.dev/development/ui/widgets/material From ea1ad9d043e3446021cd7a17fac6938fb54fb8f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Dec 2022 22:18:09 +1000 Subject: [PATCH 053/134] Bump actions/setup-java (#1516) --- .github/workflows/beta.yml | 6 +++--- .github/workflows/main.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index 50724b321..410079c21 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -27,7 +27,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d + - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' java-version: '12.x' @@ -42,7 +42,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d + - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' java-version: '12.x' @@ -57,7 +57,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d + - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' java-version: '12.x' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6d23d72c6..054467dfb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d + - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' java-version: '12.x' @@ -41,7 +41,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d + - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' java-version: '12.x' @@ -54,7 +54,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d + - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' java-version: '12.x' From 1463a967f69e681055bd07e99cbb327c6c7f7d6f Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Wed, 7 Dec 2022 18:59:46 -0600 Subject: [PATCH 054/134] Implement case insensitive search in the samples index (#1518) Closes #1517 --- web/samples_index/lib/src/samples.yaml | 4 ++-- web/samples_index/lib/src/search.dart | 7 +++++-- web/samples_index/test/samples_index_test.dart | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/web/samples_index/lib/src/samples.yaml b/web/samples_index/lib/src/samples.yaml index 751a150df..96ce47ff4 100644 --- a/web/samples_index/lib/src/samples.yaml +++ b/web/samples_index/lib/src/samples.yaml @@ -11,7 +11,7 @@ samples: - url: images/gallery4.png alt: Crane app screenshot - url: images/gallery5.png - alt: Shrine app screnshot + alt: Shrine app screenshot source: https://github.com/flutter/gallery web: https://gallery.flutter.dev description: > @@ -416,7 +416,7 @@ samples: - url: images/web_dashboard1.png alt: Web Dashboard screenshot - url: images/web_dashboard2.png - alt: Web Dashbaord screenshot + alt: Web Dashboard screenshot - url: images/web_dashboard3.png alt: Web Dashboard screenshot source: https://github.com/flutter/samples/tree/main/experimental/web_dashboard diff --git a/web/samples_index/lib/src/search.dart b/web/samples_index/lib/src/search.dart index eb9b06c55..c8d00c510 100644 --- a/web/samples_index/lib/src/search.dart +++ b/web/samples_index/lib/src/search.dart @@ -6,8 +6,11 @@ bool matchesQuery(String query, String sampleAttributes) { if (query.isEmpty) { return true; } - var queryWords = query.split(' ')..removeWhere((s) => s.isEmpty); - var attributes = sampleAttributes.split(' ')..removeWhere((s) => s.isEmpty); + + var queryWords = query.toLowerCase().split(' ') + ..removeWhere((s) => s.isEmpty); + var attributes = sampleAttributes.toLowerCase().split(' ') + ..removeWhere((s) => s.isEmpty); // Test for type filter // This will check whether a type parameter is present in the diff --git a/web/samples_index/test/samples_index_test.dart b/web/samples_index/test/samples_index_test.dart index bee079409..97ee6f10c 100644 --- a/web/samples_index/test/samples_index_test.dart +++ b/web/samples_index/test/samples_index_test.dart @@ -107,7 +107,9 @@ void main() { // Test if various queries match these attributes expect(matchesQuery('foo', attributes), false); + expect(matchesQuery('Foo', attributes), false); expect(matchesQuery('kittens', attributes), true); + expect(matchesQuery('Kittens', attributes), true); expect(matchesQuery('tag:cats', attributes), true); expect(matchesQuery('tag:dogs', attributes), false); expect(matchesQuery('package:path', attributes), true); From 0b49c01cfdf2da486cf3328b93fade39bacbc5a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 9 Dec 2022 19:23:26 +1100 Subject: [PATCH 055/134] Bump github/codeql-action from 2.1.35 to 2.1.36 (#1520) --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index afe81a817..af9253010 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b2a92eb56d8cb930006a1c6ed86b0782dd8a4297 + uses: github/codeql-action/upload-sarif@a669cc5936cc5e1b6a362ec1ff9e410dc570d190 with: sarif_file: results.sarif From 8ae4a52fa7ec1f2d7ac019a755135970858ef814 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Sat, 10 Dec 2022 07:03:37 +1100 Subject: [PATCH 056/134] Dart 3 update (#1519) --- README.md | 1 + null_safety/README.md | 30 - null_safety/codelab_rebuild.yaml | 49 -- null_safety/null_safe_app/.gitignore | 46 -- null_safety/null_safe_app/.metadata | 45 -- null_safety/null_safe_app/README.md | 2 - .../null_safe_app/analysis_options.yaml | 1 - null_safety/null_safe_app/android/.gitignore | 13 - .../null_safe_app/android/app/build.gradle | 71 -- .../android/app/src/debug/AndroidManifest.xml | 8 - .../android/app/src/main/AndroidManifest.xml | 34 - .../com/example/null_safe_app/MainActivity.kt | 6 - .../res/drawable-v21/launch_background.xml | 12 - .../main/res/drawable/launch_background.xml | 12 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 0 bytes .../app/src/main/res/values-night/styles.xml | 18 - .../app/src/main/res/values/styles.xml | 18 - .../app/src/profile/AndroidManifest.xml | 8 - .../null_safe_app/android/build.gradle | 31 - .../null_safe_app/android/gradle.properties | 3 - .../gradle/wrapper/gradle-wrapper.properties | 5 - .../android/null_safe_app_android.iml | 29 - .../null_safe_app/android/settings.gradle | 11 - null_safety/null_safe_app/ios/.gitignore | 34 - .../ios/Flutter/AppFrameworkInfo.plist | 26 - .../null_safe_app/ios/Flutter/Debug.xcconfig | 2 - .../ios/Flutter/Release.xcconfig | 2 - null_safety/null_safe_app/ios/Podfile | 41 -- .../ios/Runner.xcodeproj/project.pbxproj | 531 --------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../ios/Runner/AppDelegate.swift | 13 - .../AppIcon.appiconset/Contents.json | 122 ---- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 0 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 0 bytes .../LaunchImage.imageset/Contents.json | 23 - .../LaunchImage.imageset/LaunchImage.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/README.md | 5 - .../Runner/Base.lproj/LaunchScreen.storyboard | 37 - .../ios/Runner/Base.lproj/Main.storyboard | 26 - .../null_safe_app/ios/Runner/Info.plist | 51 -- .../ios/Runner/Runner-Bridging-Header.h | 1 - null_safety/null_safe_app/lib/badapp.dart | 40 -- null_safety/null_safe_app/lib/goodapp.dart | 56 -- null_safety/null_safe_app/lib/main.dart | 27 - null_safety/null_safe_app/lib/services.dart | 34 - null_safety/null_safe_app/linux/.gitignore | 1 - .../null_safe_app/linux/CMakeLists.txt | 138 ---- .../linux/flutter/CMakeLists.txt | 88 --- .../flutter/generated_plugin_registrant.cc | 15 - .../flutter/generated_plugin_registrant.h | 15 - .../linux/flutter/generated_plugins.cmake | 24 - null_safety/null_safe_app/linux/main.cc | 6 - .../null_safe_app/linux/my_application.cc | 104 --- .../null_safe_app/linux/my_application.h | 18 - null_safety/null_safe_app/macos/.gitignore | 7 - .../macos/Flutter/Flutter-Debug.xcconfig | 2 - .../macos/Flutter/Flutter-Release.xcconfig | 2 - .../Flutter/GeneratedPluginRegistrant.swift | 12 - null_safety/null_safe_app/macos/Podfile | 40 -- .../macos/Runner.xcodeproj/project.pbxproj | 632 ------------------ .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../macos/Runner/AppDelegate.swift | 9 - .../AppIcon.appiconset/Contents.json | 68 -- .../AppIcon.appiconset/app_icon_1024.png | Bin 102994 -> 0 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 5680 -> 0 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 520 -> 0 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 14142 -> 0 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 1066 -> 0 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 36406 -> 0 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 2218 -> 0 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 ---------- .../macos/Runner/Configs/AppInfo.xcconfig | 14 - .../macos/Runner/Configs/Debug.xcconfig | 2 - .../macos/Runner/Configs/Release.xcconfig | 2 - .../macos/Runner/Configs/Warnings.xcconfig | 13 - .../macos/Runner/DebugProfile.entitlements | 12 - .../null_safe_app/macos/Runner/Info.plist | 32 - .../macos/Runner/MainFlutterWindow.swift | 15 - .../macos/Runner/Release.entitlements | 8 - null_safety/null_safe_app/pubspec.yaml | 24 - .../null_safe_app/test/widget_test.dart | 14 - null_safety/null_safe_app/web/favicon.png | Bin 917 -> 0 bytes .../null_safe_app/web/icons/Icon-192.png | Bin 5292 -> 0 bytes .../null_safe_app/web/icons/Icon-512.png | Bin 8252 -> 0 bytes .../web/icons/Icon-maskable-192.png | Bin 5594 -> 0 bytes .../web/icons/Icon-maskable-512.png | Bin 20998 -> 0 bytes null_safety/null_safe_app/web/index.html | 58 -- null_safety/null_safe_app/web/manifest.json | 35 - null_safety/null_safe_app/windows/.gitignore | 17 - .../null_safe_app/windows/CMakeLists.txt | 101 --- .../windows/flutter/CMakeLists.txt | 104 --- .../flutter/generated_plugin_registrant.cc | 14 - .../flutter/generated_plugin_registrant.h | 15 - .../windows/flutter/generated_plugins.cmake | 24 - .../windows/runner/CMakeLists.txt | 39 -- .../null_safe_app/windows/runner/Runner.rc | 121 ---- .../windows/runner/flutter_window.cpp | 61 -- .../windows/runner/flutter_window.h | 33 - .../null_safe_app/windows/runner/main.cpp | 43 -- .../null_safe_app/windows/runner/resource.h | 16 - .../windows/runner/resources/app_icon.ico | Bin 33772 -> 0 bytes .../windows/runner/runner.exe.manifest | 20 - .../null_safe_app/windows/runner/utils.cpp | 64 -- .../null_safe_app/windows/runner/utils.h | 19 - .../windows/runner/win32_window.cpp | 245 ------- .../windows/runner/win32_window.h | 98 --- null_safety/null_unsafe_app/.gitignore | 46 -- null_safety/null_unsafe_app/.metadata | 45 -- null_safety/null_unsafe_app/README.md | 2 - .../null_unsafe_app/analysis_options.yaml | 1 - .../null_unsafe_app/android/.gitignore | 13 - .../null_unsafe_app/android/app/build.gradle | 71 -- .../android/app/src/debug/AndroidManifest.xml | 8 - .../android/app/src/main/AndroidManifest.xml | 34 - .../example/null_unsafe_app/MainActivity.kt | 6 - .../res/drawable-v21/launch_background.xml | 12 - .../main/res/drawable/launch_background.xml | 12 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 0 bytes .../app/src/main/res/values-night/styles.xml | 18 - .../app/src/main/res/values/styles.xml | 18 - .../app/src/profile/AndroidManifest.xml | 8 - .../null_unsafe_app/android/build.gradle | 31 - .../null_unsafe_app/android/gradle.properties | 3 - .../gradle/wrapper/gradle-wrapper.properties | 5 - .../null_unsafe_app/android/settings.gradle | 11 - null_safety/null_unsafe_app/ios/.gitignore | 34 - .../ios/Flutter/AppFrameworkInfo.plist | 26 - .../ios/Flutter/Debug.xcconfig | 2 - .../ios/Flutter/Release.xcconfig | 2 - null_safety/null_unsafe_app/ios/Podfile | 41 -- .../ios/Runner.xcodeproj/project.pbxproj | 531 --------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../ios/Runner/AppDelegate.swift | 13 - .../AppIcon.appiconset/Contents.json | 122 ---- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 0 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 0 bytes .../LaunchImage.imageset/Contents.json | 23 - .../LaunchImage.imageset/LaunchImage.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/README.md | 5 - .../Runner/Base.lproj/LaunchScreen.storyboard | 37 - .../ios/Runner/Base.lproj/Main.storyboard | 26 - .../null_unsafe_app/ios/Runner/Info.plist | 51 -- .../ios/Runner/Runner-Bridging-Header.h | 1 - null_safety/null_unsafe_app/lib/main.dart | 88 --- null_safety/null_unsafe_app/linux/.gitignore | 1 - .../null_unsafe_app/linux/CMakeLists.txt | 138 ---- .../linux/flutter/CMakeLists.txt | 88 --- .../flutter/generated_plugin_registrant.cc | 15 - .../flutter/generated_plugin_registrant.h | 15 - .../linux/flutter/generated_plugins.cmake | 24 - null_safety/null_unsafe_app/linux/main.cc | 6 - .../null_unsafe_app/linux/my_application.cc | 104 --- .../null_unsafe_app/linux/my_application.h | 18 - null_safety/null_unsafe_app/macos/.gitignore | 7 - .../macos/Flutter/Flutter-Debug.xcconfig | 2 - .../macos/Flutter/Flutter-Release.xcconfig | 2 - .../Flutter/GeneratedPluginRegistrant.swift | 12 - null_safety/null_unsafe_app/macos/Podfile | 40 -- .../macos/Runner.xcodeproj/project.pbxproj | 632 ------------------ .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../macos/Runner/AppDelegate.swift | 9 - .../AppIcon.appiconset/Contents.json | 68 -- .../AppIcon.appiconset/app_icon_1024.png | Bin 102994 -> 0 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 5680 -> 0 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 520 -> 0 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 14142 -> 0 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 1066 -> 0 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 36406 -> 0 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 2218 -> 0 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 ---------- .../macos/Runner/Configs/AppInfo.xcconfig | 14 - .../macos/Runner/Configs/Debug.xcconfig | 2 - .../macos/Runner/Configs/Release.xcconfig | 2 - .../macos/Runner/Configs/Warnings.xcconfig | 13 - .../macos/Runner/DebugProfile.entitlements | 12 - .../null_unsafe_app/macos/Runner/Info.plist | 32 - .../macos/Runner/MainFlutterWindow.swift | 15 - .../macos/Runner/Release.entitlements | 8 - null_safety/null_unsafe_app/pubspec.yaml | 24 - .../null_unsafe_app/test/widget_test.dart | 14 - null_safety/null_unsafe_app/web/favicon.png | Bin 917 -> 0 bytes .../null_unsafe_app/web/icons/Icon-192.png | Bin 5292 -> 0 bytes .../null_unsafe_app/web/icons/Icon-512.png | Bin 8252 -> 0 bytes .../web/icons/Icon-maskable-192.png | Bin 5594 -> 0 bytes .../web/icons/Icon-maskable-512.png | Bin 20998 -> 0 bytes null_safety/null_unsafe_app/web/index.html | 58 -- null_safety/null_unsafe_app/web/manifest.json | 35 - .../null_unsafe_app/windows/.gitignore | 17 - .../null_unsafe_app/windows/CMakeLists.txt | 101 --- .../windows/flutter/CMakeLists.txt | 104 --- .../flutter/generated_plugin_registrant.cc | 14 - .../flutter/generated_plugin_registrant.h | 15 - .../windows/flutter/generated_plugins.cmake | 24 - .../windows/runner/CMakeLists.txt | 39 -- .../null_unsafe_app/windows/runner/Runner.rc | 121 ---- .../windows/runner/flutter_window.cpp | 61 -- .../windows/runner/flutter_window.h | 33 - .../null_unsafe_app/windows/runner/main.cpp | 43 -- .../null_unsafe_app/windows/runner/resource.h | 16 - .../windows/runner/resources/app_icon.ico | Bin 33772 -> 0 bytes .../windows/runner/runner.exe.manifest | 20 - .../null_unsafe_app/windows/runner/utils.cpp | 64 -- .../null_unsafe_app/windows/runner/utils.h | 19 - .../windows/runner/win32_window.cpp | 245 ------- .../windows/runner/win32_window.h | 98 --- tool/flutter_ci_script_beta.sh | 2 - tool/flutter_ci_script_master.sh | 2 - tool/flutter_ci_script_stable.sh | 2 - 264 files changed, 1 insertion(+), 8947 deletions(-) delete mode 100644 null_safety/README.md delete mode 100644 null_safety/codelab_rebuild.yaml delete mode 100644 null_safety/null_safe_app/.gitignore delete mode 100644 null_safety/null_safe_app/.metadata delete mode 100644 null_safety/null_safe_app/README.md delete mode 100644 null_safety/null_safe_app/analysis_options.yaml delete mode 100644 null_safety/null_safe_app/android/.gitignore delete mode 100644 null_safety/null_safe_app/android/app/build.gradle delete mode 100644 null_safety/null_safe_app/android/app/src/debug/AndroidManifest.xml delete mode 100644 null_safety/null_safe_app/android/app/src/main/AndroidManifest.xml delete mode 100644 null_safety/null_safe_app/android/app/src/main/kotlin/com/example/null_safe_app/MainActivity.kt delete mode 100644 null_safety/null_safe_app/android/app/src/main/res/drawable-v21/launch_background.xml delete mode 100644 null_safety/null_safe_app/android/app/src/main/res/drawable/launch_background.xml delete mode 100644 null_safety/null_safe_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 null_safety/null_safe_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 null_safety/null_safe_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 null_safety/null_safe_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 null_safety/null_safe_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 null_safety/null_safe_app/android/app/src/main/res/values-night/styles.xml delete mode 100644 null_safety/null_safe_app/android/app/src/main/res/values/styles.xml delete mode 100644 null_safety/null_safe_app/android/app/src/profile/AndroidManifest.xml delete mode 100644 null_safety/null_safe_app/android/build.gradle delete mode 100644 null_safety/null_safe_app/android/gradle.properties delete mode 100644 null_safety/null_safe_app/android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 null_safety/null_safe_app/android/null_safe_app_android.iml delete mode 100644 null_safety/null_safe_app/android/settings.gradle delete mode 100644 null_safety/null_safe_app/ios/.gitignore delete mode 100644 null_safety/null_safe_app/ios/Flutter/AppFrameworkInfo.plist delete mode 100644 null_safety/null_safe_app/ios/Flutter/Debug.xcconfig delete mode 100644 null_safety/null_safe_app/ios/Flutter/Release.xcconfig delete mode 100644 null_safety/null_safe_app/ios/Podfile delete mode 100644 null_safety/null_safe_app/ios/Runner.xcodeproj/project.pbxproj delete mode 100644 null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 null_safety/null_safe_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 null_safety/null_safe_app/ios/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 null_safety/null_safe_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 null_safety/null_safe_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 null_safety/null_safe_app/ios/Runner/AppDelegate.swift delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png delete mode 100644 null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md delete mode 100644 null_safety/null_safe_app/ios/Runner/Base.lproj/LaunchScreen.storyboard delete mode 100644 null_safety/null_safe_app/ios/Runner/Base.lproj/Main.storyboard delete mode 100644 null_safety/null_safe_app/ios/Runner/Info.plist delete mode 100644 null_safety/null_safe_app/ios/Runner/Runner-Bridging-Header.h delete mode 100644 null_safety/null_safe_app/lib/badapp.dart delete mode 100644 null_safety/null_safe_app/lib/goodapp.dart delete mode 100644 null_safety/null_safe_app/lib/main.dart delete mode 100644 null_safety/null_safe_app/lib/services.dart delete mode 100644 null_safety/null_safe_app/linux/.gitignore delete mode 100644 null_safety/null_safe_app/linux/CMakeLists.txt delete mode 100644 null_safety/null_safe_app/linux/flutter/CMakeLists.txt delete mode 100644 null_safety/null_safe_app/linux/flutter/generated_plugin_registrant.cc delete mode 100644 null_safety/null_safe_app/linux/flutter/generated_plugin_registrant.h delete mode 100644 null_safety/null_safe_app/linux/flutter/generated_plugins.cmake delete mode 100644 null_safety/null_safe_app/linux/main.cc delete mode 100644 null_safety/null_safe_app/linux/my_application.cc delete mode 100644 null_safety/null_safe_app/linux/my_application.h delete mode 100644 null_safety/null_safe_app/macos/.gitignore delete mode 100644 null_safety/null_safe_app/macos/Flutter/Flutter-Debug.xcconfig delete mode 100644 null_safety/null_safe_app/macos/Flutter/Flutter-Release.xcconfig delete mode 100644 null_safety/null_safe_app/macos/Flutter/GeneratedPluginRegistrant.swift delete mode 100644 null_safety/null_safe_app/macos/Podfile delete mode 100644 null_safety/null_safe_app/macos/Runner.xcodeproj/project.pbxproj delete mode 100644 null_safety/null_safe_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 null_safety/null_safe_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 null_safety/null_safe_app/macos/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 null_safety/null_safe_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 null_safety/null_safe_app/macos/Runner/AppDelegate.swift delete mode 100644 null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png delete mode 100644 null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png delete mode 100644 null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png delete mode 100644 null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png delete mode 100644 null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png delete mode 100644 null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png delete mode 100644 null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png delete mode 100644 null_safety/null_safe_app/macos/Runner/Base.lproj/MainMenu.xib delete mode 100644 null_safety/null_safe_app/macos/Runner/Configs/AppInfo.xcconfig delete mode 100644 null_safety/null_safe_app/macos/Runner/Configs/Debug.xcconfig delete mode 100644 null_safety/null_safe_app/macos/Runner/Configs/Release.xcconfig delete mode 100644 null_safety/null_safe_app/macos/Runner/Configs/Warnings.xcconfig delete mode 100644 null_safety/null_safe_app/macos/Runner/DebugProfile.entitlements delete mode 100644 null_safety/null_safe_app/macos/Runner/Info.plist delete mode 100644 null_safety/null_safe_app/macos/Runner/MainFlutterWindow.swift delete mode 100644 null_safety/null_safe_app/macos/Runner/Release.entitlements delete mode 100644 null_safety/null_safe_app/pubspec.yaml delete mode 100644 null_safety/null_safe_app/test/widget_test.dart delete mode 100644 null_safety/null_safe_app/web/favicon.png delete mode 100644 null_safety/null_safe_app/web/icons/Icon-192.png delete mode 100644 null_safety/null_safe_app/web/icons/Icon-512.png delete mode 100644 null_safety/null_safe_app/web/icons/Icon-maskable-192.png delete mode 100644 null_safety/null_safe_app/web/icons/Icon-maskable-512.png delete mode 100644 null_safety/null_safe_app/web/index.html delete mode 100644 null_safety/null_safe_app/web/manifest.json delete mode 100644 null_safety/null_safe_app/windows/.gitignore delete mode 100644 null_safety/null_safe_app/windows/CMakeLists.txt delete mode 100644 null_safety/null_safe_app/windows/flutter/CMakeLists.txt delete mode 100644 null_safety/null_safe_app/windows/flutter/generated_plugin_registrant.cc delete mode 100644 null_safety/null_safe_app/windows/flutter/generated_plugin_registrant.h delete mode 100644 null_safety/null_safe_app/windows/flutter/generated_plugins.cmake delete mode 100644 null_safety/null_safe_app/windows/runner/CMakeLists.txt delete mode 100644 null_safety/null_safe_app/windows/runner/Runner.rc delete mode 100644 null_safety/null_safe_app/windows/runner/flutter_window.cpp delete mode 100644 null_safety/null_safe_app/windows/runner/flutter_window.h delete mode 100644 null_safety/null_safe_app/windows/runner/main.cpp delete mode 100644 null_safety/null_safe_app/windows/runner/resource.h delete mode 100644 null_safety/null_safe_app/windows/runner/resources/app_icon.ico delete mode 100644 null_safety/null_safe_app/windows/runner/runner.exe.manifest delete mode 100644 null_safety/null_safe_app/windows/runner/utils.cpp delete mode 100644 null_safety/null_safe_app/windows/runner/utils.h delete mode 100644 null_safety/null_safe_app/windows/runner/win32_window.cpp delete mode 100644 null_safety/null_safe_app/windows/runner/win32_window.h delete mode 100644 null_safety/null_unsafe_app/.gitignore delete mode 100644 null_safety/null_unsafe_app/.metadata delete mode 100644 null_safety/null_unsafe_app/README.md delete mode 100644 null_safety/null_unsafe_app/analysis_options.yaml delete mode 100644 null_safety/null_unsafe_app/android/.gitignore delete mode 100644 null_safety/null_unsafe_app/android/app/build.gradle delete mode 100644 null_safety/null_unsafe_app/android/app/src/debug/AndroidManifest.xml delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/AndroidManifest.xml delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/kotlin/com/example/null_unsafe_app/MainActivity.kt delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/res/drawable-v21/launch_background.xml delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/res/drawable/launch_background.xml delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/res/values-night/styles.xml delete mode 100644 null_safety/null_unsafe_app/android/app/src/main/res/values/styles.xml delete mode 100644 null_safety/null_unsafe_app/android/app/src/profile/AndroidManifest.xml delete mode 100644 null_safety/null_unsafe_app/android/build.gradle delete mode 100644 null_safety/null_unsafe_app/android/gradle.properties delete mode 100644 null_safety/null_unsafe_app/android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 null_safety/null_unsafe_app/android/settings.gradle delete mode 100644 null_safety/null_unsafe_app/ios/.gitignore delete mode 100644 null_safety/null_unsafe_app/ios/Flutter/AppFrameworkInfo.plist delete mode 100644 null_safety/null_unsafe_app/ios/Flutter/Debug.xcconfig delete mode 100644 null_safety/null_unsafe_app/ios/Flutter/Release.xcconfig delete mode 100644 null_safety/null_unsafe_app/ios/Podfile delete mode 100644 null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.pbxproj delete mode 100644 null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 null_safety/null_unsafe_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 null_safety/null_unsafe_app/ios/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 null_safety/null_unsafe_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 null_safety/null_unsafe_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 null_safety/null_unsafe_app/ios/Runner/AppDelegate.swift delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Base.lproj/LaunchScreen.storyboard delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Base.lproj/Main.storyboard delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Info.plist delete mode 100644 null_safety/null_unsafe_app/ios/Runner/Runner-Bridging-Header.h delete mode 100644 null_safety/null_unsafe_app/lib/main.dart delete mode 100644 null_safety/null_unsafe_app/linux/.gitignore delete mode 100644 null_safety/null_unsafe_app/linux/CMakeLists.txt delete mode 100644 null_safety/null_unsafe_app/linux/flutter/CMakeLists.txt delete mode 100644 null_safety/null_unsafe_app/linux/flutter/generated_plugin_registrant.cc delete mode 100644 null_safety/null_unsafe_app/linux/flutter/generated_plugin_registrant.h delete mode 100644 null_safety/null_unsafe_app/linux/flutter/generated_plugins.cmake delete mode 100644 null_safety/null_unsafe_app/linux/main.cc delete mode 100644 null_safety/null_unsafe_app/linux/my_application.cc delete mode 100644 null_safety/null_unsafe_app/linux/my_application.h delete mode 100644 null_safety/null_unsafe_app/macos/.gitignore delete mode 100644 null_safety/null_unsafe_app/macos/Flutter/Flutter-Debug.xcconfig delete mode 100644 null_safety/null_unsafe_app/macos/Flutter/Flutter-Release.xcconfig delete mode 100644 null_safety/null_unsafe_app/macos/Flutter/GeneratedPluginRegistrant.swift delete mode 100644 null_safety/null_unsafe_app/macos/Podfile delete mode 100644 null_safety/null_unsafe_app/macos/Runner.xcodeproj/project.pbxproj delete mode 100644 null_safety/null_unsafe_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 null_safety/null_unsafe_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 null_safety/null_unsafe_app/macos/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 null_safety/null_unsafe_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 null_safety/null_unsafe_app/macos/Runner/AppDelegate.swift delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Base.lproj/MainMenu.xib delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Configs/AppInfo.xcconfig delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Configs/Debug.xcconfig delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Configs/Release.xcconfig delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Configs/Warnings.xcconfig delete mode 100644 null_safety/null_unsafe_app/macos/Runner/DebugProfile.entitlements delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Info.plist delete mode 100644 null_safety/null_unsafe_app/macos/Runner/MainFlutterWindow.swift delete mode 100644 null_safety/null_unsafe_app/macos/Runner/Release.entitlements delete mode 100644 null_safety/null_unsafe_app/pubspec.yaml delete mode 100644 null_safety/null_unsafe_app/test/widget_test.dart delete mode 100644 null_safety/null_unsafe_app/web/favicon.png delete mode 100644 null_safety/null_unsafe_app/web/icons/Icon-192.png delete mode 100644 null_safety/null_unsafe_app/web/icons/Icon-512.png delete mode 100644 null_safety/null_unsafe_app/web/icons/Icon-maskable-192.png delete mode 100644 null_safety/null_unsafe_app/web/icons/Icon-maskable-512.png delete mode 100644 null_safety/null_unsafe_app/web/index.html delete mode 100644 null_safety/null_unsafe_app/web/manifest.json delete mode 100644 null_safety/null_unsafe_app/windows/.gitignore delete mode 100644 null_safety/null_unsafe_app/windows/CMakeLists.txt delete mode 100644 null_safety/null_unsafe_app/windows/flutter/CMakeLists.txt delete mode 100644 null_safety/null_unsafe_app/windows/flutter/generated_plugin_registrant.cc delete mode 100644 null_safety/null_unsafe_app/windows/flutter/generated_plugin_registrant.h delete mode 100644 null_safety/null_unsafe_app/windows/flutter/generated_plugins.cmake delete mode 100644 null_safety/null_unsafe_app/windows/runner/CMakeLists.txt delete mode 100644 null_safety/null_unsafe_app/windows/runner/Runner.rc delete mode 100644 null_safety/null_unsafe_app/windows/runner/flutter_window.cpp delete mode 100644 null_safety/null_unsafe_app/windows/runner/flutter_window.h delete mode 100644 null_safety/null_unsafe_app/windows/runner/main.cpp delete mode 100644 null_safety/null_unsafe_app/windows/runner/resource.h delete mode 100644 null_safety/null_unsafe_app/windows/runner/resources/app_icon.ico delete mode 100644 null_safety/null_unsafe_app/windows/runner/runner.exe.manifest delete mode 100644 null_safety/null_unsafe_app/windows/runner/utils.cpp delete mode 100644 null_safety/null_unsafe_app/windows/runner/utils.h delete mode 100644 null_safety/null_unsafe_app/windows/runner/win32_window.cpp delete mode 100644 null_safety/null_unsafe_app/windows/runner/win32_window.h diff --git a/README.md b/README.md index f4d349869..b60ec96c0 100644 --- a/README.md +++ b/README.md @@ -43,3 +43,4 @@ techniques for one of your own apps, try one of these resources: If you run into a bug in one of the samples, please file an issue in the [`flutter/samples` issue tracker](https://github.com/flutter/samples/issues). + diff --git a/null_safety/README.md b/null_safety/README.md deleted file mode 100644 index e6cbba400..000000000 --- a/null_safety/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Null safety Flutter example - -This folder contains a demonstration of Dart's sound null -safety feature. For additional information about this feature, see -https://dart.dev/null-safety. - -The folder contains two sample Flutter apps: - - * `null_unsafe_app`: This contains a small weather app, which has three null - errors in its rendering code as a result of not using null safety. - - Try running the app (`flutter run` in a terminal, or the Run action in - VSCode/Android Studio), and see if the UI works. The null errors are - sporadic, so try hot reloading a bunch of times and experience the app - sometimes working and sometimes failing. - - * `null_safe_app`: This contains the same weather app, but this time using - null safety. There are two copies of the source code: - - `lib/badapp.dart`: This is the same source code as in the unsafe app. Try - uncommenting the two commented lines of null-unsafe code, and notice how the - Dart analyzer with null safety immediately flags the lines as unsafe. - - `lib/goodapp.dart`: This a safe version of the unsafe app, with the null - errors fixed. Read through the comments to see illustrations of how to resolve - null errors with null safety. - -## Running the example code - -This sample requires Flutter 2.0 or later. diff --git a/null_safety/codelab_rebuild.yaml b/null_safety/codelab_rebuild.yaml deleted file mode 100644 index 26a18eb7c..000000000 --- a/null_safety/codelab_rebuild.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# Run with tooling from https://github.com/flutter/codelabs/tree/main/tooling/codelab_rebuild -name: Null Safety rebuild script -steps: - - name: null_safe_app - steps: - - name: Remove runners - path: null_safe_app - rmdirs: - - android - - ios - - linux - - macos - - web - - windows - - name: Rebuild Runners - path: null_safe_app - flutter: create . - - name: Update deps - path: null_safe_app - flutter: pub upgrade --major-versions - - name: Build for macOS - path: null_safe_app - flutter: build macos - - name: Build for iOS - path: null_safe_app - flutter: build ios --simulator - - name: null_unsafe_app - steps: - - name: Remove runners - path: null_unsafe_app - rmdirs: - - android - - ios - - linux - - macos - - web - - windows - - name: Rebuild Runners - path: null_unsafe_app - flutter: create . - - name: Update deps - path: null_unsafe_app - flutter: pub upgrade --major-versions - - name: Build for macOS - path: null_unsafe_app - flutter: build macos - - name: Build for iOS - path: null_unsafe_app - flutter: build ios --simulator diff --git a/null_safety/null_safe_app/.gitignore b/null_safety/null_safe_app/.gitignore deleted file mode 100644 index 0fa6b675c..000000000 --- a/null_safety/null_safe_app/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Web related -lib/generated_plugin_registrant.dart - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/null_safety/null_safe_app/.metadata b/null_safety/null_safe_app/.metadata deleted file mode 100644 index 31b763f97..000000000 --- a/null_safety/null_safe_app/.metadata +++ /dev/null @@ -1,45 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled. - -version: - revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - channel: stable - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: android - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: ios - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: linux - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: macos - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: web - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: windows - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - # User provided section - - # List of Local paths (relative to this file) that should be - # ignored by the migrate tool. - # - # Files that are not part of the templates will be ignored by default. - unmanaged_files: - - 'lib/main.dart' - - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/null_safety/null_safe_app/README.md b/null_safety/null_safe_app/README.md deleted file mode 100644 index 662da0aa6..000000000 --- a/null_safety/null_safe_app/README.md +++ /dev/null @@ -1,2 +0,0 @@ -For instructions, please see the README.md file located in the directory above this. - diff --git a/null_safety/null_safe_app/analysis_options.yaml b/null_safety/null_safe_app/analysis_options.yaml deleted file mode 100644 index f04c6cf0f..000000000 --- a/null_safety/null_safe_app/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: ../../analysis_options.yaml diff --git a/null_safety/null_safe_app/android/.gitignore b/null_safety/null_safe_app/android/.gitignore deleted file mode 100644 index 6f568019d..000000000 --- a/null_safety/null_safe_app/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/null_safety/null_safe_app/android/app/build.gradle b/null_safety/null_safe_app/android/app/build.gradle deleted file mode 100644 index 678816c83..000000000 --- a/null_safety/null_safe_app/android/app/build.gradle +++ /dev/null @@ -1,71 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.null_safe_app" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/null_safety/null_safe_app/android/app/src/debug/AndroidManifest.xml b/null_safety/null_safe_app/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index edb2c336f..000000000 --- a/null_safety/null_safe_app/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/null_safety/null_safe_app/android/app/src/main/AndroidManifest.xml b/null_safety/null_safe_app/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 56a769b06..000000000 --- a/null_safety/null_safe_app/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - diff --git a/null_safety/null_safe_app/android/app/src/main/kotlin/com/example/null_safe_app/MainActivity.kt b/null_safety/null_safe_app/android/app/src/main/kotlin/com/example/null_safe_app/MainActivity.kt deleted file mode 100644 index 26b6f6201..000000000 --- a/null_safety/null_safe_app/android/app/src/main/kotlin/com/example/null_safe_app/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.null_safe_app - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/null_safety/null_safe_app/android/app/src/main/res/drawable-v21/launch_background.xml b/null_safety/null_safe_app/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f3f..000000000 --- a/null_safety/null_safe_app/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/null_safety/null_safe_app/android/app/src/main/res/drawable/launch_background.xml b/null_safety/null_safe_app/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f88..000000000 --- a/null_safety/null_safe_app/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/null_safety/null_safe_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/null_safety/null_safe_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/null_safety/null_safe_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/null_safety/null_safe_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/null_safety/null_safe_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/null_safety/null_safe_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/null_safety/null_safe_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/null_safety/null_safe_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eebdb28e45604e46eeda8dd24651419bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/null_safety/null_safe_app/android/app/src/main/res/values-night/styles.xml b/null_safety/null_safe_app/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be74..000000000 --- a/null_safety/null_safe_app/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/null_safety/null_safe_app/android/app/src/main/res/values/styles.xml b/null_safety/null_safe_app/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef8805..000000000 --- a/null_safety/null_safe_app/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/null_safety/null_safe_app/android/app/src/profile/AndroidManifest.xml b/null_safety/null_safe_app/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index edb2c336f..000000000 --- a/null_safety/null_safe_app/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/null_safety/null_safe_app/android/build.gradle b/null_safety/null_safe_app/android/build.gradle deleted file mode 100644 index 83ae22004..000000000 --- a/null_safety/null_safe_app/android/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -buildscript { - ext.kotlin_version = '1.6.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/null_safety/null_safe_app/android/gradle.properties b/null_safety/null_safe_app/android/gradle.properties deleted file mode 100644 index 94adc3a3f..000000000 --- a/null_safety/null_safe_app/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.useAndroidX=true -android.enableJetifier=true diff --git a/null_safety/null_safe_app/android/gradle/wrapper/gradle-wrapper.properties b/null_safety/null_safe_app/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index cb24abda1..000000000 --- a/null_safety/null_safe_app/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/null_safety/null_safe_app/android/null_safe_app_android.iml b/null_safety/null_safe_app/android/null_safe_app_android.iml deleted file mode 100644 index 18999696a..000000000 --- a/null_safety/null_safe_app/android/null_safe_app_android.iml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_safe_app/android/settings.gradle b/null_safety/null_safe_app/android/settings.gradle deleted file mode 100644 index 44e62bcf0..000000000 --- a/null_safety/null_safe_app/android/settings.gradle +++ /dev/null @@ -1,11 +0,0 @@ -include ':app' - -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() - -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } - -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/null_safety/null_safe_app/ios/.gitignore b/null_safety/null_safe_app/ios/.gitignore deleted file mode 100644 index 7a7f9873a..000000000 --- a/null_safety/null_safe_app/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/null_safety/null_safe_app/ios/Flutter/AppFrameworkInfo.plist b/null_safety/null_safe_app/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 9625e105d..000000000 --- a/null_safety/null_safe_app/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 - - diff --git a/null_safety/null_safe_app/ios/Flutter/Debug.xcconfig b/null_safety/null_safe_app/ios/Flutter/Debug.xcconfig deleted file mode 100644 index ec97fc6f3..000000000 --- a/null_safety/null_safe_app/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/null_safety/null_safe_app/ios/Flutter/Release.xcconfig b/null_safety/null_safe_app/ios/Flutter/Release.xcconfig deleted file mode 100644 index c4855bfe2..000000000 --- a/null_safety/null_safe_app/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/null_safety/null_safe_app/ios/Podfile b/null_safety/null_safe_app/ios/Podfile deleted file mode 100644 index 88359b225..000000000 --- a/null_safety/null_safe_app/ios/Podfile +++ /dev/null @@ -1,41 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '11.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/null_safety/null_safe_app/ios/Runner.xcodeproj/project.pbxproj b/null_safety/null_safe_app/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 1448b8851..000000000 --- a/null_safety/null_safe_app/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,531 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - BF62D040289FF8F4805B602C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14E1487E88BC921250912C09 /* Pods_Runner.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 14E1487E88BC921250912C09 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2010AAE4CBBE00CB839BFF7C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 328A1AA89AFDDF5149206AB6 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 34D0A5D8E8CE1E43EB4169D7 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - BF62D040289FF8F4805B602C /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 306A4EA63E49E9D3B01CBAAB /* Frameworks */ = { - isa = PBXGroup; - children = ( - 14E1487E88BC921250912C09 /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 411BA2AC00C770969A3758B7 /* Pods */ = { - isa = PBXGroup; - children = ( - 328A1AA89AFDDF5149206AB6 /* Pods-Runner.debug.xcconfig */, - 2010AAE4CBBE00CB839BFF7C /* Pods-Runner.release.xcconfig */, - 34D0A5D8E8CE1E43EB4169D7 /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - 411BA2AC00C770969A3758B7 /* Pods */, - 306A4EA63E49E9D3B01CBAAB /* Frameworks */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - E479CBF8D6BDD38CA28B75D2 /* [CP] Check Pods Manifest.lock */, - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; - E479CBF8D6BDD38CA28B75D2 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.nullSafeApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.nullSafeApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.nullSafeApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/null_safety/null_safe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/null_safety/null_safe_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/null_safety/null_safe_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index c87d15a33..000000000 --- a/null_safety/null_safe_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_safe_app/ios/Runner.xcworkspace/contents.xcworkspacedata b/null_safety/null_safe_app/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c..000000000 --- a/null_safety/null_safe_app/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/null_safety/null_safe_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/null_safety/null_safe_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/null_safety/null_safe_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/null_safety/null_safe_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/null_safety/null_safe_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/null_safety/null_safe_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/null_safety/null_safe_app/ios/Runner/AppDelegate.swift b/null_safety/null_safe_app/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4a8..000000000 --- a/null_safety/null_safe_app/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fab2..000000000 --- a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index f091b6b0bca859a3f474b03065bef75ba58a9e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index d0ef06e7edb86cdfe0d15b4b0d98334a86163658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 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 diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index c8f9ed8f5cee1c98386d13b17e89f719e83555b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3831 zcmVjJBgitF5mAp-i>4+KS_oR{|13AP->1TD4=w)g|)JHOx|a2Wk1Va z!k)vP$UcQ#mdj%wNQoaJ!w>jv_6&JPyutpQps?s5dmDQ>`%?Bvj>o<%kYG!YW6H-z zu`g$@mp`;qDR!51QaS}|ZToSuAGcJ7$2HF0z`ln4t!#Yg46>;vGG9N9{V@9z#}6v* zfP?}r6b{*-C*)(S>NECI_E~{QYzN5SXRmVnP<=gzP+_Sp(Aza_hKlZ{C1D&l*(7IKXxQC1Z9#6wx}YrGcn~g%;icdw>T0Rf^w0{ z$_wn1J+C0@!jCV<%Go5LA45e{5gY9PvZp8uM$=1}XDI+9m7!A95L>q>>oe0$nC->i zeexUIvq%Uk<-$>DiDb?!In)lAmtuMWxvWlk`2>4lNuhSsjAf2*2tjT`y;@d}($o)S zn(+W&hJ1p0xy@oxP%AM15->wPLp{H!k)BdBD$toBpJh+crWdsNV)qsHaqLg2_s|Ih z`8E9z{E3sA!}5aKu?T!#enD(wLw?IT?k-yWVHZ8Akz4k5(TZJN^zZgm&zM28sfTD2BYJ|Fde3Xzh;;S` z=GXTnY4Xc)8nYoz6&vF;P7{xRF-{|2Xs5>a5)@BrnQ}I(_x7Cgpx#5&Td^4Q9_FnQ zX5so*;#8-J8#c$OlA&JyPp$LKUhC~-e~Ij!L%uSMu!-VZG7Hx-L{m2DVR2i=GR(_% zCVD!4N`I)&Q5S`?P&fQZ=4#Dgt_v2-DzkT}K(9gF0L(owe-Id$Rc2qZVLqI_M_DyO z9@LC#U28_LU{;wGZ&))}0R2P4MhajKCd^K#D+JJ&JIXZ_p#@+7J9A&P<0kdRujtQ_ zOy>3=C$kgi6$0pW06KaLz!21oOryKM3ZUOWqppndxfH}QpgjEJ`j7Tzn5bk6K&@RA?vl##y z$?V~1E(!wB5rH`>3nc&@)|#<1dN2cMzzm=PGhQ|Yppne(C-Vlt450IXc`J4R0W@I7 zd1e5uW6juvO%ni(WX7BsKx3MLngO7rHO;^R5I~0^nE^9^E_eYLgiR9&KnJ)pBbfno zSVnW$0R+&6jOOsZ82}nJ126+c|%svPo;TeUku<2G7%?$oft zyaO;tVo}(W)VsTUhq^XmFi#2z%-W9a{7mXn{uzivYQ_d6b7VJG{77naW(vHt-uhnY zVN#d!JTqVh(7r-lhtXVU6o})aZbDt_;&wJVGl2FKYFBFpU-#9U)z#(A%=IVnqytR$SY-sO( z($oNE09{D^@OuYPz&w~?9>Fl5`g9u&ecFGhqX=^#fmR=we0CJw+5xna*@oHnkahk+ z9aWeE3v|An+O5%?4fA&$Fgu~H_YmqR!yIU!bFCk4!#pAj%(lI(A5n)n@Id#M)O9Yx zJU9oKy{sRAIV3=5>(s8n{8ryJ!;ho}%pn6hZKTKbqk=&m=f*UnK$zW3YQP*)pw$O* zIfLA^!-bmBl6%d_n$#tP8Zd_(XdA*z*WH|E_yILwjtI~;jK#v-6jMl^?<%Y%`gvpwv&cFb$||^v4D&V=aNy?NGo620jL3VZnA%s zH~I|qPzB~e(;p;b^gJr7Ure#7?8%F0m4vzzPy^^(q4q1OdthF}Fi*RmVZN1OwTsAP zn9CZP`FazX3^kG(KodIZ=Kty8DLTy--UKfa1$6XugS zk%6v$Kmxt6U!YMx0JQ)0qX*{CXwZZk$vEROidEc7=J-1;peNat!vS<3P-FT5po>iE z!l3R+<`#x|+_hw!HjQGV=8!q|76y8L7N8gP3$%0kfush|u0uU^?dKBaeRSBUpOZ0c z62;D&Mdn2}N}xHRFTRI?zRv=>=AjHgH}`2k4WK=#AHB)UFrR-J87GgX*x5fL^W2#d z=(%K8-oZfMO=i{aWRDg=FX}UubM4eotRDcn;OR#{3q=*?3mE3_oJ-~prjhxh%PgQT zyn)Qozaq0@o&|LEgS{Ind4Swsr;b`u185hZPOBLL<`d2%^Yp1?oL)=jnLi;Zo0ZDliTtQ^b5SmfIMe{T==zZkbvn$KTQGlbG8w}s@M3TZnde;1Am46P3juKb zl9GU&3F=q`>j!`?SyH#r@O59%@aMX^rx}Nxe<>NqpUp5=lX1ojGDIR*-D^SDuvCKF z?3$xG(gVUsBERef_YjPFl^rU9EtD{pt z0CXwpN7BN3!8>hajGaTVk-wl=9rxmfWtIhC{mheHgStLi^+Nz12a?4r(fz)?3A%at zMlvQmL<2-R)-@G1wJ0^zQK%mR=r4d{Y3fHp){nWXUL#|CqXl(+v+qDh>FkF9`eWrW zfr^D%LNfOcTNvtx0JXR35J0~Jpi2#P3Q&80w+nqNfc}&G0A~*)lGHKv=^FE+b(37|)zL;KLF>oiGfb(?&1 zV3XRu!Sw>@quKiab%g6jun#oZ%!>V#A%+lNc?q>6+VvyAn=kf_6z^(TZUa4Eelh{{ zqFX-#dY(EV@7l$NE&kv9u9BR8&Ojd#ZGJ6l8_BW}^r?DIS_rU2(XaGOK z225E@kH5Opf+CgD^{y29jD4gHbGf{1MD6ggQ&%>UG4WyPh5q_tb`{@_34B?xfSO*| zZv8!)q;^o-bz`MuxXk*G^}(6)ACb@=Lfs`Hxoh>`Y0NE8QRQ!*p|SH@{r8=%RKd4p z+#Ty^-0kb=-H-O`nAA3_6>2z(D=~Tbs(n8LHxD0`R0_ATFqp-SdY3(bZ3;VUM?J=O zKCNsxsgt@|&nKMC=*+ZqmLHhX1KHbAJs{nGVMs6~TiF%Q)P@>!koa$%oS zjXa=!5>P`vC-a}ln!uH1ooeI&v?=?v7?1n~P(wZ~0>xWxd_Aw;+}9#eULM7M8&E?Y zC-ZLhi3RoM92SXUb-5i-Lmt5_rfjE{6y^+24`y$1lywLyHO!)Boa7438K4#iLe?rh z2O~YGSgFUBH?og*6=r9rme=peP~ah`(8Zt7V)j5!V0KPFf_mebo3z95U8(up$-+EA^9dTRLq>Yl)YMBuch9%=e5B`Vnb>o zt03=kq;k2TgGe4|lGne&zJa~h(UGutjP_zr?a7~#b)@15XNA>Dj(m=gg2Q5V4-$)D|Q9}R#002ovPDHLkV1o7DH3k3x diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b7..000000000 --- a/null_safety/null_safe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/null_safety/null_safe_app/ios/Runner/Base.lproj/LaunchScreen.storyboard b/null_safety/null_safe_app/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c7c..000000000 --- a/null_safety/null_safe_app/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_safe_app/ios/Runner/Base.lproj/Main.storyboard b/null_safety/null_safe_app/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c28516f..000000000 --- a/null_safety/null_safe_app/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_safe_app/ios/Runner/Info.plist b/null_safety/null_safe_app/ios/Runner/Info.plist deleted file mode 100644 index 0ad89e590..000000000 --- a/null_safety/null_safe_app/ios/Runner/Info.plist +++ /dev/null @@ -1,51 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Null Safe App - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - null_safe_app - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - - diff --git a/null_safety/null_safe_app/ios/Runner/Runner-Bridging-Header.h b/null_safety/null_safe_app/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a560..000000000 --- a/null_safety/null_safe_app/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/null_safety/null_safe_app/lib/badapp.dart b/null_safety/null_safe_app/lib/badapp.dart deleted file mode 100644 index 01490c768..000000000 --- a/null_safety/null_safe_app/lib/badapp.dart +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// ignore_for_file: unused_local_variable - -import 'package:flutter/material.dart'; - -import 'services.dart'; - -// This app doesn't work correctly when the services return null. Try to -// uncomment the for-loop and appBar lines below, and note how the new null -// safety static analysis immediately flags those lines as errors. -class BadMyApp extends StatelessWidget { - const BadMyApp({super.key}); - - @override - Widget build(BuildContext context) { - final localizedAppName = Config.getAppName(); - final temperatures = WeatherService.getTemperatures(); - - var tempWidgets = [ - const Text('Temperature next 3 days:'), - // for (final t in temperatures) Text(t.round().toString()), - ]; - - return MaterialApp( - home: Scaffold( - // appBar: AppBar(title: Text(localizedAppName)), - body: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: tempWidgets, - ), - ), - ), - ); - } -} diff --git a/null_safety/null_safe_app/lib/goodapp.dart b/null_safety/null_safe_app/lib/goodapp.dart deleted file mode 100644 index 27bc5f979..000000000 --- a/null_safety/null_safe_app/lib/goodapp.dart +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; - -import 'services.dart'; - -class GoodMyApp extends StatelessWidget { - const GoodMyApp({super.key}); - - @override - Widget build(BuildContext context) { - final localizedAppName = Config.getAppName(); - final temperatures = WeatherService.getTemperatures(); - - List tempWidgets; - if (temperatures == null) { - tempWidgets = [const Text('Temperature: Failed getting forecast :-(')]; - } else { - // Null safety uses flow analysis. The code checked for null in the branch - // above, so in this branch it known that temperatures cannot be null. - // Notice how we access temperatures without getting an analysis error. - tempWidgets = [ - const Text('Temperature next 3 days:'), - for (final t in temperatures) - // We first use the conditional member access operator to only call - // round() and toString() if t isn't null. We then test if that - // succeeded, and if not use a null conditional operator to supply a - // value handling the error case. - Text(t?.round().toString() ?? 'no forecast'), - ]; - } - - return MaterialApp( - home: Scaffold( - // Here we again use the null conditional operator. - appBar: AppBar(title: Text(localizedAppName ?? 'Weather')), - body: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - // Notice how we're *not* getting an error saying that `tempWidgets` - // is null here despite tempWidgets being declared in line 9 without - // an initial value. This is because of null safety's definite - // assignment feature: We know that in all branches of the code - // (both the if- and else- branches above), the variable was - // assigned a value, and thus isn't null. Try removing the assigment - // from the if-branch and notice the immediate error. - children: tempWidgets, - ), - ), - ), - ); - } -} diff --git a/null_safety/null_safe_app/lib/main.dart b/null_safety/null_safe_app/lib/main.dart deleted file mode 100644 index a0bed71e1..000000000 --- a/null_safety/null_safe_app/lib/main.dart +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:window_size/window_size.dart'; - -import 'goodapp.dart'; - -void main() { - setupWindow(); - runApp(const GoodMyApp()); -} - -const double windowWidth = 400; -const double windowHeight = 400; - -void setupWindow() { - if (!kIsWeb && (Platform.isWindows || Platform.isLinux || Platform.isMacOS)) { - WidgetsFlutterBinding.ensureInitialized(); - setWindowTitle('Weather'); - setWindowMinSize(const Size(windowWidth, windowHeight)); - } -} diff --git a/null_safety/null_safe_app/lib/services.dart b/null_safety/null_safe_app/lib/services.dart deleted file mode 100644 index 6a6e17b4b..000000000 --- a/null_safety/null_safe_app/lib/services.dart +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -class Config { - static String? getAppName() { - // Imagine this looks up a localized version of the app name. We're using - // the current time to simulate a variance in responses. - if (DateTime.now().second.isEven) { - return 'Weather forecast'; - } else { - // Oops, we don't have a localization. - return null; - } - } -} - -class WeatherService { - static List? getTemperatures() { - // Imagine this makes a network call to get the current temperature. - // We're using the current time to simulate a variance in responses. - if (DateTime.now().millisecond.isEven) { - return [32.2, 34.5, 31.0]; - } else { - if ((DateTime.now().second / 10).round().isEven) { - // Oops, we couldn't get any temperatures. - return null; - } else { - // Oops, we couldn't get one of the temperatures. - return [32.2, 34.5, null, 31.0]; - } - } - } -} diff --git a/null_safety/null_safe_app/linux/.gitignore b/null_safety/null_safe_app/linux/.gitignore deleted file mode 100644 index d3896c984..000000000 --- a/null_safety/null_safe_app/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/null_safety/null_safe_app/linux/CMakeLists.txt b/null_safety/null_safe_app/linux/CMakeLists.txt deleted file mode 100644 index d97019681..000000000 --- a/null_safety/null_safe_app/linux/CMakeLists.txt +++ /dev/null @@ -1,138 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.10) -project(runner LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "null_safe_app") -# The unique GTK application identifier for this application. See: -# https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.null_safe_app") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Load bundled libraries from the lib/ directory relative to the binary. -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Root filesystem for cross-building. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# Define build configuration options. -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -endif() - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_14) - target_compile_options(${TARGET} PRIVATE -Wall -Werror) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# Define the application target. To change its name, change BINARY_NAME above, -# not the value here, or `flutter run` will no longer work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add dependency libraries. Add any application-specific dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) - -# Only the install-generated bundle's copy of the executable will launch -# correctly, since the resources must in the right relative locations. To avoid -# people trying to run the unbundled copy, put it in a subdirectory instead of -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) - install(FILES "${bundled_library}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endforeach(bundled_library) - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") - install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() diff --git a/null_safety/null_safe_app/linux/flutter/CMakeLists.txt b/null_safety/null_safe_app/linux/flutter/CMakeLists.txt deleted file mode 100644 index d5bd01648..000000000 --- a/null_safety/null_safe_app/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.10) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. - -# Serves the same purpose as list(TRANSFORM ... PREPEND ...), -# which isn't available in 3.10. -function(list_prepend LIST_NAME PREFIX) - set(NEW_LIST "") - foreach(element ${${LIST_NAME}}) - list(APPEND NEW_LIST "${PREFIX}${element}") - endforeach(element) - set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) -endfunction() - -# === Flutter Library === -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) -pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) - -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "fl_basic_message_channel.h" - "fl_binary_codec.h" - "fl_binary_messenger.h" - "fl_dart_project.h" - "fl_engine.h" - "fl_json_message_codec.h" - "fl_json_method_codec.h" - "fl_message_codec.h" - "fl_method_call.h" - "fl_method_channel.h" - "fl_method_codec.h" - "fl_method_response.h" - "fl_plugin_registrar.h" - "fl_plugin_registry.h" - "fl_standard_message_codec.h" - "fl_standard_method_codec.h" - "fl_string_codec.h" - "fl_value.h" - "fl_view.h" - "flutter_linux.h" -) -list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") -target_link_libraries(flutter INTERFACE - PkgConfig::GTK - PkgConfig::GLIB - PkgConfig::GIO -) -add_dependencies(flutter flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CMAKE_CURRENT_BINARY_DIR}/_phony_ - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" - ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} -) diff --git a/null_safety/null_safe_app/linux/flutter/generated_plugin_registrant.cc b/null_safety/null_safe_app/linux/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 9f8c70320..000000000 --- a/null_safety/null_safe_app/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void fl_register_plugins(FlPluginRegistry* registry) { - g_autoptr(FlPluginRegistrar) window_size_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "WindowSizePlugin"); - window_size_plugin_register_with_registrar(window_size_registrar); -} diff --git a/null_safety/null_safe_app/linux/flutter/generated_plugin_registrant.h b/null_safety/null_safe_app/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47bc..000000000 --- a/null_safety/null_safe_app/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/null_safety/null_safe_app/linux/flutter/generated_plugins.cmake b/null_safety/null_safe_app/linux/flutter/generated_plugins.cmake deleted file mode 100644 index 12c7443ed..000000000 --- a/null_safety/null_safe_app/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - window_size -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/null_safety/null_safe_app/linux/main.cc b/null_safety/null_safe_app/linux/main.cc deleted file mode 100644 index e7c5c5437..000000000 --- a/null_safety/null_safe_app/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/null_safety/null_safe_app/linux/my_application.cc b/null_safety/null_safe_app/linux/my_application.cc deleted file mode 100644 index 632926894..000000000 --- a/null_safety/null_safe_app/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#endif - -#include "flutter/generated_plugin_registrant.h" - -struct _MyApplication { - GtkApplication parent_instance; - char** dart_entrypoint_arguments; -}; - -G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) - -// Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = - GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "null_safe_app"); - gtk_header_bar_set_show_close_button(header_bar, TRUE); - gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { - gtk_window_set_title(window, "null_safe_app"); - } - - gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); - - g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - - FlView* view = fl_view_new(project); - gtk_widget_show(GTK_WIDGET(view)); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); - - fl_register_plugins(FL_PLUGIN_REGISTRY(view)); - - gtk_widget_grab_focus(GTK_WIDGET(view)); -} - -// Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); - // Strip out the first argument as it is the binary name. - self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); - - g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; - } - - g_application_activate(application); - *exit_status = 0; - - return TRUE; -} - -// Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); - g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); - G_OBJECT_CLASS(my_application_parent_class)->dispose(object); -} - -static void my_application_class_init(MyApplicationClass* klass) { - G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; - G_OBJECT_CLASS(klass)->dispose = my_application_dispose; -} - -static void my_application_init(MyApplication* self) {} - -MyApplication* my_application_new() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/null_safety/null_safe_app/linux/my_application.h b/null_safety/null_safe_app/linux/my_application.h deleted file mode 100644 index 72271d5e4..000000000 --- a/null_safety/null_safe_app/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, - GtkApplication) - -/** - * my_application_new: - * - * Creates a new Flutter-based application. - * - * Returns: a new #MyApplication. - */ -MyApplication* my_application_new(); - -#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/null_safety/null_safe_app/macos/.gitignore b/null_safety/null_safe_app/macos/.gitignore deleted file mode 100644 index 746adbb6b..000000000 --- a/null_safety/null_safe_app/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/null_safety/null_safe_app/macos/Flutter/Flutter-Debug.xcconfig b/null_safety/null_safe_app/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index 4b81f9b2d..000000000 --- a/null_safety/null_safe_app/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/null_safety/null_safe_app/macos/Flutter/Flutter-Release.xcconfig b/null_safety/null_safe_app/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index 5caa9d157..000000000 --- a/null_safety/null_safe_app/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/null_safety/null_safe_app/macos/Flutter/GeneratedPluginRegistrant.swift b/null_safety/null_safe_app/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index f5cde84ba..000000000 --- a/null_safety/null_safe_app/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - -import window_size - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - WindowSizePlugin.register(with: registry.registrar(forPlugin: "WindowSizePlugin")) -} diff --git a/null_safety/null_safe_app/macos/Podfile b/null_safety/null_safe_app/macos/Podfile deleted file mode 100644 index dade8dfad..000000000 --- a/null_safety/null_safe_app/macos/Podfile +++ /dev/null @@ -1,40 +0,0 @@ -platform :osx, '10.11' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/null_safety/null_safe_app/macos/Runner.xcodeproj/project.pbxproj b/null_safety/null_safe_app/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index dd0249654..000000000 --- a/null_safety/null_safe_app/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,632 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 51; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Flutter Assemble"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - BC703845EB92F6BCCB85AC1C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD6E90389816BF4667B487FE /* Pods_Runner.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC111A2044C6BA0003C045; - remoteInfo = FLX; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 33CC110E2044A8840003C045 /* Bundle Framework */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Bundle Framework"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 2FA0EA6DF083DBAFFC9F00E9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* null_safe_app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = null_safe_app.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 4F97956F30A5BE807AAEDD7A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 53D97972DF621C46FF67433D /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - BD6E90389816BF4667B487FE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - BC703845EB92F6BCCB85AC1C /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - 3DC9FDBB254F00F6DC041ECE /* Pods */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* null_safe_app.app */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - 3DC9FDBB254F00F6DC041ECE /* Pods */ = { - isa = PBXGroup; - children = ( - 2FA0EA6DF083DBAFFC9F00E9 /* Pods-Runner.debug.xcconfig */, - 4F97956F30A5BE807AAEDD7A /* Pods-Runner.release.xcconfig */, - 53D97972DF621C46FF67433D /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - BD6E90389816BF4667B487FE /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 0EB7766DF171C206476D8621 /* [CP] Check Pods Manifest.lock */, - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - 09DE7C720E796C4336BF5CB4 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* null_safe_app.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 33CC10EC2044A3C60003C045 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.Sandbox = { - enabled = 1; - }; - }; - }; - 33CC111A2044C6BA0003C045 = { - CreatedOnToolsVersion = 9.2; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 33CC10E42044A3C60003C045; - productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 33CC10EC2044A3C60003C045 /* Runner */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 33CC10EB2044A3C60003C045 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 09DE7C720E796C4336BF5CB4 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 0EB7766DF171C206476D8621 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; - }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, - ); - inputPaths = ( - Flutter/ephemeral/tripwire, - ); - outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 33CC10E92044A3C60003C045 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; - targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 33CC10F52044A3C60003C045 /* Base */, - ); - name = MainMenu.xib; - path = Runner; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 338D0CE9231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Profile; - }; - 338D0CEA231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Profile; - }; - 338D0CEB231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Profile; - }; - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 33CC10FA2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10F92044A3C60003C045 /* Debug */, - 33CC10FA2044A3C60003C045 /* Release */, - 338D0CE9231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10FC2044A3C60003C045 /* Debug */, - 33CC10FD2044A3C60003C045 /* Release */, - 338D0CEA231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC111C2044C6BA0003C045 /* Debug */, - 33CC111D2044C6BA0003C045 /* Release */, - 338D0CEB231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 33CC10E52044A3C60003C045 /* Project object */; -} diff --git a/null_safety/null_safe_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/null_safety/null_safe_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/null_safety/null_safe_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/null_safety/null_safe_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/null_safety/null_safe_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 1f20fe523..000000000 --- a/null_safety/null_safe_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_safe_app/macos/Runner.xcworkspace/contents.xcworkspacedata b/null_safety/null_safe_app/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c..000000000 --- a/null_safety/null_safe_app/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/null_safety/null_safe_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/null_safety/null_safe_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/null_safety/null_safe_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/null_safety/null_safe_app/macos/Runner/AppDelegate.swift b/null_safety/null_safe_app/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef6437..000000000 --- a/null_safety/null_safe_app/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f19..000000000 --- a/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" - }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 82b6f9d9a33e198f5747104729e1fcef999772a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY diff --git a/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index 13b35eba55c6dabc3aac36f33d859266c18fa0d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5680 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 diff --git a/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 0a3f5fa40fb3d1e0710331a48de5d256da3f275d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 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 diff --git a/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/null_safety/null_safe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 2f1632cfddf3d9dade342351e627a0a75609fb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_safe_app/macos/Runner/Configs/AppInfo.xcconfig b/null_safety/null_safe_app/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index 9962b5a4e..000000000 --- a/null_safety/null_safe_app/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// Application-level settings for the Runner target. -// -// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the -// future. If not, the values below would default to using the project name when this becomes a -// 'flutter create' template. - -// The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = null_safe_app - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.example.nullSafeApp - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. diff --git a/null_safety/null_safe_app/macos/Runner/Configs/Debug.xcconfig b/null_safety/null_safe_app/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd946..000000000 --- a/null_safety/null_safe_app/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/null_safety/null_safe_app/macos/Runner/Configs/Release.xcconfig b/null_safety/null_safe_app/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f4956..000000000 --- a/null_safety/null_safe_app/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/null_safety/null_safe_app/macos/Runner/Configs/Warnings.xcconfig b/null_safety/null_safe_app/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf478..000000000 --- a/null_safety/null_safe_app/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings -GCC_WARN_UNDECLARED_SELECTOR = YES -CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES -CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES -CLANG_WARN_PRAGMA_PACK = YES -CLANG_WARN_STRICT_PROTOTYPES = YES -CLANG_WARN_COMMA = YES -GCC_WARN_STRICT_SELECTOR_MATCH = YES -CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES -CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES -GCC_WARN_SHADOW = YES -CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/null_safety/null_safe_app/macos/Runner/DebugProfile.entitlements b/null_safety/null_safe_app/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index dddb8a30c..000000000 --- a/null_safety/null_safe_app/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - - diff --git a/null_safety/null_safe_app/macos/Runner/Info.plist b/null_safety/null_safe_app/macos/Runner/Info.plist deleted file mode 100644 index 4789daa6a..000000000 --- a/null_safety/null_safe_app/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/null_safety/null_safe_app/macos/Runner/MainFlutterWindow.swift b/null_safety/null_safe_app/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 2722837ec..000000000 --- a/null_safety/null_safe_app/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController.init() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/null_safety/null_safe_app/macos/Runner/Release.entitlements b/null_safety/null_safe_app/macos/Runner/Release.entitlements deleted file mode 100644 index 852fa1a47..000000000 --- a/null_safety/null_safe_app/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/null_safety/null_safe_app/pubspec.yaml b/null_safety/null_safe_app/pubspec.yaml deleted file mode 100644 index da8dffd95..000000000 --- a/null_safety/null_safe_app/pubspec.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: null_safe_app -description: A new Flutter project. -publish_to: "none" # Do not publish apps & package using the null safety experiment. -version: 1.2.0 - -environment: - sdk: ">=2.17.0-0 <3.0.0" - -dependencies: - flutter: - sdk: flutter - cupertino_icons: ^1.0.2 - window_size: - git: - url: https://github.com/google/flutter-desktop-embedding.git - path: plugins/window_size - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.1 - -flutter: - uses-material-design: true diff --git a/null_safety/null_safe_app/test/widget_test.dart b/null_safety/null_safe_app/test/widget_test.dart deleted file mode 100644 index bc33d3f09..000000000 --- a/null_safety/null_safe_app/test/widget_test.dart +++ /dev/null @@ -1,14 +0,0 @@ -// This is a basic widget test that tests just the good app code. - -import 'package:flutter_test/flutter_test.dart'; -import 'package:null_safe_app/goodapp.dart'; - -void main() { - testWidgets('App smoke test', (tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const GoodMyApp()); - - // Verify that we have a forecast, or a managed failure. - expect(find.textContaining('Temperature'), findsOneWidget); - }); -} diff --git a/null_safety/null_safe_app/web/favicon.png b/null_safety/null_safe_app/web/favicon.png deleted file mode 100644 index 8aaa46ac1ae21512746f852a42ba87e4165dfdd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM diff --git a/null_safety/null_safe_app/web/icons/Icon-192.png b/null_safety/null_safe_app/web/icons/Icon-192.png deleted file mode 100644 index b749bfef07473333cf1dd31e9eed89862a5d52aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5292 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 diff --git a/null_safety/null_safe_app/web/icons/Icon-512.png b/null_safety/null_safe_app/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48dff1169879ba46840804b412fe02fefd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8252 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 diff --git a/null_safety/null_safe_app/web/icons/Icon-maskable-192.png b/null_safety/null_safe_app/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d76e525556d5d89141648c724331630325d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! diff --git a/null_safety/null_safe_app/web/icons/Icon-maskable-512.png b/null_safety/null_safe_app/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c56691fbdb0b7efa65097c7cc1edac12a6d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20998 zcmeFZ_gj-)&^4Nb2tlbLMU<{!p(#yjqEe+=0IA_oih%ScH9@5#MNp&}Y#;;(h=A0@ zh7{>lT2MkSQ344eAvrhici!td|HJuyvJm#Y_w1Q9Yu3!26dNlO-oxUDK_C#XnW^Co z5C{VN6#{~B0)K2j7}*1Xq(Nqemv23A-6&=ZpEijkVnSwVGqLv40?n0=p;k3-U5e5+ z+z3>aS`u9DS=!wg8ROu?X4TFoW6CFLL&{GzoVT)ldhLekLM|+j3tIxRd|*5=c{=s&*vfPdBr(Fyj(v@%eQj1Soy7m4^@VRl1~@-PV7y+c!xz$8436WBn$t{=}mEdK#k`aystimGgI{(IBx$!pAwFoE9Y`^t^;> zKAD)C(Dl^s%`?q5$P|fZf8Xymrtu^Pv(7D`rn>Z-w$Ahs!z9!94WNVxrJuXfHAaxg zC6s@|Z1$7R$(!#t%Jb{{s6(Y?NoQXDYq)!}X@jKPhe`{9KQ@sAU8y-5`xt?S9$jKH zoi}6m5PcG*^{kjvt+kwPpyQzVg4o)a>;LK`aaN2x4@itBD3Aq?yWTM20VRn1rrd+2 zKO=P0rMjEGq_UqpMa`~7B|p?xAN1SCoCp}QxAv8O`jLJ5CVh@umR%c%i^)6!o+~`F zaalSTQcl5iwOLC&H)efzd{8(88mo`GI(56T<(&p7>Qd^;R1hn1Y~jN~tApaL8>##U zd65bo8)79CplWxr#z4!6HvLz&N7_5AN#x;kLG?zQ(#p|lj<8VUlKY=Aw!ATqeL-VG z42gA!^cMNPj>(`ZMEbCrnkg*QTsn*u(nQPWI9pA{MQ=IsPTzd7q5E#7+z>Ch=fx$~ z;J|?(5jTo5UWGvsJa(Sx0?S#56+8SD!I^tftyeh_{5_31l6&Hywtn`bbqYDqGZXI( zCG7hBgvksX2ak8+)hB4jnxlO@A32C_RM&g&qDSb~3kM&)@A_j1*oTO@nicGUyv+%^ z=vB)4(q!ykzT==Z)3*3{atJ5}2PV*?Uw+HhN&+RvKvZL3p9E?gHjv{6zM!A|z|UHK z-r6jeLxbGn0D@q5aBzlco|nG2tr}N@m;CJX(4#Cn&p&sLKwzLFx1A5izu?X_X4x8r@K*d~7>t1~ zDW1Mv5O&WOxbzFC`DQ6yNJ(^u9vJdj$fl2dq`!Yba_0^vQHXV)vqv1gssZYzBct!j zHr9>ydtM8wIs}HI4=E}qAkv|BPWzh3^_yLH(|kdb?x56^BlDC)diWyPd*|f!`^12_U>TD^^94OCN0lVv~Sgvs94ecpE^}VY$w`qr_>Ue zTfH~;C<3H<0dS5Rkf_f@1x$Gms}gK#&k()IC0zb^QbR!YLoll)c$Agfi6MKI0dP_L z=Uou&u~~^2onea2%XZ@>`0x^L8CK6=I{ge;|HXMj)-@o~h&O{CuuwBX8pVqjJ*o}5 z#8&oF_p=uSo~8vn?R0!AMWvcbZmsrj{ZswRt(aEdbi~;HeVqIe)-6*1L%5u$Gbs}| zjFh?KL&U(rC2izSGtwP5FnsR@6$-1toz?RvLD^k~h9NfZgzHE7m!!7s6(;)RKo2z} zB$Ci@h({l?arO+vF;s35h=|WpefaOtKVx>l399}EsX@Oe3>>4MPy%h&^3N_`UTAHJ zI$u(|TYC~E4)|JwkWW3F!Tib=NzjHs5ii2uj0^m|Qlh-2VnB#+X~RZ|`SA*}}&8j9IDv?F;(Y^1=Z0?wWz;ikB zewU>MAXDi~O7a~?jx1x=&8GcR-fTp>{2Q`7#BE#N6D@FCp`?ht-<1|y(NArxE_WIu zP+GuG=Qq>SHWtS2M>34xwEw^uvo4|9)4s|Ac=ud?nHQ>ax@LvBqusFcjH0}{T3ZPQ zLO1l<@B_d-(IS682}5KA&qT1+{3jxKolW+1zL4inqBS-D>BohA!K5++41tM@ z@xe<-qz27}LnV#5lk&iC40M||JRmZ*A##K3+!j93eouU8@q-`W0r%7N`V$cR&JV;iX(@cS{#*5Q>~4BEDA)EikLSP@>Oo&Bt1Z~&0d5)COI%3$cLB_M?dK# z{yv2OqW!al-#AEs&QFd;WL5zCcp)JmCKJEdNsJlL9K@MnPegK23?G|O%v`@N{rIRa zi^7a}WBCD77@VQ-z_v{ZdRsWYrYgC$<^gRQwMCi6);%R~uIi31OMS}=gUTE(GKmCI z$zM>mytL{uNN+a&S38^ez(UT=iSw=l2f+a4)DyCA1Cs_N-r?Q@$3KTYosY!;pzQ0k zzh1G|kWCJjc(oZVBji@kN%)UBw(s{KaYGy=i{g3{)Z+&H8t2`^IuLLKWT6lL<-C(! zSF9K4xd-|VO;4}$s?Z7J_dYqD#Mt)WCDnsR{Kpjq275uUq6`v0y*!PHyS(}Zmv)_{>Vose9-$h8P0|y;YG)Bo}$(3Z%+Gs0RBmFiW!^5tBmDK-g zfe5%B*27ib+7|A*Fx5e)2%kIxh7xWoc3pZcXS2zik!63lAG1;sC1ja>BqH7D zODdi5lKW$$AFvxgC-l-)!c+9@YMC7a`w?G(P#MeEQ5xID#<}W$3bSmJ`8V*x2^3qz zVe<^^_8GHqYGF$nIQm0Xq2kAgYtm#UC1A(=&85w;rmg#v906 zT;RyMgbMpYOmS&S9c38^40oUp?!}#_84`aEVw;T;r%gTZkWeU;;FwM@0y0adt{-OK z(vGnPSlR=Nv2OUN!2=xazlnHPM9EWxXg2EKf0kI{iQb#FoP>xCB<)QY>OAM$Dcdbm zU6dU|%Mo(~avBYSjRc13@|s>axhrPl@Sr81{RSZUdz4(=|82XEbV*JAX6Lfbgqgz584lYgi0 z2-E{0XCVON$wHfvaLs;=dqhQJ&6aLn$D#0i(FkAVrXG9LGm3pSTf&f~RQb6|1_;W> z?n-;&hrq*~L=(;u#jS`*Yvh@3hU-33y_Kv1nxqrsf>pHVF&|OKkoC)4DWK%I!yq?P z=vXo8*_1iEWo8xCa{HJ4tzxOmqS0&$q+>LroMKI*V-rxhOc%3Y!)Y|N6p4PLE>Yek>Y(^KRECg8<|%g*nQib_Yc#A5q8Io z6Ig&V>k|~>B6KE%h4reAo*DfOH)_01tE0nWOxX0*YTJgyw7moaI^7gW*WBAeiLbD?FV9GSB zPv3`SX*^GRBM;zledO`!EbdBO_J@fEy)B{-XUTVQv}Qf~PSDpK9+@I`7G7|>Dgbbu z_7sX9%spVo$%qwRwgzq7!_N;#Td08m5HV#?^dF-EV1o)Q=Oa+rs2xH#g;ykLbwtCh znUnA^dW!XjspJ;otq$yV@I^s9Up(5k7rqhQd@OLMyyxVLj_+$#Vc*}Usevp^I(^vH zmDgHc0VMme|K&X?9&lkN{yq_(If)O`oUPW8X}1R5pSVBpfJe0t{sPA(F#`eONTh_) zxeLqHMfJX#?P(@6w4CqRE@Eiza; z;^5)Kk=^5)KDvd9Q<`=sJU8rjjxPmtWMTmzcH={o$U)j=QBuHarp?=}c??!`3d=H$nrJMyr3L-& zA#m?t(NqLM?I3mGgWA_C+0}BWy3-Gj7bR+d+U?n*mN$%5P`ugrB{PeV>jDUn;eVc- zzeMB1mI4?fVJatrNyq|+zn=!AiN~<}eoM#4uSx^K?Iw>P2*r=k`$<3kT00BE_1c(02MRz4(Hq`L^M&xt!pV2 zn+#U3@j~PUR>xIy+P>51iPayk-mqIK_5rlQMSe5&tDkKJk_$i(X&;K(11YGpEc-K= zq4Ln%^j>Zi_+Ae9eYEq_<`D+ddb8_aY!N;)(&EHFAk@Ekg&41ABmOXfWTo)Z&KotA zh*jgDGFYQ^y=m)<_LCWB+v48DTJw*5dwMm_YP0*_{@HANValf?kV-Ic3xsC}#x2h8 z`q5}d8IRmqWk%gR)s~M}(Qas5+`np^jW^oEd-pzERRPMXj$kS17g?H#4^trtKtq;C?;c ztd|%|WP2w2Nzg@)^V}!Gv++QF2!@FP9~DFVISRW6S?eP{H;;8EH;{>X_}NGj^0cg@ z!2@A>-CTcoN02^r6@c~^QUa={0xwK0v4i-tQ9wQq^=q*-{;zJ{Qe%7Qd!&X2>rV@4 z&wznCz*63_vw4>ZF8~%QCM?=vfzW0r_4O^>UA@otm_!N%mH)!ERy&b!n3*E*@?9d^ zu}s^By@FAhG(%?xgJMuMzuJw2&@$-oK>n z=UF}rt%vuaP9fzIFCYN-1&b#r^Cl6RDFIWsEsM|ROf`E?O(cy{BPO2Ie~kT+^kI^i zp>Kbc@C?}3vy-$ZFVX#-cx)Xj&G^ibX{pWggtr(%^?HeQL@Z( zM-430g<{>vT*)jK4aY9(a{lSy{8vxLbP~n1MXwM527ne#SHCC^F_2@o`>c>>KCq9c(4c$VSyMl*y3Nq1s+!DF| z^?d9PipQN(mw^j~{wJ^VOXDCaL$UtwwTpyv8IAwGOg<|NSghkAR1GSNLZ1JwdGJYm zP}t<=5=sNNUEjc=g(y)1n5)ynX(_$1-uGuDR*6Y^Wgg(LT)Jp><5X|}bt z_qMa&QP?l_n+iVS>v%s2Li_;AIeC=Ca^v1jX4*gvB$?H?2%ndnqOaK5-J%7a} zIF{qYa&NfVY}(fmS0OmXA70{znljBOiv5Yod!vFU{D~*3B3Ka{P8?^ zfhlF6o7aNT$qi8(w<}OPw5fqA7HUje*r*Oa(YV%*l0|9FP9KW@U&{VSW{&b0?@y)M zs%4k1Ax;TGYuZ9l;vP5@?3oQsp3)rjBeBvQQ>^B;z5pc=(yHhHtq6|0m(h4envn_j787fizY@V`o(!SSyE7vlMT zbo=Z1c=atz*G!kwzGB;*uPL$Ei|EbZLh8o+1BUMOpnU(uX&OG1MV@|!&HOOeU#t^x zr9=w2ow!SsTuJWT7%Wmt14U_M*3XiWBWHxqCVZI0_g0`}*^&yEG9RK9fHK8e+S^m? zfCNn$JTswUVbiC#>|=wS{t>-MI1aYPLtzO5y|LJ9nm>L6*wpr_m!)A2Fb1RceX&*|5|MwrvOk4+!0p99B9AgP*9D{Yt|x=X}O% zgIG$MrTB=n-!q%ROT|SzH#A$Xm;|ym)0>1KR}Yl0hr-KO&qMrV+0Ej3d@?FcgZ+B3 ztEk16g#2)@x=(ko8k7^Tq$*5pfZHC@O@}`SmzT1(V@x&NkZNM2F#Q-Go7-uf_zKC( zB(lHZ=3@dHaCOf6C!6i8rDL%~XM@rVTJbZL09?ht@r^Z_6x}}atLjvH^4Vk#Ibf(^LiBJFqorm?A=lE zzFmwvp4bT@Nv2V>YQT92X;t9<2s|Ru5#w?wCvlhcHLcsq0TaFLKy(?nzezJ>CECqj zggrI~Hd4LudM(m{L@ezfnpELsRFVFw>fx;CqZtie`$BXRn#Ns%AdoE$-Pf~{9A8rV zf7FbgpKmVzmvn-z(g+&+-ID=v`;6=)itq8oM*+Uz**SMm_{%eP_c0{<%1JGiZS19o z@Gj7$Se~0lsu}w!%;L%~mIAO;AY-2i`9A*ZfFs=X!LTd6nWOZ7BZH2M{l2*I>Xu)0 z`<=;ObglnXcVk!T>e$H?El}ra0WmPZ$YAN0#$?|1v26^(quQre8;k20*dpd4N{i=b zuN=y}_ew9SlE~R{2+Rh^7%PA1H5X(p8%0TpJ=cqa$65XL)$#ign-y!qij3;2>j}I; ziO@O|aYfn&up5F`YtjGw68rD3{OSGNYmBnl?zdwY$=RFsegTZ=kkzRQ`r7ZjQP!H( zp4>)&zf<*N!tI00xzm-ME_a{_I!TbDCr;8E;kCH4LlL-tqLxDuBn-+xgPk37S&S2^ z2QZumkIimwz!c@!r0)j3*(jPIs*V!iLTRl0Cpt_UVNUgGZzdvs0(-yUghJfKr7;=h zD~y?OJ-bWJg;VdZ^r@vlDoeGV&8^--!t1AsIMZ5S440HCVr%uk- z2wV>!W1WCvFB~p$P$$_}|H5>uBeAe>`N1FI8AxM|pq%oNs;ED8x+tb44E) zTj{^fbh@eLi%5AqT?;d>Es5D*Fi{Bpk)q$^iF!!U`r2hHAO_?#!aYmf>G+jHsES4W zgpTKY59d?hsb~F0WE&dUp6lPt;Pm zcbTUqRryw^%{ViNW%Z(o8}dd00H(H-MmQmOiTq{}_rnwOr*Ybo7*}3W-qBT!#s0Ie z-s<1rvvJx_W;ViUD`04%1pra*Yw0BcGe)fDKUK8aF#BwBwMPU;9`!6E(~!043?SZx z13K%z@$$#2%2ovVlgFIPp7Q6(vO)ud)=*%ZSucL2Dh~K4B|%q4KnSpj#n@(0B})!9 z8p*hY@5)NDn^&Pmo;|!>erSYg`LkO?0FB@PLqRvc>4IsUM5O&>rRv|IBRxi(RX(gJ ztQ2;??L~&Mv;aVr5Q@(?y^DGo%pO^~zijld41aA0KKsy_6FeHIn?fNHP-z>$OoWer zjZ5hFQTy*-f7KENRiCE$ZOp4|+Wah|2=n@|W=o}bFM}Y@0e62+_|#fND5cwa3;P{^pEzlJbF1Yq^}>=wy8^^^$I2M_MH(4Dw{F6hm+vrWV5!q;oX z;tTNhz5`-V={ew|bD$?qcF^WPR{L(E%~XG8eJx(DoGzt2G{l8r!QPJ>kpHeOvCv#w zr=SSwMDaUX^*~v%6K%O~i)<^6`{go>a3IdfZ8hFmz&;Y@P%ZygShQZ2DSHd`m5AR= zx$wWU06;GYwXOf(%MFyj{8rPFXD};JCe85Bdp4$YJ2$TzZ7Gr#+SwCvBI1o$QP0(c zy`P51FEBV2HTisM3bHqpmECT@H!Y2-bv2*SoSPoO?wLe{M#zDTy@ujAZ!Izzky~3k zRA1RQIIoC*Mej1PH!sUgtkR0VCNMX(_!b65mo66iM*KQ7xT8t2eev$v#&YdUXKwGm z7okYAqYF&bveHeu6M5p9xheRCTiU8PFeb1_Rht0VVSbm%|1cOVobc8mvqcw!RjrMRM#~=7xibH&Fa5Imc|lZ{eC|R__)OrFg4@X_ ze+kk*_sDNG5^ELmHnZ7Ue?)#6!O)#Nv*Dl2mr#2)w{#i-;}0*_h4A%HidnmclH#;Q zmQbq+P4DS%3}PpPm7K_K3d2s#k~x+PlTul7+kIKol0@`YN1NG=+&PYTS->AdzPv!> zQvzT=)9se*Jr1Yq+C{wbK82gAX`NkbXFZ)4==j4t51{|-v!!$H8@WKA={d>CWRW+g z*`L>9rRucS`vbXu0rzA1#AQ(W?6)}1+oJSF=80Kf_2r~Qm-EJ6bbB3k`80rCv(0d` zvCf3;L2ovYG_TES%6vSuoKfIHC6w;V31!oqHM8-I8AFzcd^+_86!EcCOX|Ta9k1!s z_Vh(EGIIsI3fb&dF$9V8v(sTBC%!#<&KIGF;R+;MyC0~}$gC}}= zR`DbUVc&Bx`lYykFZ4{R{xRaUQkWCGCQlEc;!mf=+nOk$RUg*7 z;kP7CVLEc$CA7@6VFpsp3_t~m)W0aPxjsA3e5U%SfY{tp5BV5jH-5n?YX7*+U+Zs%LGR>U- z!x4Y_|4{gx?ZPJobISy991O znrmrC3otC;#4^&Rg_iK}XH(XX+eUHN0@Oe06hJk}F?`$)KmH^eWz@@N%wEc)%>?Ft z#9QAroDeyfztQ5Qe{m*#R#T%-h*&XvSEn@N$hYRTCMXS|EPwzF3IIysD2waj`vQD{ zv_#^Pgr?s~I*NE=acf@dWVRNWTr(GN0wrL)Z2=`Dr>}&ZDNX|+^Anl{Di%v1Id$_p zK5_H5`RDjJx`BW7hc85|> zHMMsWJ4KTMRHGu+vy*kBEMjz*^K8VtU=bXJYdhdZ-?jTXa$&n)C?QQIZ7ln$qbGlr zS*TYE+ppOrI@AoPP=VI-OXm}FzgXRL)OPvR$a_=SsC<3Jb+>5makX|U!}3lx4tX&L z^C<{9TggZNoeX!P1jX_K5HkEVnQ#s2&c#umzV6s2U-Q;({l+j^?hi7JnQ7&&*oOy9 z(|0asVTWUCiCnjcOnB2pN0DpuTglKq;&SFOQ3pUdye*eT<2()7WKbXp1qq9=bhMWlF-7BHT|i3TEIT77AcjD(v=I207wi-=vyiw5mxgPdTVUC z&h^FEUrXwWs9en2C{ywZp;nvS(Mb$8sBEh-*_d-OEm%~p1b2EpcwUdf<~zmJmaSTO zSX&&GGCEz-M^)G$fBvLC2q@wM$;n4jp+mt0MJFLuJ%c`tSp8$xuP|G81GEd2ci$|M z4XmH{5$j?rqDWoL4vs!}W&!?!rtj=6WKJcE>)?NVske(p;|#>vL|M_$as=mi-n-()a*OU3Okmk0wC<9y7t^D(er-&jEEak2!NnDiOQ99Wx8{S8}=Ng!e0tzj*#T)+%7;aM$ z&H}|o|J1p{IK0Q7JggAwipvHvko6>Epmh4RFRUr}$*2K4dz85o7|3#Bec9SQ4Y*;> zXWjT~f+d)dp_J`sV*!w>B%)#GI_;USp7?0810&3S=WntGZ)+tzhZ+!|=XlQ&@G@~3 z-dw@I1>9n1{+!x^Hz|xC+P#Ab`E@=vY?3%Bc!Po~e&&&)Qp85!I|U<-fCXy*wMa&t zgDk!l;gk;$taOCV$&60z+}_$ykz=Ea*)wJQ3-M|p*EK(cvtIre0Pta~(95J7zoxBN zS(yE^3?>88AL0Wfuou$BM{lR1hkrRibz=+I9ccwd`ZC*{NNqL)3pCcw^ygMmrG^Yp zn5f}Xf>%gncC=Yq96;rnfp4FQL#{!Y*->e82rHgY4Zwy{`JH}b9*qr^VA{%~Z}jtp z_t$PlS6}5{NtTqXHN?uI8ut8rOaD#F1C^ls73S=b_yI#iZDOGz3#^L@YheGd>L;<( z)U=iYj;`{>VDNzIxcjbTk-X3keXR8Xbc`A$o5# zKGSk-7YcoBYuAFFSCjGi;7b<;n-*`USs)IX z=0q6WZ=L!)PkYtZE-6)azhXV|+?IVGTOmMCHjhkBjfy@k1>?yFO3u!)@cl{fFAXnRYsWk)kpT?X{_$J=|?g@Q}+kFw|%n!;Zo}|HE@j=SFMvT8v`6Y zNO;tXN^036nOB2%=KzxB?n~NQ1K8IO*UE{;Xy;N^ZNI#P+hRZOaHATz9(=)w=QwV# z`z3+P>9b?l-@$@P3<;w@O1BdKh+H;jo#_%rr!ute{|YX4g5}n?O7Mq^01S5;+lABE+7`&_?mR_z7k|Ja#8h{!~j)| zbBX;*fsbUak_!kXU%HfJ2J+G7;inu#uRjMb|8a){=^))y236LDZ$$q3LRlat1D)%7K0!q5hT5V1j3qHc7MG9 z_)Q=yQ>rs>3%l=vu$#VVd$&IgO}Za#?aN!xY>-<3PhzS&q!N<=1Q7VJBfHjug^4|) z*fW^;%3}P7X#W3d;tUs3;`O&>;NKZBMR8au6>7?QriJ@gBaorz-+`pUWOP73DJL=M z(33uT6Gz@Sv40F6bN|H=lpcO z^AJl}&=TIjdevuDQ!w0K*6oZ2JBOhb31q!XDArFyKpz!I$p4|;c}@^bX{>AXdt7Bm zaLTk?c%h@%xq02reu~;t@$bv`b3i(P=g}~ywgSFpM;}b$zAD+=I!7`V~}ARB(Wx0C(EAq@?GuxOL9X+ffbkn3+Op0*80TqmpAq~EXmv%cq36celXmRz z%0(!oMp&2?`W)ALA&#|fu)MFp{V~~zIIixOxY^YtO5^FSox8v$#d0*{qk0Z)pNTt0QVZ^$`4vImEB>;Lo2!7K05TpY-sl#sWBz_W-aDIV`Ksabi zvpa#93Svo!70W*Ydh)Qzm{0?CU`y;T^ITg-J9nfWeZ-sbw)G@W?$Eomf%Bg2frfh5 zRm1{|E0+(4zXy){$}uC3%Y-mSA2-^I>Tw|gQx|7TDli_hB>``)Q^aZ`LJC2V3U$SABP}T)%}9g2pF9dT}aC~!rFFgkl1J$ z`^z{Arn3On-m%}r}TGF8KQe*OjSJ=T|caa_E;v89A{t@$yT^(G9=N9F?^kT*#s3qhJq!IH5|AhnqFd z0B&^gm3w;YbMNUKU>naBAO@fbz zqw=n!@--}o5;k6DvTW9pw)IJVz;X}ncbPVrmH>4x);8cx;q3UyiML1PWp%bxSiS|^ zC5!kc4qw%NSOGQ*Kcd#&$30=lDvs#*4W4q0u8E02U)7d=!W7+NouEyuF1dyH$D@G& zaFaxo9Ex|ZXA5y{eZT*i*dP~INSMAi@mvEX@q5i<&o&#sM}Df?Og8n8Ku4vOux=T% zeuw~z1hR}ZNwTn8KsQHKLwe2>p^K`YWUJEdVEl|mO21Bov!D0D$qPoOv=vJJ`)|%_ z>l%`eexY7t{BlVKP!`a^U@nM?#9OC*t76My_E_<16vCz1x_#82qj2PkWiMWgF8bM9 z(1t4VdHcJ;B~;Q%x01k_gQ0>u2*OjuEWNOGX#4}+N?Gb5;+NQMqp}Puqw2HnkYuKA zzKFWGHc&K>gwVgI1Sc9OT1s6fq=>$gZU!!xsilA$fF`kLdGoX*^t}ao@+^WBpk>`8 z4v_~gK|c2rCq#DZ+H)$3v~Hoi=)=1D==e3P zpKrRQ+>O^cyTuWJ%2}__0Z9SM_z9rptd*;-9uC1tDw4+A!=+K%8~M&+Zk#13hY$Y$ zo-8$*8dD5@}XDi19RjK6T^J~DIXbF5w&l?JLHMrf0 zLv0{7*G!==o|B%$V!a=EtVHdMwXLtmO~vl}P6;S(R2Q>*kTJK~!}gloxj)m|_LYK{ zl(f1cB=EON&wVFwK?MGn^nWuh@f95SHatPs(jcwSY#Dnl1@_gkOJ5=f`%s$ZHljRH0 z+c%lrb=Gi&N&1>^L_}#m>=U=(oT^vTA&3!xXNyqi$pdW1BDJ#^{h|2tZc{t^vag3& zAD7*8C`chNF|27itjBUo^CCDyEpJLX3&u+(L;YeeMwnXEoyN(ytoEabcl$lSgx~Ltatn}b$@j_yyMrBb03)shJE*$;Mw=;mZd&8e>IzE+4WIoH zCSZE7WthNUL$|Y#m!Hn?x7V1CK}V`KwW2D$-7&ODy5Cj;!_tTOOo1Mm%(RUt)#$@3 zhurA)t<7qik%%1Et+N1?R#hdBB#LdQ7{%-C zn$(`5e0eFh(#c*hvF>WT*07fk$N_631?W>kfjySN8^XC9diiOd#s?4tybICF;wBjp zIPzilX3{j%4u7blhq)tnaOBZ_`h_JqHXuI7SuIlNTgBk9{HIS&3|SEPfrvcE<@}E` zKk$y*nzsqZ{J{uWW9;#n=de&&h>m#A#q)#zRonr(?mDOYU&h&aQWD;?Z(22wY?t$U3qo`?{+amA$^TkxL+Ex2dh`q7iR&TPd0Ymwzo#b? zP$#t=elB5?k$#uE$K>C$YZbYUX_JgnXA`oF_Ifz4H7LEOW~{Gww&3s=wH4+j8*TU| zSX%LtJWqhr-xGNSe{;(16kxnak6RnZ{0qZ^kJI5X*It_YuynSpi(^-}Lolr{)#z_~ zw!(J-8%7Ybo^c3(mED`Xz8xecP35a6M8HarxRn%+NJBE;dw>>Y2T&;jzRd4FSDO3T zt*y+zXCtZQ0bP0yf6HRpD|WmzP;DR^-g^}{z~0x~z4j8m zucTe%k&S9Nt-?Jb^gYW1w6!Y3AUZ0Jcq;pJ)Exz%7k+mUOm6%ApjjSmflfKwBo6`B zhNb@$NHTJ>guaj9S{@DX)!6)b-Shav=DNKWy(V00k(D!v?PAR0f0vDNq*#mYmUp6> z76KxbFDw5U{{qx{BRj(>?|C`82ICKbfLxoldov-M?4Xl+3;I4GzLHyPOzYw7{WQST zPNYcx5onA%MAO9??41Po*1zW(Y%Zzn06-lUp{s<3!_9vv9HBjT02On0Hf$}NP;wF) zP<`2p3}A^~1YbvOh{ePMx$!JGUPX-tbBzp3mDZMY;}h;sQ->!p97GA)9a|tF(Gh{1$xk7 zUw?ELkT({Xw!KIr);kTRb1b|UL`r2_`a+&UFVCdJ)1T#fdh;71EQl9790Br0m_`$x z9|ZANuchFci8GNZ{XbP=+uXSJRe(;V5laQz$u18#?X*9}x7cIEbnr%<=1cX3EIu7$ zhHW6pe5M(&qEtsqRa>?)*{O;OJT+YUhG5{km|YI7I@JL_3Hwao9aXneiSA~a* z|Lp@c-oMNyeAEuUz{F?kuou3x#C*gU?lon!RC1s37gW^0Frc`lqQWH&(J4NoZg3m8 z;Lin#8Q+cFPD7MCzj}#|ws7b@?D9Q4dVjS4dpco=4yX5SSH=A@U@yqPdp@?g?qeia zH=Tt_9)G=6C2QIPsi-QipnK(mc0xXIN;j$WLf@n8eYvMk;*H-Q4tK%(3$CN}NGgO8n}fD~+>?<3UzvsrMf*J~%i;VKQHbF%TPalFi=#sgj)(P#SM^0Q=Tr>4kJVw8X3iWsP|e8tj}NjlMdWp z@2+M4HQu~3!=bZpjh;;DIDk&X}=c8~kn)FWWH z2KL1w^rA5&1@@^X%MjZ7;u(kH=YhH2pJPFQe=hn>tZd5RC5cfGYis8s9PKaxi*}-s6*W zRA^PwR=y^5Z){!(4D9-KC;0~;b*ploznFOaU`bJ_7U?qAi#mTo!&rIECRL$_y@yI27x2?W+zqDBD5~KCVYKFZLK+>ABC(Kj zeAll)KMgIlAG`r^rS{loBrGLtzhHY8$)<_S<(Dpkr(Ym@@vnQ&rS@FC*>2@XCH}M+an74WcRDcoQ+a3@A z9tYhl5$z7bMdTvD2r&jztBuo37?*k~wcU9GK2-)MTFS-lux-mIRYUuGUCI~V$?s#< z?1qAWb(?ZLm(N>%S%y10COdaq_Tm5c^%ooIxpR=`3e4C|@O5wY+eLik&XVi5oT7oe zmxH)Jd*5eo@!7t`x8!K=-+zJ-Sz)B_V$)s1pW~CDU$=q^&ABvf6S|?TOMB-RIm@CoFg>mjIQE)?+A1_3s6zmFU_oW&BqyMz1mY*IcP_2knjq5 zqw~JK(cVsmzc7*EvTT2rvpeqhg)W=%TOZ^>f`rD4|7Z5fq*2D^lpCttIg#ictgqZ$P@ru6P#f$x#KfnfTZj~LG6U_d-kE~`;kU_X)`H5so@?C zWmb!7x|xk@0L~0JFall*@ltyiL^)@3m4MqC7(7H0sH!WidId1#f#6R{Q&A!XzO1IAcIx;$k66dumt6lpUw@nL2MvqJ5^kbOVZ<^2jt5-njy|2@`07}0w z;M%I1$FCoLy`8xp8Tk)bFr;7aJeQ9KK6p=O$U0-&JYYy8woV*>b+FB?xLX`=pirYM z5K$BA(u)+jR{?O2r$c_Qvl?M{=Ar{yQ!UVsVn4k@0!b?_lA;dVz9uaQUgBH8Oz(Sb zrEs;&Ey>_ex8&!N{PmQjp+-Hlh|OA&wvDai#GpU=^-B70V0*LF=^bi+Nhe_o|azZ%~ZZ1$}LTmWt4aoB1 zPgccm$EwYU+jrdBaQFxQfn5gd(gM`Y*Ro1n&Zi?j=(>T3kmf94vdhf?AuS8>$Va#P zGL5F+VHpxdsCUa}+RqavXCobI-@B;WJbMphpK2%6t=XvKWWE|ruvREgM+|V=i6;;O zx$g=7^`$XWn0fu!gF=Xe9cMB8Z_SelD>&o&{1XFS`|nInK3BXlaeD*rc;R-#osyIS zWv&>~^TLIyBB6oDX+#>3<_0+2C4u2zK^wmHXXDD9_)kmLYJ!0SzM|%G9{pi)`X$uf zW}|%%#LgyK7m(4{V&?x_0KEDq56tk|0YNY~B(Sr|>WVz-pO3A##}$JCT}5P7DY+@W z#gJv>pA5>$|E3WO2tV7G^SuymB?tY`ooKcN3!vaQMnBNk-WATF{-$#}FyzgtJ8M^; zUK6KWSG)}6**+rZ&?o@PK3??uN{Q)#+bDP9i1W&j)oaU5d0bIWJ_9T5ac!qc?x66Q z$KUSZ`nYY94qfN_dpTFr8OW~A?}LD;Yty-BA)-be5Z3S#t2Io%q+cAbnGj1t$|qFR z9o?8B7OA^KjCYL=-!p}w(dkC^G6Nd%_I=1))PC0w5}ZZGJxfK)jP4Fwa@b-SYBw?% zdz9B-<`*B2dOn(N;mcTm%Do)rIvfXRNFX&1h`?>Rzuj~Wx)$p13nrDlS8-jwq@e@n zNIj_|8or==8~1h*Ih?w*8K7rYkGlwlTWAwLKc5}~dfz3y`kM&^Q|@C%1VAp_$wnw6zG~W4O+^ z>i?NY?oXf^Puc~+fDM$VgRNBpOZj{2cMP~gCqWAX4 z7>%$ux8@a&_B(pt``KSt;r+sR-$N;jdpY>|pyvPiN)9ohd*>mVST3wMo)){`B(&eX z1?zZJ-4u9NZ|~j1rdZYq4R$?swf}<6(#ex%7r{kh%U@kT)&kWuAszS%oJts=*OcL9 zaZwK<5DZw%1IFHXgFplP6JiL^dk8+SgM$D?8X+gE4172hXh!WeqIO>}$I9?Nry$*S zQ#f)RuH{P7RwA3v9f<-w>{PSzom;>(i&^l{E0(&Xp4A-*q-@{W1oE3K;1zb{&n28dSC2$N+6auXe0}e4b z)KLJ?5c*>@9K#I^)W;uU_Z`enquTUxr>mNq z1{0_puF-M7j${rs!dxxo3EelGodF1TvjV;Zpo;s{5f1pyCuRp=HDZ?s#IA4f?h|-p zGd|Mq^4hDa@Bh!c4ZE?O&x&XZ_ptZGYK4$9F4~{%R!}G1leCBx`dtNUS|K zL-7J5s4W@%mhXg1!}a4PD%!t&Qn%f_oquRajn3@C*)`o&K9o7V6DwzVMEhjVdDJ1fjhr#@=lp#@4EBqi=CCQ>73>R(>QKPNM&_Jpe5G`n4wegeC`FYEPJ{|vwS>$-`fuRSp3927qOv|NC3T3G-0 zA{K`|+tQy1yqE$ShWt8ny&5~)%ITb@^+x$w0)f&om;P8B)@}=Wzy59BwUfZ1vqw87 za2lB8J(&*l#(V}Id8SyQ0C(2amzkz3EqG&Ed0Jq1)$|&>4_|NIe=5|n=3?siFV0fI z{As5DLW^gs|B-b4C;Hd(SM-S~GQhzb>HgF2|2Usww0nL^;x@1eaB)=+Clj+$fF@H( z-fqP??~QMT$KI-#m;QC*&6vkp&8699G3)Bq0*kFZXINw=b9OVaed(3(3kS|IZ)CM? zJdnW&%t8MveBuK21uiYj)_a{Fnw0OErMzMN?d$QoPwkhOwcP&p+t>P)4tHlYw-pPN z^oJ=uc$Sl>pv@fZH~ZqxSvdhF@F1s=oZawpr^-#l{IIOGG=T%QXjtwPhIg-F@k@uIlr?J->Ia zpEUQ*=4g|XYn4Gez&aHr*;t$u3oODPmc2Ku)2Og|xjc%w;q!Zz+zY)*3{7V8bK4;& zYV82FZ+8?v)`J|G1w4I0fWdKg|2b#iaazCv;|?(W-q}$o&Y}Q5d@BRk^jL7#{kbCK zSgkyu;=DV+or2)AxCBgq-nj5=@n^`%T#V+xBGEkW4lCqrE)LMv#f;AvD__cQ@Eg3`~x| zW+h9mofSXCq5|M)9|ez(#X?-sxB%Go8};sJ?2abp(Y!lyi>k)|{M*Z$c{e1-K4ky` MPgg&ebxsLQ025IeI{*Lx diff --git a/null_safety/null_safe_app/web/index.html b/null_safety/null_safe_app/web/index.html deleted file mode 100644 index eb8c28732..000000000 --- a/null_safety/null_safe_app/web/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - null_safe_app - - - - - - - - - - diff --git a/null_safety/null_safe_app/web/manifest.json b/null_safety/null_safe_app/web/manifest.json deleted file mode 100644 index 4d9c52aba..000000000 --- a/null_safety/null_safe_app/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "null_safe_app", - "short_name": "null_safe_app", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "A new Flutter project.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "icons/Icon-maskable-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "icons/Icon-maskable-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -} diff --git a/null_safety/null_safe_app/windows/.gitignore b/null_safety/null_safe_app/windows/.gitignore deleted file mode 100644 index d492d0d98..000000000 --- a/null_safety/null_safe_app/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ephemeral/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/null_safety/null_safe_app/windows/CMakeLists.txt b/null_safety/null_safe_app/windows/CMakeLists.txt deleted file mode 100644 index b605a2c66..000000000 --- a/null_safety/null_safe_app/windows/CMakeLists.txt +++ /dev/null @@ -1,101 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project(null_safe_app LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "null_safe_app") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Define build configuration option. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") - endif() -endif() -# Define settings for the Profile build mode. -set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_17) - target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner") - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/null_safety/null_safe_app/windows/flutter/CMakeLists.txt b/null_safety/null_safe_app/windows/flutter/CMakeLists.txt deleted file mode 100644 index 930d2071a..000000000 --- a/null_safety/null_safe_app/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,104 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.14) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/null_safety/null_safe_app/windows/flutter/generated_plugin_registrant.cc b/null_safety/null_safe_app/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 9372fc507..000000000 --- a/null_safety/null_safe_app/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void RegisterPlugins(flutter::PluginRegistry* registry) { - WindowSizePluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("WindowSizePlugin")); -} diff --git a/null_safety/null_safe_app/windows/flutter/generated_plugin_registrant.h b/null_safety/null_safe_app/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85a..000000000 --- a/null_safety/null_safe_app/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/null_safety/null_safe_app/windows/flutter/generated_plugins.cmake b/null_safety/null_safe_app/windows/flutter/generated_plugins.cmake deleted file mode 100644 index ff2147b2c..000000000 --- a/null_safety/null_safe_app/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - window_size -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/null_safety/null_safe_app/windows/runner/CMakeLists.txt b/null_safety/null_safe_app/windows/runner/CMakeLists.txt deleted file mode 100644 index 17411a8ab..000000000 --- a/null_safety/null_safe_app/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(runner LANGUAGES CXX) - -# Define the application target. To change its name, change BINARY_NAME in the -# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer -# work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} WIN32 - "flutter_window.cpp" - "main.cpp" - "utils.cpp" - "win32_window.cpp" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - "Runner.rc" - "runner.exe.manifest" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add preprocessor definitions for the build version. -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") - -# Disable Windows macros that collide with C++ standard library functions. -target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") - -# Add dependency libraries and include directories. Add any application-specific -# dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) -target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/null_safety/null_safe_app/windows/runner/Runner.rc b/null_safety/null_safe_app/windows/runner/Runner.rc deleted file mode 100644 index 19015b18c..000000000 --- a/null_safety/null_safe_app/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APP_ICON ICON "resources\\app_icon.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) -#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD -#else -#define VERSION_AS_NUMBER 1,0,0,0 -#endif - -#if defined(FLUTTER_VERSION) -#define VERSION_AS_STRING FLUTTER_VERSION -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "null_safe_app" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "null_safe_app" "\0" - VALUE "LegalCopyright", "Copyright (C) 2022 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "null_safe_app.exe" "\0" - VALUE "ProductName", "null_safe_app" "\0" - VALUE "ProductVersion", VERSION_AS_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/null_safety/null_safe_app/windows/runner/flutter_window.cpp b/null_safety/null_safe_app/windows/runner/flutter_window.cpp deleted file mode 100644 index b43b9095e..000000000 --- a/null_safety/null_safe_app/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - return true; -} - -void FlutterWindow::OnDestroy() { - if (flutter_controller_) { - flutter_controller_ = nullptr; - } - - Win32Window::OnDestroy(); -} - -LRESULT -FlutterWindow::MessageHandler(HWND hwnd, UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - // Give Flutter, including plugins, an opportunity to handle window messages. - if (flutter_controller_) { - std::optional result = - flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, - lparam); - if (result) { - return *result; - } - } - - switch (message) { - case WM_FONTCHANGE: - flutter_controller_->engine()->ReloadSystemFonts(); - break; - } - - return Win32Window::MessageHandler(hwnd, message, wparam, lparam); -} diff --git a/null_safety/null_safe_app/windows/runner/flutter_window.h b/null_safety/null_safe_app/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652f0..000000000 --- a/null_safety/null_safe_app/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RUNNER_FLUTTER_WINDOW_H_ -#define RUNNER_FLUTTER_WINDOW_H_ - -#include -#include - -#include - -#include "win32_window.h" - -// A window that does nothing but host a Flutter view. -class FlutterWindow : public Win32Window { - public: - // Creates a new FlutterWindow hosting a Flutter view running |project|. - explicit FlutterWindow(const flutter::DartProject& project); - virtual ~FlutterWindow(); - - protected: - // Win32Window: - bool OnCreate() override; - void OnDestroy() override; - LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, - LPARAM const lparam) noexcept override; - - private: - // The project to run. - flutter::DartProject project_; - - // The Flutter instance hosted by this window. - std::unique_ptr flutter_controller_; -}; - -#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/null_safety/null_safe_app/windows/runner/main.cpp b/null_safety/null_safe_app/windows/runner/main.cpp deleted file mode 100644 index 9f77eb72a..000000000 --- a/null_safety/null_safe_app/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.CreateAndShow(L"null_safe_app", origin, size)) { - return EXIT_FAILURE; - } - window.SetQuitOnClose(true); - - ::MSG msg; - while (::GetMessage(&msg, nullptr, 0, 0)) { - ::TranslateMessage(&msg); - ::DispatchMessage(&msg); - } - - ::CoUninitialize(); - return EXIT_SUCCESS; -} diff --git a/null_safety/null_safe_app/windows/runner/resource.h b/null_safety/null_safe_app/windows/runner/resource.h deleted file mode 100644 index 66a65d1e4..000000000 --- a/null_safety/null_safe_app/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Runner.rc -// -#define IDI_APP_ICON 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/null_safety/null_safe_app/windows/runner/resources/app_icon.ico b/null_safety/null_safe_app/windows/runner/resources/app_icon.ico deleted file mode 100644 index c04e20caf6370ebb9253ad831cc31de4a9c965f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33772 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 diff --git a/null_safety/null_safe_app/windows/runner/runner.exe.manifest b/null_safety/null_safe_app/windows/runner/runner.exe.manifest deleted file mode 100644 index a42ea7687..000000000 --- a/null_safety/null_safe_app/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/null_safety/null_safe_app/windows/runner/utils.cpp b/null_safety/null_safe_app/windows/runner/utils.cpp deleted file mode 100644 index f5bf9fa0f..000000000 --- a/null_safety/null_safe_app/windows/runner/utils.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::string(); - } - int target_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr); - std::string utf8_string; - if (target_length == 0 || target_length > utf8_string.max_size()) { - return utf8_string; - } - utf8_string.resize(target_length); - int converted_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, utf8_string.data(), - target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/null_safety/null_safe_app/windows/runner/utils.h b/null_safety/null_safe_app/windows/runner/utils.h deleted file mode 100644 index 3879d5475..000000000 --- a/null_safety/null_safe_app/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RUNNER_UTILS_H_ -#define RUNNER_UTILS_H_ - -#include -#include - -// Creates a console for the process, and redirects stdout and stderr to -// it for both the runner and the Flutter library. -void CreateAndAttachConsole(); - -// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string -// encoded in UTF-8. Returns an empty std::string on failure. -std::string Utf8FromUtf16(const wchar_t* utf16_string); - -// Gets the command line arguments passed in as a std::vector, -// encoded in UTF-8. Returns an empty std::vector on failure. -std::vector GetCommandLineArguments(); - -#endif // RUNNER_UTILS_H_ diff --git a/null_safety/null_safe_app/windows/runner/win32_window.cpp b/null_safety/null_safe_app/windows/runner/win32_window.cpp deleted file mode 100644 index c10f08dc7..000000000 --- a/null_safety/null_safe_app/windows/runner/win32_window.cpp +++ /dev/null @@ -1,245 +0,0 @@ -#include "win32_window.h" - -#include - -#include "resource.h" - -namespace { - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - FreeLibrary(user32_module); - } -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registar instance. - static WindowClassRegistrar* GetInstance() { - if (!instance_) { - instance_ = new WindowClassRegistrar(); - } - return instance_; - } - - // Returns the name of the window class, registering the class if it hasn't - // previously been registered. - const wchar_t* GetWindowClass(); - - // Unregisters the window class. Should only be called if there are no - // instances of the window. - void UnregisterWindowClass(); - - private: - WindowClassRegistrar() = default; - - static WindowClassRegistrar* instance_; - - bool class_registered_ = false; -}; - -WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; - -const wchar_t* WindowClassRegistrar::GetWindowClass() { - if (!class_registered_) { - WNDCLASS window_class{}; - window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); - window_class.lpszClassName = kWindowClassName; - window_class.style = CS_HREDRAW | CS_VREDRAW; - window_class.cbClsExtra = 0; - window_class.cbWndExtra = 0; - window_class.hInstance = GetModuleHandle(nullptr); - window_class.hIcon = - LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); - window_class.hbrBackground = 0; - window_class.lpszMenuName = nullptr; - window_class.lpfnWndProc = Win32Window::WndProc; - RegisterClass(&window_class); - class_registered_ = true; - } - return kWindowClassName; -} - -void WindowClassRegistrar::UnregisterWindowClass() { - UnregisterClass(kWindowClassName, nullptr); - class_registered_ = false; -} - -Win32Window::Win32Window() { - ++g_active_window_count; -} - -Win32Window::~Win32Window() { - --g_active_window_count; - Destroy(); -} - -bool Win32Window::CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size) { - Destroy(); - - const wchar_t* window_class = - WindowClassRegistrar::GetInstance()->GetWindowClass(); - - const POINT target_point = {static_cast(origin.x), - static_cast(origin.y)}; - HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); - UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); - double scale_factor = dpi / 96.0; - - HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, - Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), - Scale(size.width, scale_factor), Scale(size.height, scale_factor), - nullptr, nullptr, GetModuleHandle(nullptr), this); - - if (!window) { - return false; - } - - return OnCreate(); -} - -// static -LRESULT CALLBACK Win32Window::WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - if (message == WM_NCCREATE) { - auto window_struct = reinterpret_cast(lparam); - SetWindowLongPtr(window, GWLP_USERDATA, - reinterpret_cast(window_struct->lpCreateParams)); - - auto that = static_cast(window_struct->lpCreateParams); - EnableFullDpiSupportIfAvailable(window); - that->window_handle_ = window; - } else if (Win32Window* that = GetThisFromHandle(window)) { - return that->MessageHandler(window, message, wparam, lparam); - } - - return DefWindowProc(window, message, wparam, lparam); -} - -LRESULT -Win32Window::MessageHandler(HWND hwnd, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - switch (message) { - case WM_DESTROY: - window_handle_ = nullptr; - Destroy(); - if (quit_on_close_) { - PostQuitMessage(0); - } - return 0; - - case WM_DPICHANGED: { - auto newRectSize = reinterpret_cast(lparam); - LONG newWidth = newRectSize->right - newRectSize->left; - LONG newHeight = newRectSize->bottom - newRectSize->top; - - SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, - newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; - } - case WM_SIZE: { - RECT rect = GetClientArea(); - if (child_content_ != nullptr) { - // Size and position the child window. - MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, - rect.bottom - rect.top, TRUE); - } - return 0; - } - - case WM_ACTIVATE: - if (child_content_ != nullptr) { - SetFocus(child_content_); - } - return 0; - } - - return DefWindowProc(window_handle_, message, wparam, lparam); -} - -void Win32Window::Destroy() { - OnDestroy(); - - if (window_handle_) { - DestroyWindow(window_handle_); - window_handle_ = nullptr; - } - if (g_active_window_count == 0) { - WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); - } -} - -Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { - return reinterpret_cast( - GetWindowLongPtr(window, GWLP_USERDATA)); -} - -void Win32Window::SetChildContent(HWND content) { - child_content_ = content; - SetParent(content, window_handle_); - RECT frame = GetClientArea(); - - MoveWindow(content, frame.left, frame.top, frame.right - frame.left, - frame.bottom - frame.top, true); - - SetFocus(child_content_); -} - -RECT Win32Window::GetClientArea() { - RECT frame; - GetClientRect(window_handle_, &frame); - return frame; -} - -HWND Win32Window::GetHandle() { - return window_handle_; -} - -void Win32Window::SetQuitOnClose(bool quit_on_close) { - quit_on_close_ = quit_on_close; -} - -bool Win32Window::OnCreate() { - // No-op; provided for subclasses. - return true; -} - -void Win32Window::OnDestroy() { - // No-op; provided for subclasses. -} diff --git a/null_safety/null_safe_app/windows/runner/win32_window.h b/null_safety/null_safe_app/windows/runner/win32_window.h deleted file mode 100644 index 17ba43112..000000000 --- a/null_safety/null_safe_app/windows/runner/win32_window.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates and shows a win32 window with |title| and position and size using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size to will treat the width height passed in to this function - // as logical pixels and scale to appropriate for the default monitor. Returns - // true if the window was created successfully. - bool CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responsponds to changes in DPI. All other messages are handled by - // MessageHandler. - static LRESULT CALLBACK WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Retrieves a class instance pointer for |window| - static Win32Window* GetThisFromHandle(HWND const window) noexcept; - - bool quit_on_close_ = false; - - // window handle for top level window. - HWND window_handle_ = nullptr; - - // window handle for hosted content. - HWND child_content_ = nullptr; -}; - -#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/null_safety/null_unsafe_app/.gitignore b/null_safety/null_unsafe_app/.gitignore deleted file mode 100644 index 0fa6b675c..000000000 --- a/null_safety/null_unsafe_app/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Web related -lib/generated_plugin_registrant.dart - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/null_safety/null_unsafe_app/.metadata b/null_safety/null_unsafe_app/.metadata deleted file mode 100644 index 31b763f97..000000000 --- a/null_safety/null_unsafe_app/.metadata +++ /dev/null @@ -1,45 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled. - -version: - revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - channel: stable - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: android - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: ios - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: linux - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: macos - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: web - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - platform: windows - create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 - - # User provided section - - # List of Local paths (relative to this file) that should be - # ignored by the migrate tool. - # - # Files that are not part of the templates will be ignored by default. - unmanaged_files: - - 'lib/main.dart' - - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/null_safety/null_unsafe_app/README.md b/null_safety/null_unsafe_app/README.md deleted file mode 100644 index 662da0aa6..000000000 --- a/null_safety/null_unsafe_app/README.md +++ /dev/null @@ -1,2 +0,0 @@ -For instructions, please see the README.md file located in the directory above this. - diff --git a/null_safety/null_unsafe_app/analysis_options.yaml b/null_safety/null_unsafe_app/analysis_options.yaml deleted file mode 100644 index f04c6cf0f..000000000 --- a/null_safety/null_unsafe_app/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: ../../analysis_options.yaml diff --git a/null_safety/null_unsafe_app/android/.gitignore b/null_safety/null_unsafe_app/android/.gitignore deleted file mode 100644 index 6f568019d..000000000 --- a/null_safety/null_unsafe_app/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/null_safety/null_unsafe_app/android/app/build.gradle b/null_safety/null_unsafe_app/android/app/build.gradle deleted file mode 100644 index 31f017e83..000000000 --- a/null_safety/null_unsafe_app/android/app/build.gradle +++ /dev/null @@ -1,71 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.null_unsafe_app" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/null_safety/null_unsafe_app/android/app/src/debug/AndroidManifest.xml b/null_safety/null_unsafe_app/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index fbb68b7c5..000000000 --- a/null_safety/null_unsafe_app/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/null_safety/null_unsafe_app/android/app/src/main/AndroidManifest.xml b/null_safety/null_unsafe_app/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 481a51c13..000000000 --- a/null_safety/null_unsafe_app/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - diff --git a/null_safety/null_unsafe_app/android/app/src/main/kotlin/com/example/null_unsafe_app/MainActivity.kt b/null_safety/null_unsafe_app/android/app/src/main/kotlin/com/example/null_unsafe_app/MainActivity.kt deleted file mode 100644 index 7e2e90d31..000000000 --- a/null_safety/null_unsafe_app/android/app/src/main/kotlin/com/example/null_unsafe_app/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.null_unsafe_app - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/null_safety/null_unsafe_app/android/app/src/main/res/drawable-v21/launch_background.xml b/null_safety/null_unsafe_app/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f3f..000000000 --- a/null_safety/null_unsafe_app/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/null_safety/null_unsafe_app/android/app/src/main/res/drawable/launch_background.xml b/null_safety/null_unsafe_app/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f88..000000000 --- a/null_safety/null_unsafe_app/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/null_safety/null_unsafe_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/null_safety/null_unsafe_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/null_safety/null_unsafe_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/null_safety/null_unsafe_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/null_safety/null_unsafe_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/null_safety/null_unsafe_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/null_safety/null_unsafe_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/null_safety/null_unsafe_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eebdb28e45604e46eeda8dd24651419bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/null_safety/null_unsafe_app/android/app/src/main/res/values-night/styles.xml b/null_safety/null_unsafe_app/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be74..000000000 --- a/null_safety/null_unsafe_app/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/null_safety/null_unsafe_app/android/app/src/main/res/values/styles.xml b/null_safety/null_unsafe_app/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef8805..000000000 --- a/null_safety/null_unsafe_app/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/null_safety/null_unsafe_app/android/app/src/profile/AndroidManifest.xml b/null_safety/null_unsafe_app/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index fbb68b7c5..000000000 --- a/null_safety/null_unsafe_app/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/null_safety/null_unsafe_app/android/build.gradle b/null_safety/null_unsafe_app/android/build.gradle deleted file mode 100644 index 83ae22004..000000000 --- a/null_safety/null_unsafe_app/android/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -buildscript { - ext.kotlin_version = '1.6.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/null_safety/null_unsafe_app/android/gradle.properties b/null_safety/null_unsafe_app/android/gradle.properties deleted file mode 100644 index 94adc3a3f..000000000 --- a/null_safety/null_unsafe_app/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.useAndroidX=true -android.enableJetifier=true diff --git a/null_safety/null_unsafe_app/android/gradle/wrapper/gradle-wrapper.properties b/null_safety/null_unsafe_app/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index cb24abda1..000000000 --- a/null_safety/null_unsafe_app/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/null_safety/null_unsafe_app/android/settings.gradle b/null_safety/null_unsafe_app/android/settings.gradle deleted file mode 100644 index 44e62bcf0..000000000 --- a/null_safety/null_unsafe_app/android/settings.gradle +++ /dev/null @@ -1,11 +0,0 @@ -include ':app' - -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() - -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } - -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/null_safety/null_unsafe_app/ios/.gitignore b/null_safety/null_unsafe_app/ios/.gitignore deleted file mode 100644 index 7a7f9873a..000000000 --- a/null_safety/null_unsafe_app/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/null_safety/null_unsafe_app/ios/Flutter/AppFrameworkInfo.plist b/null_safety/null_unsafe_app/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 9625e105d..000000000 --- a/null_safety/null_unsafe_app/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 - - diff --git a/null_safety/null_unsafe_app/ios/Flutter/Debug.xcconfig b/null_safety/null_unsafe_app/ios/Flutter/Debug.xcconfig deleted file mode 100644 index ec97fc6f3..000000000 --- a/null_safety/null_unsafe_app/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/null_safety/null_unsafe_app/ios/Flutter/Release.xcconfig b/null_safety/null_unsafe_app/ios/Flutter/Release.xcconfig deleted file mode 100644 index c4855bfe2..000000000 --- a/null_safety/null_unsafe_app/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/null_safety/null_unsafe_app/ios/Podfile b/null_safety/null_unsafe_app/ios/Podfile deleted file mode 100644 index 88359b225..000000000 --- a/null_safety/null_unsafe_app/ios/Podfile +++ /dev/null @@ -1,41 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '11.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.pbxproj b/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 981d5d0db..000000000 --- a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,531 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 8748D946026204182E6B40D0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FFEE57B373485B4E5061F1D /* Pods_Runner.framework */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 225928EB6BEF9C71BAA174AC /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7D2BD6112A0848868742BAE5 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9FFEE57B373485B4E5061F1D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D7F95606AB9D77667850CC96 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8748D946026204182E6B40D0 /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 13317245121AEC564850999A /* Frameworks */ = { - isa = PBXGroup; - children = ( - 9FFEE57B373485B4E5061F1D /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 153F4A5B2684EF7375FE2B98 /* Pods */ = { - isa = PBXGroup; - children = ( - 7D2BD6112A0848868742BAE5 /* Pods-Runner.debug.xcconfig */, - D7F95606AB9D77667850CC96 /* Pods-Runner.release.xcconfig */, - 225928EB6BEF9C71BAA174AC /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - 153F4A5B2684EF7375FE2B98 /* Pods */, - 13317245121AEC564850999A /* Frameworks */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - AFA824A7938C6B95337017B3 /* [CP] Check Pods Manifest.lock */, - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; - AFA824A7938C6B95337017B3 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.nullUnsafeApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.nullUnsafeApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.nullUnsafeApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/null_safety/null_unsafe_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index c87d15a33..000000000 --- a/null_safety/null_unsafe_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_unsafe_app/ios/Runner.xcworkspace/contents.xcworkspacedata b/null_safety/null_unsafe_app/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c..000000000 --- a/null_safety/null_unsafe_app/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/null_safety/null_unsafe_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/null_safety/null_unsafe_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/null_safety/null_unsafe_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/null_safety/null_unsafe_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/null_safety/null_unsafe_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/null_safety/null_unsafe_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/null_safety/null_unsafe_app/ios/Runner/AppDelegate.swift b/null_safety/null_unsafe_app/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4a8..000000000 --- a/null_safety/null_unsafe_app/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fab2..000000000 --- a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index f091b6b0bca859a3f474b03065bef75ba58a9e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index d0ef06e7edb86cdfe0d15b4b0d98334a86163658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 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 diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index c8f9ed8f5cee1c98386d13b17e89f719e83555b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3831 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 diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b7..000000000 --- a/null_safety/null_unsafe_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/null_safety/null_unsafe_app/ios/Runner/Base.lproj/LaunchScreen.storyboard b/null_safety/null_unsafe_app/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c7c..000000000 --- a/null_safety/null_unsafe_app/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_unsafe_app/ios/Runner/Base.lproj/Main.storyboard b/null_safety/null_unsafe_app/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c28516f..000000000 --- a/null_safety/null_unsafe_app/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_unsafe_app/ios/Runner/Info.plist b/null_safety/null_unsafe_app/ios/Runner/Info.plist deleted file mode 100644 index 4c5babf2b..000000000 --- a/null_safety/null_unsafe_app/ios/Runner/Info.plist +++ /dev/null @@ -1,51 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Null Unsafe App - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - null_unsafe_app - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - - diff --git a/null_safety/null_unsafe_app/ios/Runner/Runner-Bridging-Header.h b/null_safety/null_unsafe_app/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a560..000000000 --- a/null_safety/null_unsafe_app/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/null_safety/null_unsafe_app/lib/main.dart b/null_safety/null_unsafe_app/lib/main.dart deleted file mode 100644 index f2397dced..000000000 --- a/null_safety/null_unsafe_app/lib/main.dart +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:window_size/window_size.dart'; - -void main() { - setupWindow(); - runApp(const MyApp()); -} - -const double windowWidth = 400; -const double windowHeight = 400; - -void setupWindow() { - if (!kIsWeb && (Platform.isWindows || Platform.isLinux || Platform.isMacOS)) { - WidgetsFlutterBinding.ensureInitialized(); - setWindowTitle('Weather'); - setWindowMinSize(const Size(windowWidth, windowHeight)); - } -} - -// This app simulates possible null errors. Try running it and see if it fails. -// You can then try to hot reload a few times; you should see it occasionally -// failing and occasionally succeeding. -class MyApp extends StatelessWidget { - const MyApp({Key key}) : super(key: key); - - @override - Widget build(BuildContext context) { - // Get data from services. Note: in a real application, - // these would be async calls, but we’re using sync calls - // for simplicity. - final localizedAppName = Config.getAppName(); - final temperatures = WeatherService.getTemperatures(); - - return MaterialApp( - home: Scaffold( - appBar: AppBar(title: Text(localizedAppName)), - body: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text('Temperature next 3 days:'), - for (final t in temperatures) Text(t.round().toString()), - ], - ), - ), - ), - ); - } -} - -class Config { - static String getAppName() { - // Imagine this looks up a localized version of the app name. We're using - // the current time to simulate a variance in responses. - if (DateTime.now().second.isEven) { - return 'Weather forecast'; - } else { - // Oops, we don't have a localization. - return null; - } - } -} - -class WeatherService { - static List getTemperatures() { - // Imagine this makes a network call to get the current temperature. - // We're using the current time to simulate a variance in responses. - if (DateTime.now().millisecond.isEven) { - return [32.2, 34.5, 31.0]; - } else { - if ((DateTime.now().second / 10).round().isEven) { - // Oops, we couldn't get any temperatures. - return null; - } else { - // Oops, we couldn't get one of the temperatures. - return [32.2, 34.5, null, 31.0]; - } - } - } -} diff --git a/null_safety/null_unsafe_app/linux/.gitignore b/null_safety/null_unsafe_app/linux/.gitignore deleted file mode 100644 index d3896c984..000000000 --- a/null_safety/null_unsafe_app/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/null_safety/null_unsafe_app/linux/CMakeLists.txt b/null_safety/null_unsafe_app/linux/CMakeLists.txt deleted file mode 100644 index 46193750d..000000000 --- a/null_safety/null_unsafe_app/linux/CMakeLists.txt +++ /dev/null @@ -1,138 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.10) -project(runner LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "null_unsafe_app") -# The unique GTK application identifier for this application. See: -# https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.null_unsafe_app") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Load bundled libraries from the lib/ directory relative to the binary. -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Root filesystem for cross-building. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# Define build configuration options. -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -endif() - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_14) - target_compile_options(${TARGET} PRIVATE -Wall -Werror) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# Define the application target. To change its name, change BINARY_NAME above, -# not the value here, or `flutter run` will no longer work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add dependency libraries. Add any application-specific dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) - -# Only the install-generated bundle's copy of the executable will launch -# correctly, since the resources must in the right relative locations. To avoid -# people trying to run the unbundled copy, put it in a subdirectory instead of -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) - install(FILES "${bundled_library}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endforeach(bundled_library) - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") - install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() diff --git a/null_safety/null_unsafe_app/linux/flutter/CMakeLists.txt b/null_safety/null_unsafe_app/linux/flutter/CMakeLists.txt deleted file mode 100644 index d5bd01648..000000000 --- a/null_safety/null_unsafe_app/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.10) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. - -# Serves the same purpose as list(TRANSFORM ... PREPEND ...), -# which isn't available in 3.10. -function(list_prepend LIST_NAME PREFIX) - set(NEW_LIST "") - foreach(element ${${LIST_NAME}}) - list(APPEND NEW_LIST "${PREFIX}${element}") - endforeach(element) - set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) -endfunction() - -# === Flutter Library === -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) -pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) - -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "fl_basic_message_channel.h" - "fl_binary_codec.h" - "fl_binary_messenger.h" - "fl_dart_project.h" - "fl_engine.h" - "fl_json_message_codec.h" - "fl_json_method_codec.h" - "fl_message_codec.h" - "fl_method_call.h" - "fl_method_channel.h" - "fl_method_codec.h" - "fl_method_response.h" - "fl_plugin_registrar.h" - "fl_plugin_registry.h" - "fl_standard_message_codec.h" - "fl_standard_method_codec.h" - "fl_string_codec.h" - "fl_value.h" - "fl_view.h" - "flutter_linux.h" -) -list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") -target_link_libraries(flutter INTERFACE - PkgConfig::GTK - PkgConfig::GLIB - PkgConfig::GIO -) -add_dependencies(flutter flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CMAKE_CURRENT_BINARY_DIR}/_phony_ - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" - ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} -) diff --git a/null_safety/null_unsafe_app/linux/flutter/generated_plugin_registrant.cc b/null_safety/null_unsafe_app/linux/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 9f8c70320..000000000 --- a/null_safety/null_unsafe_app/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void fl_register_plugins(FlPluginRegistry* registry) { - g_autoptr(FlPluginRegistrar) window_size_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "WindowSizePlugin"); - window_size_plugin_register_with_registrar(window_size_registrar); -} diff --git a/null_safety/null_unsafe_app/linux/flutter/generated_plugin_registrant.h b/null_safety/null_unsafe_app/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47bc..000000000 --- a/null_safety/null_unsafe_app/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/null_safety/null_unsafe_app/linux/flutter/generated_plugins.cmake b/null_safety/null_unsafe_app/linux/flutter/generated_plugins.cmake deleted file mode 100644 index 12c7443ed..000000000 --- a/null_safety/null_unsafe_app/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - window_size -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/null_safety/null_unsafe_app/linux/main.cc b/null_safety/null_unsafe_app/linux/main.cc deleted file mode 100644 index e7c5c5437..000000000 --- a/null_safety/null_unsafe_app/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/null_safety/null_unsafe_app/linux/my_application.cc b/null_safety/null_unsafe_app/linux/my_application.cc deleted file mode 100644 index a35191577..000000000 --- a/null_safety/null_unsafe_app/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#endif - -#include "flutter/generated_plugin_registrant.h" - -struct _MyApplication { - GtkApplication parent_instance; - char** dart_entrypoint_arguments; -}; - -G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) - -// Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = - GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "null_unsafe_app"); - gtk_header_bar_set_show_close_button(header_bar, TRUE); - gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { - gtk_window_set_title(window, "null_unsafe_app"); - } - - gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); - - g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - - FlView* view = fl_view_new(project); - gtk_widget_show(GTK_WIDGET(view)); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); - - fl_register_plugins(FL_PLUGIN_REGISTRY(view)); - - gtk_widget_grab_focus(GTK_WIDGET(view)); -} - -// Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); - // Strip out the first argument as it is the binary name. - self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); - - g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; - } - - g_application_activate(application); - *exit_status = 0; - - return TRUE; -} - -// Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); - g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); - G_OBJECT_CLASS(my_application_parent_class)->dispose(object); -} - -static void my_application_class_init(MyApplicationClass* klass) { - G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; - G_OBJECT_CLASS(klass)->dispose = my_application_dispose; -} - -static void my_application_init(MyApplication* self) {} - -MyApplication* my_application_new() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/null_safety/null_unsafe_app/linux/my_application.h b/null_safety/null_unsafe_app/linux/my_application.h deleted file mode 100644 index 72271d5e4..000000000 --- a/null_safety/null_unsafe_app/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, - GtkApplication) - -/** - * my_application_new: - * - * Creates a new Flutter-based application. - * - * Returns: a new #MyApplication. - */ -MyApplication* my_application_new(); - -#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/null_safety/null_unsafe_app/macos/.gitignore b/null_safety/null_unsafe_app/macos/.gitignore deleted file mode 100644 index 746adbb6b..000000000 --- a/null_safety/null_unsafe_app/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/null_safety/null_unsafe_app/macos/Flutter/Flutter-Debug.xcconfig b/null_safety/null_unsafe_app/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index 4b81f9b2d..000000000 --- a/null_safety/null_unsafe_app/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/null_safety/null_unsafe_app/macos/Flutter/Flutter-Release.xcconfig b/null_safety/null_unsafe_app/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index 5caa9d157..000000000 --- a/null_safety/null_unsafe_app/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/null_safety/null_unsafe_app/macos/Flutter/GeneratedPluginRegistrant.swift b/null_safety/null_unsafe_app/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index f5cde84ba..000000000 --- a/null_safety/null_unsafe_app/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - -import window_size - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - WindowSizePlugin.register(with: registry.registrar(forPlugin: "WindowSizePlugin")) -} diff --git a/null_safety/null_unsafe_app/macos/Podfile b/null_safety/null_unsafe_app/macos/Podfile deleted file mode 100644 index dade8dfad..000000000 --- a/null_safety/null_unsafe_app/macos/Podfile +++ /dev/null @@ -1,40 +0,0 @@ -platform :osx, '10.11' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/null_safety/null_unsafe_app/macos/Runner.xcodeproj/project.pbxproj b/null_safety/null_unsafe_app/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 7861e3454..000000000 --- a/null_safety/null_unsafe_app/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,632 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 51; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Flutter Assemble"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 4B1E472DB008003D5636C564 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4354B5A5B5862CED4822998 /* Pods_Runner.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC111A2044C6BA0003C045; - remoteInfo = FLX; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 33CC110E2044A8840003C045 /* Bundle Framework */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Bundle Framework"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1B9537408EB3FEE4B0AEE516 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* null_unsafe_app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = null_unsafe_app.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 4D33662F95D9D5C943531E82 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A932BE5D41BE215305E5B0C9 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - E4354B5A5B5862CED4822998 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 4B1E472DB008003D5636C564 /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - D3DAC40E379FD525084BC6E1 /* Pods */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* null_unsafe_app.app */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - D3DAC40E379FD525084BC6E1 /* Pods */ = { - isa = PBXGroup; - children = ( - 1B9537408EB3FEE4B0AEE516 /* Pods-Runner.debug.xcconfig */, - 4D33662F95D9D5C943531E82 /* Pods-Runner.release.xcconfig */, - A932BE5D41BE215305E5B0C9 /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - E4354B5A5B5862CED4822998 /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 3E7306E97AD5FDE77D3B4A9A /* [CP] Check Pods Manifest.lock */, - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - B33DE5D9CCBBF38C7EB97138 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* null_unsafe_app.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 33CC10EC2044A3C60003C045 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.Sandbox = { - enabled = 1; - }; - }; - }; - 33CC111A2044C6BA0003C045 = { - CreatedOnToolsVersion = 9.2; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 33CC10E42044A3C60003C045; - productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 33CC10EC2044A3C60003C045 /* Runner */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 33CC10EB2044A3C60003C045 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; - }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, - ); - inputPaths = ( - Flutter/ephemeral/tripwire, - ); - outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; - }; - 3E7306E97AD5FDE77D3B4A9A /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - B33DE5D9CCBBF38C7EB97138 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 33CC10E92044A3C60003C045 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; - targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 33CC10F52044A3C60003C045 /* Base */, - ); - name = MainMenu.xib; - path = Runner; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 338D0CE9231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Profile; - }; - 338D0CEA231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Profile; - }; - 338D0CEB231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Profile; - }; - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 33CC10FA2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10F92044A3C60003C045 /* Debug */, - 33CC10FA2044A3C60003C045 /* Release */, - 338D0CE9231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10FC2044A3C60003C045 /* Debug */, - 33CC10FD2044A3C60003C045 /* Release */, - 338D0CEA231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC111C2044C6BA0003C045 /* Debug */, - 33CC111D2044C6BA0003C045 /* Release */, - 338D0CEB231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 33CC10E52044A3C60003C045 /* Project object */; -} diff --git a/null_safety/null_unsafe_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/null_safety/null_unsafe_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/null_safety/null_unsafe_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/null_safety/null_unsafe_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/null_safety/null_unsafe_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index c9e9d53fc..000000000 --- a/null_safety/null_unsafe_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_unsafe_app/macos/Runner.xcworkspace/contents.xcworkspacedata b/null_safety/null_unsafe_app/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c..000000000 --- a/null_safety/null_unsafe_app/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/null_safety/null_unsafe_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/null_safety/null_unsafe_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/null_safety/null_unsafe_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/null_safety/null_unsafe_app/macos/Runner/AppDelegate.swift b/null_safety/null_unsafe_app/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef6437..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f19..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" - }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 82b6f9d9a33e198f5747104729e1fcef999772a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY diff --git a/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index 13b35eba55c6dabc3aac36f33d859266c18fa0d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5680 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 diff --git a/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 0a3f5fa40fb3d1e0710331a48de5d256da3f275d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 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 diff --git a/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/null_safety/null_unsafe_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 2f1632cfddf3d9dade342351e627a0a75609fb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/null_safety/null_unsafe_app/macos/Runner/Configs/AppInfo.xcconfig b/null_safety/null_unsafe_app/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index 21c474ba8..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// Application-level settings for the Runner target. -// -// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the -// future. If not, the values below would default to using the project name when this becomes a -// 'flutter create' template. - -// The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = null_unsafe_app - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.example.nullUnsafeApp - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. diff --git a/null_safety/null_unsafe_app/macos/Runner/Configs/Debug.xcconfig b/null_safety/null_unsafe_app/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd946..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/null_safety/null_unsafe_app/macos/Runner/Configs/Release.xcconfig b/null_safety/null_unsafe_app/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f4956..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/null_safety/null_unsafe_app/macos/Runner/Configs/Warnings.xcconfig b/null_safety/null_unsafe_app/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf478..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings -GCC_WARN_UNDECLARED_SELECTOR = YES -CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES -CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES -CLANG_WARN_PRAGMA_PACK = YES -CLANG_WARN_STRICT_PROTOTYPES = YES -CLANG_WARN_COMMA = YES -GCC_WARN_STRICT_SELECTOR_MATCH = YES -CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES -CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES -GCC_WARN_SHADOW = YES -CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/null_safety/null_unsafe_app/macos/Runner/DebugProfile.entitlements b/null_safety/null_unsafe_app/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index dddb8a30c..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - - diff --git a/null_safety/null_unsafe_app/macos/Runner/Info.plist b/null_safety/null_unsafe_app/macos/Runner/Info.plist deleted file mode 100644 index 4789daa6a..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/null_safety/null_unsafe_app/macos/Runner/MainFlutterWindow.swift b/null_safety/null_unsafe_app/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 2722837ec..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController.init() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/null_safety/null_unsafe_app/macos/Runner/Release.entitlements b/null_safety/null_unsafe_app/macos/Runner/Release.entitlements deleted file mode 100644 index 852fa1a47..000000000 --- a/null_safety/null_unsafe_app/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/null_safety/null_unsafe_app/pubspec.yaml b/null_safety/null_unsafe_app/pubspec.yaml deleted file mode 100644 index a399d6f18..000000000 --- a/null_safety/null_unsafe_app/pubspec.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: null_unsafe_app -description: A new Flutter project. -publish_to: "none" # Remove this line if you wish to publish to pub.dev -version: 1.0.0+1 - -environment: - sdk: ">=2.7.0 <3.0.0" - -dependencies: - flutter: - sdk: flutter - cupertino_icons: ^1.0.0 - window_size: - git: - url: https://github.com/google/flutter-desktop-embedding.git - path: plugins/window_size - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.1 - -flutter: - uses-material-design: true diff --git a/null_safety/null_unsafe_app/test/widget_test.dart b/null_safety/null_unsafe_app/test/widget_test.dart deleted file mode 100644 index 331b1aa14..000000000 --- a/null_safety/null_unsafe_app/test/widget_test.dart +++ /dev/null @@ -1,14 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility that Flutter provides. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter_test/flutter_test.dart'; - -void main() { - testWidgets('Rendering the page throws an exception', (tester) async { - // Do nothing, running the app throws an exception on widget render. - }); -} diff --git a/null_safety/null_unsafe_app/web/favicon.png b/null_safety/null_unsafe_app/web/favicon.png deleted file mode 100644 index 8aaa46ac1ae21512746f852a42ba87e4165dfdd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM diff --git a/null_safety/null_unsafe_app/web/icons/Icon-192.png b/null_safety/null_unsafe_app/web/icons/Icon-192.png deleted file mode 100644 index b749bfef07473333cf1dd31e9eed89862a5d52aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5292 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 diff --git a/null_safety/null_unsafe_app/web/icons/Icon-512.png b/null_safety/null_unsafe_app/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48dff1169879ba46840804b412fe02fefd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8252 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 diff --git a/null_safety/null_unsafe_app/web/icons/Icon-maskable-192.png b/null_safety/null_unsafe_app/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d76e525556d5d89141648c724331630325d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! diff --git a/null_safety/null_unsafe_app/web/icons/Icon-maskable-512.png b/null_safety/null_unsafe_app/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c56691fbdb0b7efa65097c7cc1edac12a6d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20998 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 MPgg&ebxsLQ025IeI{*Lx diff --git a/null_safety/null_unsafe_app/web/index.html b/null_safety/null_unsafe_app/web/index.html deleted file mode 100644 index ce579f7dd..000000000 --- a/null_safety/null_unsafe_app/web/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - null_unsafe_app - - - - - - - - - - diff --git a/null_safety/null_unsafe_app/web/manifest.json b/null_safety/null_unsafe_app/web/manifest.json deleted file mode 100644 index 4f08c73b3..000000000 --- a/null_safety/null_unsafe_app/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "null_unsafe_app", - "short_name": "null_unsafe_app", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "A new Flutter project.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "icons/Icon-maskable-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "icons/Icon-maskable-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -} diff --git a/null_safety/null_unsafe_app/windows/.gitignore b/null_safety/null_unsafe_app/windows/.gitignore deleted file mode 100644 index d492d0d98..000000000 --- a/null_safety/null_unsafe_app/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ephemeral/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/null_safety/null_unsafe_app/windows/CMakeLists.txt b/null_safety/null_unsafe_app/windows/CMakeLists.txt deleted file mode 100644 index 7d3684157..000000000 --- a/null_safety/null_unsafe_app/windows/CMakeLists.txt +++ /dev/null @@ -1,101 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project(null_unsafe_app LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "null_unsafe_app") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Define build configuration option. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") - endif() -endif() -# Define settings for the Profile build mode. -set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_17) - target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner") - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/null_safety/null_unsafe_app/windows/flutter/CMakeLists.txt b/null_safety/null_unsafe_app/windows/flutter/CMakeLists.txt deleted file mode 100644 index 930d2071a..000000000 --- a/null_safety/null_unsafe_app/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,104 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.14) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/null_safety/null_unsafe_app/windows/flutter/generated_plugin_registrant.cc b/null_safety/null_unsafe_app/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 9372fc507..000000000 --- a/null_safety/null_unsafe_app/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void RegisterPlugins(flutter::PluginRegistry* registry) { - WindowSizePluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("WindowSizePlugin")); -} diff --git a/null_safety/null_unsafe_app/windows/flutter/generated_plugin_registrant.h b/null_safety/null_unsafe_app/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85a..000000000 --- a/null_safety/null_unsafe_app/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/null_safety/null_unsafe_app/windows/flutter/generated_plugins.cmake b/null_safety/null_unsafe_app/windows/flutter/generated_plugins.cmake deleted file mode 100644 index ff2147b2c..000000000 --- a/null_safety/null_unsafe_app/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - window_size -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/null_safety/null_unsafe_app/windows/runner/CMakeLists.txt b/null_safety/null_unsafe_app/windows/runner/CMakeLists.txt deleted file mode 100644 index 17411a8ab..000000000 --- a/null_safety/null_unsafe_app/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(runner LANGUAGES CXX) - -# Define the application target. To change its name, change BINARY_NAME in the -# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer -# work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} WIN32 - "flutter_window.cpp" - "main.cpp" - "utils.cpp" - "win32_window.cpp" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - "Runner.rc" - "runner.exe.manifest" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add preprocessor definitions for the build version. -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") - -# Disable Windows macros that collide with C++ standard library functions. -target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") - -# Add dependency libraries and include directories. Add any application-specific -# dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) -target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/null_safety/null_unsafe_app/windows/runner/Runner.rc b/null_safety/null_unsafe_app/windows/runner/Runner.rc deleted file mode 100644 index 38eaaed1f..000000000 --- a/null_safety/null_unsafe_app/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APP_ICON ICON "resources\\app_icon.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) -#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD -#else -#define VERSION_AS_NUMBER 1,0,0,0 -#endif - -#if defined(FLUTTER_VERSION) -#define VERSION_AS_STRING FLUTTER_VERSION -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "null_unsafe_app" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "null_unsafe_app" "\0" - VALUE "LegalCopyright", "Copyright (C) 2022 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "null_unsafe_app.exe" "\0" - VALUE "ProductName", "null_unsafe_app" "\0" - VALUE "ProductVersion", VERSION_AS_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/null_safety/null_unsafe_app/windows/runner/flutter_window.cpp b/null_safety/null_unsafe_app/windows/runner/flutter_window.cpp deleted file mode 100644 index b43b9095e..000000000 --- a/null_safety/null_unsafe_app/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - return true; -} - -void FlutterWindow::OnDestroy() { - if (flutter_controller_) { - flutter_controller_ = nullptr; - } - - Win32Window::OnDestroy(); -} - -LRESULT -FlutterWindow::MessageHandler(HWND hwnd, UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - // Give Flutter, including plugins, an opportunity to handle window messages. - if (flutter_controller_) { - std::optional result = - flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, - lparam); - if (result) { - return *result; - } - } - - switch (message) { - case WM_FONTCHANGE: - flutter_controller_->engine()->ReloadSystemFonts(); - break; - } - - return Win32Window::MessageHandler(hwnd, message, wparam, lparam); -} diff --git a/null_safety/null_unsafe_app/windows/runner/flutter_window.h b/null_safety/null_unsafe_app/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652f0..000000000 --- a/null_safety/null_unsafe_app/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RUNNER_FLUTTER_WINDOW_H_ -#define RUNNER_FLUTTER_WINDOW_H_ - -#include -#include - -#include - -#include "win32_window.h" - -// A window that does nothing but host a Flutter view. -class FlutterWindow : public Win32Window { - public: - // Creates a new FlutterWindow hosting a Flutter view running |project|. - explicit FlutterWindow(const flutter::DartProject& project); - virtual ~FlutterWindow(); - - protected: - // Win32Window: - bool OnCreate() override; - void OnDestroy() override; - LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, - LPARAM const lparam) noexcept override; - - private: - // The project to run. - flutter::DartProject project_; - - // The Flutter instance hosted by this window. - std::unique_ptr flutter_controller_; -}; - -#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/null_safety/null_unsafe_app/windows/runner/main.cpp b/null_safety/null_unsafe_app/windows/runner/main.cpp deleted file mode 100644 index d4aaea468..000000000 --- a/null_safety/null_unsafe_app/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.CreateAndShow(L"null_unsafe_app", origin, size)) { - return EXIT_FAILURE; - } - window.SetQuitOnClose(true); - - ::MSG msg; - while (::GetMessage(&msg, nullptr, 0, 0)) { - ::TranslateMessage(&msg); - ::DispatchMessage(&msg); - } - - ::CoUninitialize(); - return EXIT_SUCCESS; -} diff --git a/null_safety/null_unsafe_app/windows/runner/resource.h b/null_safety/null_unsafe_app/windows/runner/resource.h deleted file mode 100644 index 66a65d1e4..000000000 --- a/null_safety/null_unsafe_app/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Runner.rc -// -#define IDI_APP_ICON 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/null_safety/null_unsafe_app/windows/runner/resources/app_icon.ico b/null_safety/null_unsafe_app/windows/runner/resources/app_icon.ico deleted file mode 100644 index c04e20caf6370ebb9253ad831cc31de4a9c965f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33772 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 diff --git a/null_safety/null_unsafe_app/windows/runner/runner.exe.manifest b/null_safety/null_unsafe_app/windows/runner/runner.exe.manifest deleted file mode 100644 index a42ea7687..000000000 --- a/null_safety/null_unsafe_app/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/null_safety/null_unsafe_app/windows/runner/utils.cpp b/null_safety/null_unsafe_app/windows/runner/utils.cpp deleted file mode 100644 index f5bf9fa0f..000000000 --- a/null_safety/null_unsafe_app/windows/runner/utils.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::string(); - } - int target_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr); - std::string utf8_string; - if (target_length == 0 || target_length > utf8_string.max_size()) { - return utf8_string; - } - utf8_string.resize(target_length); - int converted_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, utf8_string.data(), - target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/null_safety/null_unsafe_app/windows/runner/utils.h b/null_safety/null_unsafe_app/windows/runner/utils.h deleted file mode 100644 index 3879d5475..000000000 --- a/null_safety/null_unsafe_app/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RUNNER_UTILS_H_ -#define RUNNER_UTILS_H_ - -#include -#include - -// Creates a console for the process, and redirects stdout and stderr to -// it for both the runner and the Flutter library. -void CreateAndAttachConsole(); - -// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string -// encoded in UTF-8. Returns an empty std::string on failure. -std::string Utf8FromUtf16(const wchar_t* utf16_string); - -// Gets the command line arguments passed in as a std::vector, -// encoded in UTF-8. Returns an empty std::vector on failure. -std::vector GetCommandLineArguments(); - -#endif // RUNNER_UTILS_H_ diff --git a/null_safety/null_unsafe_app/windows/runner/win32_window.cpp b/null_safety/null_unsafe_app/windows/runner/win32_window.cpp deleted file mode 100644 index c10f08dc7..000000000 --- a/null_safety/null_unsafe_app/windows/runner/win32_window.cpp +++ /dev/null @@ -1,245 +0,0 @@ -#include "win32_window.h" - -#include - -#include "resource.h" - -namespace { - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - FreeLibrary(user32_module); - } -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registar instance. - static WindowClassRegistrar* GetInstance() { - if (!instance_) { - instance_ = new WindowClassRegistrar(); - } - return instance_; - } - - // Returns the name of the window class, registering the class if it hasn't - // previously been registered. - const wchar_t* GetWindowClass(); - - // Unregisters the window class. Should only be called if there are no - // instances of the window. - void UnregisterWindowClass(); - - private: - WindowClassRegistrar() = default; - - static WindowClassRegistrar* instance_; - - bool class_registered_ = false; -}; - -WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; - -const wchar_t* WindowClassRegistrar::GetWindowClass() { - if (!class_registered_) { - WNDCLASS window_class{}; - window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); - window_class.lpszClassName = kWindowClassName; - window_class.style = CS_HREDRAW | CS_VREDRAW; - window_class.cbClsExtra = 0; - window_class.cbWndExtra = 0; - window_class.hInstance = GetModuleHandle(nullptr); - window_class.hIcon = - LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); - window_class.hbrBackground = 0; - window_class.lpszMenuName = nullptr; - window_class.lpfnWndProc = Win32Window::WndProc; - RegisterClass(&window_class); - class_registered_ = true; - } - return kWindowClassName; -} - -void WindowClassRegistrar::UnregisterWindowClass() { - UnregisterClass(kWindowClassName, nullptr); - class_registered_ = false; -} - -Win32Window::Win32Window() { - ++g_active_window_count; -} - -Win32Window::~Win32Window() { - --g_active_window_count; - Destroy(); -} - -bool Win32Window::CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size) { - Destroy(); - - const wchar_t* window_class = - WindowClassRegistrar::GetInstance()->GetWindowClass(); - - const POINT target_point = {static_cast(origin.x), - static_cast(origin.y)}; - HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); - UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); - double scale_factor = dpi / 96.0; - - HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, - Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), - Scale(size.width, scale_factor), Scale(size.height, scale_factor), - nullptr, nullptr, GetModuleHandle(nullptr), this); - - if (!window) { - return false; - } - - return OnCreate(); -} - -// static -LRESULT CALLBACK Win32Window::WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - if (message == WM_NCCREATE) { - auto window_struct = reinterpret_cast(lparam); - SetWindowLongPtr(window, GWLP_USERDATA, - reinterpret_cast(window_struct->lpCreateParams)); - - auto that = static_cast(window_struct->lpCreateParams); - EnableFullDpiSupportIfAvailable(window); - that->window_handle_ = window; - } else if (Win32Window* that = GetThisFromHandle(window)) { - return that->MessageHandler(window, message, wparam, lparam); - } - - return DefWindowProc(window, message, wparam, lparam); -} - -LRESULT -Win32Window::MessageHandler(HWND hwnd, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - switch (message) { - case WM_DESTROY: - window_handle_ = nullptr; - Destroy(); - if (quit_on_close_) { - PostQuitMessage(0); - } - return 0; - - case WM_DPICHANGED: { - auto newRectSize = reinterpret_cast(lparam); - LONG newWidth = newRectSize->right - newRectSize->left; - LONG newHeight = newRectSize->bottom - newRectSize->top; - - SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, - newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; - } - case WM_SIZE: { - RECT rect = GetClientArea(); - if (child_content_ != nullptr) { - // Size and position the child window. - MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, - rect.bottom - rect.top, TRUE); - } - return 0; - } - - case WM_ACTIVATE: - if (child_content_ != nullptr) { - SetFocus(child_content_); - } - return 0; - } - - return DefWindowProc(window_handle_, message, wparam, lparam); -} - -void Win32Window::Destroy() { - OnDestroy(); - - if (window_handle_) { - DestroyWindow(window_handle_); - window_handle_ = nullptr; - } - if (g_active_window_count == 0) { - WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); - } -} - -Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { - return reinterpret_cast( - GetWindowLongPtr(window, GWLP_USERDATA)); -} - -void Win32Window::SetChildContent(HWND content) { - child_content_ = content; - SetParent(content, window_handle_); - RECT frame = GetClientArea(); - - MoveWindow(content, frame.left, frame.top, frame.right - frame.left, - frame.bottom - frame.top, true); - - SetFocus(child_content_); -} - -RECT Win32Window::GetClientArea() { - RECT frame; - GetClientRect(window_handle_, &frame); - return frame; -} - -HWND Win32Window::GetHandle() { - return window_handle_; -} - -void Win32Window::SetQuitOnClose(bool quit_on_close) { - quit_on_close_ = quit_on_close; -} - -bool Win32Window::OnCreate() { - // No-op; provided for subclasses. - return true; -} - -void Win32Window::OnDestroy() { - // No-op; provided for subclasses. -} diff --git a/null_safety/null_unsafe_app/windows/runner/win32_window.h b/null_safety/null_unsafe_app/windows/runner/win32_window.h deleted file mode 100644 index 17ba43112..000000000 --- a/null_safety/null_unsafe_app/windows/runner/win32_window.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates and shows a win32 window with |title| and position and size using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size to will treat the width height passed in to this function - // as logical pixels and scale to appropriate for the default monitor. Returns - // true if the window was created successfully. - bool CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responsponds to changes in DPI. All other messages are handled by - // MessageHandler. - static LRESULT CALLBACK WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Retrieves a class instance pointer for |window| - static Win32Window* GetThisFromHandle(HWND const window) noexcept; - - bool quit_on_close_ = false; - - // window handle for top level window. - HWND window_handle_ = nullptr; - - // window handle for hosted content. - HWND child_content_ = nullptr; -}; - -#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index 555ed6c1a..ac937e5f6 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -37,8 +37,6 @@ declare -ar PROJECT_NAMES=( "jsonexample" "material_3_demo" "navigation_and_routing" - "null_safety/null_safe_app" - "null_safety/null_unsafe_app" "place_tracker" "platform_channels" "platform_design" diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index 5ac29bc8d..f7b16ffa3 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -35,8 +35,6 @@ declare -ar PROJECT_NAMES=( "jsonexample" "material_3_demo" "navigation_and_routing" - "null_safety/null_safe_app" - "null_safety/null_unsafe_app" "place_tracker" "platform_channels" "platform_design" diff --git a/tool/flutter_ci_script_stable.sh b/tool/flutter_ci_script_stable.sh index b8db87db8..8536e754b 100755 --- a/tool/flutter_ci_script_stable.sh +++ b/tool/flutter_ci_script_stable.sh @@ -31,8 +31,6 @@ declare -ar PROJECT_NAMES=( "jsonexample" "material_3_demo" "navigation_and_routing" - "null_safety/null_safe_app" - "null_safety/null_unsafe_app" "place_tracker" "platform_channels" "platform_design" From 0f6a83258c8951c68380baa98980a9b116a8f9d6 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Tue, 13 Dec 2022 00:07:37 +0100 Subject: [PATCH 057/134] Add go_router to form_app (#1522) * Add go_router to form_app * format * add trailing comas --- form_app/lib/main.dart | 33 +++++++++++++++++++++++++-------- form_app/pubspec.yaml | 1 + 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/form_app/lib/main.dart b/form_app/lib/main.dart index f2b5f3bcf..423b894b5 100644 --- a/form_app/lib/main.dart +++ b/form_app/lib/main.dart @@ -6,6 +6,7 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:window_size/window_size.dart'; import 'src/autofill.dart'; @@ -41,7 +42,7 @@ void setupWindow() { final demos = [ Demo( name: 'Sign in with HTTP', - route: '/signin_http', + route: 'signin_http', builder: (context) => SignInHttpDemo( // This sample uses a mock HTTP client. httpClient: mockClient, @@ -49,37 +50,53 @@ final demos = [ ), Demo( name: 'Autofill', - route: '/autofill', + route: 'autofill', builder: (context) => const AutofillDemo(), ), Demo( name: 'Form widgets', - route: '/form_widgets', + route: 'form_widgets', builder: (context) => const FormWidgetsDemo(), ), Demo( name: 'Validation', - route: '/validation', + route: 'validation', builder: (context) => const FormValidationDemo(), ), ]; +final router = GoRouter( + routes: [ + GoRoute( + path: '/', + builder: (context, state) => const HomePage(), + routes: [ + for (final demo in demos) + GoRoute( + path: demo.route, + builder: (context, state) => demo.builder(context), + ), + ], + ), + ], +); + class FormApp extends StatelessWidget { const FormApp({super.key}); @override Widget build(BuildContext context) { - return MaterialApp( + return MaterialApp.router( title: 'Form Samples', theme: ThemeData(primarySwatch: Colors.teal), - routes: Map.fromEntries(demos.map((d) => MapEntry(d.route, d.builder))), - home: const HomePage(), + routerConfig: router, ); } } class HomePage extends StatelessWidget { const HomePage({super.key}); + @override Widget build(BuildContext context) { return Scaffold( @@ -103,7 +120,7 @@ class DemoTile extends StatelessWidget { return ListTile( title: Text(demo!.name), onTap: () { - Navigator.pushNamed(context, demo!.route); + context.go('/${demo!.route}'); }, ); } diff --git a/form_app/pubspec.yaml b/form_app/pubspec.yaml index 9041639c1..ccd07cd85 100644 --- a/form_app/pubspec.yaml +++ b/form_app/pubspec.yaml @@ -18,6 +18,7 @@ dependencies: git: url: https://github.com/google/flutter-desktop-embedding.git path: plugins/window_size + go_router: ^5.2.4 dev_dependencies: flutter_test: From 69fa2c51a2193ac6833c9246a5a1f69b0b3565bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Dec 2022 18:54:15 +1100 Subject: [PATCH 058/134] Bump actions/checkout from 3.1.0 to 3.2.0 (#1523) --- .github/workflows/beta.yml | 6 +++--- .github/workflows/gh-pages.yml | 2 +- .github/workflows/main.yml | 6 +++--- .github/workflows/scorecards-analysis.yml | 2 +- .github/workflows/verify-web-demos.yml | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index 410079c21..49fde1374 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -26,7 +26,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'flutter/samples' steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' @@ -56,7 +56,7 @@ jobs: runs-on: macos-latest if: github.repository == 'flutter/samples' steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index ff2841d6e..508dfd00f 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b with: submodules: true fetch-depth: 0 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 054467dfb..f5b91f4ab 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,7 +27,7 @@ jobs: flutter_version: [stable, beta, master] os: [ubuntu-latest, macos-latest, windows-latest] steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'flutter/samples' steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' @@ -53,7 +53,7 @@ jobs: runs-on: macos-latest if: github.repository == 'flutter/samples' steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c with: distribution: 'zulu' diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index af9253010..e0ea6d6d7 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -22,7 +22,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b with: persist-credentials: false diff --git a/.github/workflows/verify-web-demos.yml b/.github/workflows/verify-web-demos.yml index 2a04a8fd3..8f0aef7b6 100644 --- a/.github/workflows/verify-web-demos.yml +++ b/.github/workflows/verify-web-demos.yml @@ -21,7 +21,7 @@ jobs: # - beta steps: - name: Checkout - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b with: submodules: true fetch-depth: 0 From 4ef8daffb6106833f3be46c3a755c6b42f8e7eae Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Tue, 13 Dec 2022 09:26:09 +0100 Subject: [PATCH 059/134] Migrate animations to go_router (#1521) --- animations/lib/main.dart | 39 ++++++++++++------- .../lib/src/basics/01_animated_container.dart | 2 +- .../lib/src/basics/02_page_route_builder.dart | 2 +- .../src/basics/03_animation_controller.dart | 2 +- animations/lib/src/basics/04_tweens.dart | 2 +- .../lib/src/basics/05_animated_builder.dart | 2 +- .../lib/src/basics/06_custom_tween.dart | 2 +- .../lib/src/basics/07_tween_sequence.dart | 2 +- .../lib/src/basics/08_fade_transition.dart | 2 +- animations/lib/src/misc/animated_list.dart | 2 +- .../lib/src/misc/animated_positioned.dart | 2 +- .../lib/src/misc/animated_switcher.dart | 2 +- animations/lib/src/misc/card_swipe.dart | 2 +- animations/lib/src/misc/carousel.dart | 2 +- animations/lib/src/misc/curved_animation.dart | 2 +- animations/lib/src/misc/expand_card.dart | 2 +- animations/lib/src/misc/focus_image.dart | 2 +- animations/lib/src/misc/hero_animation.dart | 2 +- .../lib/src/misc/physics_card_drag.dart | 2 +- .../lib/src/misc/repeating_animation.dart | 2 +- animations/pubspec.yaml | 1 + 21 files changed, 45 insertions(+), 33 deletions(-) diff --git a/animations/lib/main.dart b/animations/lib/main.dart index 31d4afea6..af5f44e36 100644 --- a/animations/lib/main.dart +++ b/animations/lib/main.dart @@ -6,6 +6,8 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; + // ignore: depend_on_referenced_packages import 'package:window_size/window_size.dart'; @@ -147,29 +149,38 @@ final miscDemos = [ builder: (context) => const CurvedAnimationDemo()), ]; -final basicDemoRoutes = - Map.fromEntries(basicDemos.map((d) => MapEntry(d.route, d.builder))); - -final miscDemoRoutes = - Map.fromEntries(miscDemos.map((d) => MapEntry(d.route, d.builder))); - -final allRoutes = { - ...basicDemoRoutes, - ...miscDemoRoutes, -}; +final router = GoRouter( + routes: [ + GoRoute( + path: '/', + builder: (context, state) => const HomePage(), + routes: [ + for (final demo in basicDemos) + GoRoute( + path: demo.route, + builder: (context, state) => demo.builder(context), + ), + for (final demo in miscDemos) + GoRoute( + path: demo.route, + builder: (context, state) => demo.builder(context), + ), + ], + ), + ], +); class AnimationSamples extends StatelessWidget { const AnimationSamples({super.key}); @override Widget build(BuildContext context) { - return MaterialApp( + return MaterialApp.router( title: 'Animation Samples', theme: ThemeData( primarySwatch: Colors.deepPurple, ), - routes: allRoutes, - home: const HomePage(), + routerConfig: router, ); } } @@ -206,7 +217,7 @@ class DemoTile extends StatelessWidget { return ListTile( title: Text(demo.name), onTap: () { - Navigator.pushNamed(context, demo.route); + context.go('/${demo.route}'); }, ); } diff --git a/animations/lib/src/basics/01_animated_container.dart b/animations/lib/src/basics/01_animated_container.dart index f521de7c6..ff226f2de 100644 --- a/animations/lib/src/basics/01_animated_container.dart +++ b/animations/lib/src/basics/01_animated_container.dart @@ -12,7 +12,7 @@ Color generateColor() => Color(0xFFFFFFFF & Random().nextInt(0xFFFFFFFF)); class AnimatedContainerDemo extends StatefulWidget { const AnimatedContainerDemo({super.key}); - static String routeName = '/basics/01_animated_container'; + static String routeName = 'basics/01_animated_container'; @override State createState() => _AnimatedContainerDemoState(); diff --git a/animations/lib/src/basics/02_page_route_builder.dart b/animations/lib/src/basics/02_page_route_builder.dart index f37f665d3..8033bc751 100644 --- a/animations/lib/src/basics/02_page_route_builder.dart +++ b/animations/lib/src/basics/02_page_route_builder.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class PageRouteBuilderDemo extends StatelessWidget { const PageRouteBuilderDemo({super.key}); - static const String routeName = '/basics/page_route_builder'; + static const String routeName = 'basics/page_route_builder'; @override Widget build(BuildContext context) { diff --git a/animations/lib/src/basics/03_animation_controller.dart b/animations/lib/src/basics/03_animation_controller.dart index 186fa5c8f..465bb0634 100644 --- a/animations/lib/src/basics/03_animation_controller.dart +++ b/animations/lib/src/basics/03_animation_controller.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class AnimationControllerDemo extends StatefulWidget { const AnimationControllerDemo({super.key}); - static const String routeName = '/basics/animation_controller'; + static const String routeName = 'basics/animation_controller'; @override State createState() => diff --git a/animations/lib/src/basics/04_tweens.dart b/animations/lib/src/basics/04_tweens.dart index 455fcb517..a9648bc12 100644 --- a/animations/lib/src/basics/04_tweens.dart +++ b/animations/lib/src/basics/04_tweens.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class TweenDemo extends StatefulWidget { const TweenDemo({super.key}); - static const String routeName = '/basics/tweens'; + static const String routeName = 'basics/tweens'; @override State createState() => _TweenDemoState(); diff --git a/animations/lib/src/basics/05_animated_builder.dart b/animations/lib/src/basics/05_animated_builder.dart index 9164098b0..494c6470e 100644 --- a/animations/lib/src/basics/05_animated_builder.dart +++ b/animations/lib/src/basics/05_animated_builder.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class AnimatedBuilderDemo extends StatefulWidget { const AnimatedBuilderDemo({super.key}); - static const String routeName = '/basics/animated_builder'; + static const String routeName = 'basics/animated_builder'; @override State createState() => _AnimatedBuilderDemoState(); diff --git a/animations/lib/src/basics/06_custom_tween.dart b/animations/lib/src/basics/06_custom_tween.dart index 406a670e2..7de726c6e 100644 --- a/animations/lib/src/basics/06_custom_tween.dart +++ b/animations/lib/src/basics/06_custom_tween.dart @@ -17,7 +17,7 @@ class TypewriterTween extends Tween { class CustomTweenDemo extends StatefulWidget { const CustomTweenDemo({super.key}); - static const String routeName = '/basics/custom_tweens'; + static const String routeName = 'basics/custom_tweens'; @override State createState() => _CustomTweenDemoState(); diff --git a/animations/lib/src/basics/07_tween_sequence.dart b/animations/lib/src/basics/07_tween_sequence.dart index de50fd3f8..a494fb3dc 100644 --- a/animations/lib/src/basics/07_tween_sequence.dart +++ b/animations/lib/src/basics/07_tween_sequence.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class TweenSequenceDemo extends StatefulWidget { const TweenSequenceDemo({super.key}); - static const String routeName = '/basics/chaining_tweens'; + static const String routeName = 'basics/chaining_tweens'; @override State createState() => _TweenSequenceDemoState(); diff --git a/animations/lib/src/basics/08_fade_transition.dart b/animations/lib/src/basics/08_fade_transition.dart index d95dfad3e..a10f70a78 100644 --- a/animations/lib/src/basics/08_fade_transition.dart +++ b/animations/lib/src/basics/08_fade_transition.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; // for examples of other common animated widgets. class FadeTransitionDemo extends StatefulWidget { const FadeTransitionDemo({super.key}); - static const String routeName = '/basics/fade_transition'; + static const String routeName = 'basics/fade_transition'; @override State createState() => _FadeTransitionDemoState(); diff --git a/animations/lib/src/misc/animated_list.dart b/animations/lib/src/misc/animated_list.dart index 4a233ca91..9e9167dd8 100644 --- a/animations/lib/src/misc/animated_list.dart +++ b/animations/lib/src/misc/animated_list.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class AnimatedListDemo extends StatefulWidget { const AnimatedListDemo({super.key}); - static String routeName = '/misc/animated_list'; + static String routeName = 'misc/animated_list'; @override State createState() => _AnimatedListDemoState(); diff --git a/animations/lib/src/misc/animated_positioned.dart b/animations/lib/src/misc/animated_positioned.dart index 4f307c579..a948b460d 100644 --- a/animations/lib/src/misc/animated_positioned.dart +++ b/animations/lib/src/misc/animated_positioned.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; class AnimatedPositionedDemo extends StatefulWidget { const AnimatedPositionedDemo({super.key}); - static String routeName = '/basics/09_animated_positioned'; + static String routeName = 'misc/animated_positioned'; @override State createState() => _AnimatedPositionedDemoState(); diff --git a/animations/lib/src/misc/animated_switcher.dart b/animations/lib/src/misc/animated_switcher.dart index 5dc1cafb2..35880fb21 100644 --- a/animations/lib/src/misc/animated_switcher.dart +++ b/animations/lib/src/misc/animated_switcher.dart @@ -24,7 +24,7 @@ Widget generateContainer(int keyCount) => Container( class AnimatedSwitcherDemo extends StatefulWidget { const AnimatedSwitcherDemo({super.key}); - static String routeName = '/basics/10_animated_switcher'; + static String routeName = 'misc/animated_switcher'; @override State createState() => _AnimatedSwitcherDemoState(); diff --git a/animations/lib/src/misc/card_swipe.dart b/animations/lib/src/misc/card_swipe.dart index 2bd38d433..3fc74ec45 100644 --- a/animations/lib/src/misc/card_swipe.dart +++ b/animations/lib/src/misc/card_swipe.dart @@ -7,7 +7,7 @@ import 'package:flutter/physics.dart'; class CardSwipeDemo extends StatefulWidget { const CardSwipeDemo({super.key}); - static String routeName = '/misc/card_swipe'; + static String routeName = 'misc/card_swipe'; @override State createState() => _CardSwipeDemoState(); diff --git a/animations/lib/src/misc/carousel.dart b/animations/lib/src/misc/carousel.dart index 6817d21b1..37c0bc865 100644 --- a/animations/lib/src/misc/carousel.dart +++ b/animations/lib/src/misc/carousel.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; class CarouselDemo extends StatelessWidget { CarouselDemo({super.key}); - static String routeName = '/misc/carousel'; + static String routeName = 'misc/carousel'; static const List fileNames = [ 'assets/eat_cape_town_sm.jpg', diff --git a/animations/lib/src/misc/curved_animation.dart b/animations/lib/src/misc/curved_animation.dart index 67ed01318..a3debe90c 100644 --- a/animations/lib/src/misc/curved_animation.dart +++ b/animations/lib/src/misc/curved_animation.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; class CurvedAnimationDemo extends StatefulWidget { const CurvedAnimationDemo({super.key}); - static const String routeName = '/misc/curved_animation'; + static const String routeName = 'misc/curved_animation'; @override State createState() => _CurvedAnimationDemoState(); diff --git a/animations/lib/src/misc/expand_card.dart b/animations/lib/src/misc/expand_card.dart index 5e6ca099b..0029ee597 100644 --- a/animations/lib/src/misc/expand_card.dart +++ b/animations/lib/src/misc/expand_card.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class ExpandCardDemo extends StatelessWidget { const ExpandCardDemo({super.key}); - static const String routeName = '/misc/expand_card'; + static const String routeName = 'misc/expand_card'; @override Widget build(BuildContext context) { diff --git a/animations/lib/src/misc/focus_image.dart b/animations/lib/src/misc/focus_image.dart index 01e12fc10..665713a82 100644 --- a/animations/lib/src/misc/focus_image.dart +++ b/animations/lib/src/misc/focus_image.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class FocusImageDemo extends StatelessWidget { const FocusImageDemo({super.key}); - static String routeName = '/misc/focus_image'; + static String routeName = 'misc/focus_image'; @override Widget build(BuildContext context) { diff --git a/animations/lib/src/misc/hero_animation.dart b/animations/lib/src/misc/hero_animation.dart index 965f7cd31..dbceeed2f 100644 --- a/animations/lib/src/misc/hero_animation.dart +++ b/animations/lib/src/misc/hero_animation.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class HeroAnimationDemo extends StatelessWidget { const HeroAnimationDemo({super.key}); - static const String routeName = '/misc/hero_animation'; + static const String routeName = 'misc/hero_animation'; @override Widget build(BuildContext context) { diff --git a/animations/lib/src/misc/physics_card_drag.dart b/animations/lib/src/misc/physics_card_drag.dart index 538376ac3..5fe3a09cc 100644 --- a/animations/lib/src/misc/physics_card_drag.dart +++ b/animations/lib/src/misc/physics_card_drag.dart @@ -7,7 +7,7 @@ import 'package:flutter/physics.dart'; class PhysicsCardDragDemo extends StatelessWidget { const PhysicsCardDragDemo({super.key}); - static const String routeName = '/misc/physics_card'; + static const String routeName = 'misc/physics_card'; @override Widget build(BuildContext context) { diff --git a/animations/lib/src/misc/repeating_animation.dart b/animations/lib/src/misc/repeating_animation.dart index a9abcb2a9..404317a9a 100644 --- a/animations/lib/src/misc/repeating_animation.dart +++ b/animations/lib/src/misc/repeating_animation.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class RepeatingAnimationDemo extends StatefulWidget { const RepeatingAnimationDemo({super.key}); - static String routeName = '/misc/repeating_animation'; + static String routeName = 'misc/repeating_animation'; @override State createState() => _RepeatingAnimationDemoState(); diff --git a/animations/pubspec.yaml b/animations/pubspec.yaml index 4f1330bd0..2da5ca920 100644 --- a/animations/pubspec.yaml +++ b/animations/pubspec.yaml @@ -10,6 +10,7 @@ dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.2 + go_router: ^5.2.3 dev_dependencies: flutter_test: From bcbadab8d8c6c2e54c9d8f987caca975ee87d821 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Dec 2022 00:41:37 -0600 Subject: [PATCH 060/134] Bump ossf/scorecard-action from 2.0.6 to 2.1.0 (#1525) --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index e0ea6d6d7..1c229e2d8 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -27,7 +27,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@99c53751e09b9529366343771cc321ec74e9bd3d + uses: ossf/scorecard-action@937ffa90d79c7d720498178154ad4c7ba1e4ad8c with: results_file: results.sarif results_format: sarif From f6313eecf8f515558073c3d323d46cb25104752a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Dec 2022 01:00:19 -0600 Subject: [PATCH 061/134] Bump actions/setup-java from 3.8.0 to 3.9.0 (#1524) --- .github/workflows/beta.yml | 6 +++--- .github/workflows/main.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index 49fde1374..b1676c17f 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -27,7 +27,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c + - uses: actions/setup-java@1df8dbefe2a8cbc99770194893dd902763bee34b with: distribution: 'zulu' java-version: '12.x' @@ -42,7 +42,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c + - uses: actions/setup-java@1df8dbefe2a8cbc99770194893dd902763bee34b with: distribution: 'zulu' java-version: '12.x' @@ -57,7 +57,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c + - uses: actions/setup-java@1df8dbefe2a8cbc99770194893dd902763bee34b with: distribution: 'zulu' java-version: '12.x' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f5b91f4ab..689f770ce 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c + - uses: actions/setup-java@1df8dbefe2a8cbc99770194893dd902763bee34b with: distribution: 'zulu' java-version: '12.x' @@ -41,7 +41,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c + - uses: actions/setup-java@1df8dbefe2a8cbc99770194893dd902763bee34b with: distribution: 'zulu' java-version: '12.x' @@ -54,7 +54,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c + - uses: actions/setup-java@1df8dbefe2a8cbc99770194893dd902763bee34b with: distribution: 'zulu' java-version: '12.x' From e7808254dc3b3a4b394c78c6364f00b62e1570e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Dec 2022 01:00:50 -0600 Subject: [PATCH 062/134] Bump github/codeql-action from 2.1.36 to 2.1.37 (#1526) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.36 to 2.1.37. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/a669cc5936cc5e1b6a362ec1ff9e410dc570d190...959cbb7472c4d4ad70cdfe6f4976053fe48ab394) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 1c229e2d8..ae8b2488d 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@a669cc5936cc5e1b6a362ec1ff9e410dc570d190 + uses: github/codeql-action/upload-sarif@959cbb7472c4d4ad70cdfe6f4976053fe48ab394 with: sarif_file: results.sarif From 225f496fcfce13ed367b279b886d8628bf18b496 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Dec 2022 19:12:16 +1100 Subject: [PATCH 063/134] Bump intl from 0.17.0 to 0.18.0 in /form_app (#1528) --- form_app/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/form_app/pubspec.yaml b/form_app/pubspec.yaml index ccd07cd85..23d53dfe0 100644 --- a/form_app/pubspec.yaml +++ b/form_app/pubspec.yaml @@ -10,7 +10,7 @@ dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.0 - intl: ^0.17.0 + intl: ^0.18.0 http: ^0.13.0 json_annotation: any english_words: ^4.0.0 From f66188c86282ae57232487bcc89d1f7cc065d67e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Dec 2022 19:13:09 +1100 Subject: [PATCH 064/134] Bump intl from 0.17.0 to 0.18.0 in /veggieseasons (#1527) --- veggieseasons/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/veggieseasons/pubspec.yaml b/veggieseasons/pubspec.yaml index 8773ef303..c1ee8e719 100644 --- a/veggieseasons/pubspec.yaml +++ b/veggieseasons/pubspec.yaml @@ -13,7 +13,7 @@ dependencies: cupertino_icons: ^1.0.2 font_awesome_flutter: ^10.1.0 - intl: ^0.17.0 + intl: ^0.18.0 provider: ^6.0.1 shared_preferences: ^2.0.14 window_size: From db94e92a26fed18f5121eb55268612f3861d0900 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Fri, 16 Dec 2022 01:39:23 +0100 Subject: [PATCH 065/134] migrate place_tracker to go_router (#1529) --- place_tracker/lib/place.dart | 21 +++++ place_tracker/lib/place_details.dart | 21 ++++- place_tracker/lib/place_list.dart | 31 ++----- place_tracker/lib/place_map.dart | 103 +++++++++-------------- place_tracker/lib/place_tracker_app.dart | 24 +++++- place_tracker/pubspec.yaml | 2 + 6 files changed, 107 insertions(+), 95 deletions(-) diff --git a/place_tracker/lib/place.dart b/place_tracker/lib/place.dart index b29c89d1b..f922c983d 100644 --- a/place_tracker/lib/place.dart +++ b/place_tracker/lib/place.dart @@ -42,6 +42,27 @@ class Place { starRating: starRating ?? this.starRating, ); } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Place && + runtimeType == other.runtimeType && + id == other.id && + latLng == other.latLng && + name == other.name && + category == other.category && + description == other.description && + starRating == other.starRating; + + @override + int get hashCode => + id.hashCode ^ + latLng.hashCode ^ + name.hashCode ^ + category.hashCode ^ + description.hashCode ^ + starRating.hashCode; } enum PlaceCategory { diff --git a/place_tracker/lib/place_details.dart b/place_tracker/lib/place_details.dart index fa9e677f9..ac26e521d 100644 --- a/place_tracker/lib/place_details.dart +++ b/place_tracker/lib/place_details.dart @@ -4,17 +4,17 @@ import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:provider/provider.dart'; import 'place.dart'; +import 'place_tracker_app.dart'; import 'stub_data.dart'; class PlaceDetails extends StatefulWidget { final Place place; - final ValueChanged onChanged; const PlaceDetails({ required this.place, - required this.onChanged, super.key, }); @@ -41,7 +41,7 @@ class _PlaceDetailsState extends State { child: IconButton( icon: const Icon(Icons.save, size: 30.0), onPressed: () { - widget.onChanged(_place); + _onChanged(_place); Navigator.pop(context); }, ), @@ -61,7 +61,7 @@ class _PlaceDetailsState extends State { void initState() { _place = widget.place; _nameController.text = _place.name; - _descriptionController.text = _place.description!; + _descriptionController.text = _place.description ?? ''; return super.initState(); } @@ -113,12 +113,22 @@ class _PlaceDetailsState extends State { )); }); } + + void _onChanged(Place value) { + // Replace the place with the modified version. + final newPlaces = List.from(context.read().places); + final index = newPlaces.indexWhere((place) => place.id == value.id); + newPlaces[index] = value; + + context.read().setPlaces(newPlaces); + } } class _DescriptionTextField extends StatelessWidget { final TextEditingController controller; final ValueChanged onChanged; + const _DescriptionTextField({ required this.controller, required this.onChanged, @@ -151,6 +161,7 @@ class _Map extends StatelessWidget { final GoogleMapController? mapController; final ArgumentCallback onMapCreated; final Set markers; + const _Map({ required this.center, required this.mapController, @@ -187,6 +198,7 @@ class _NameTextField extends StatelessWidget { final TextEditingController controller; final ValueChanged onChanged; + const _NameTextField({ required this.controller, required this.onChanged, @@ -304,6 +316,7 @@ class _StarBar extends StatelessWidget { final int rating; final ValueChanged onChanged; + const _StarBar({ required this.rating, required this.onChanged, diff --git a/place_tracker/lib/place_list.dart b/place_tracker/lib/place_list.dart index 6f0a32e78..e87b5ca4c 100644 --- a/place_tracker/lib/place_list.dart +++ b/place_tracker/lib/place_list.dart @@ -3,10 +3,10 @@ // found in the LICENSE file. import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; import 'place.dart'; -import 'place_details.dart'; import 'place_tracker_app.dart'; class PlaceList extends StatefulWidget { @@ -35,10 +35,7 @@ class _PlaceListState extends State { shrinkWrap: true, children: state.places .where((place) => place.category == state.selectedCategory) - .map((place) => _PlaceListTile( - place: place, - onPlaceChanged: (value) => _onPlaceChanged(value), - )) + .map((place) => _PlaceListTile(place: place)) .toList(), ), ), @@ -51,16 +48,6 @@ class _PlaceListState extends State { Provider.of(context, listen: false) .setSelectedCategory(newCategory); } - - void _onPlaceChanged(Place value) { - // Replace the place with the modified version. - final newPlaces = - List.from(Provider.of(context, listen: false).places); - final index = newPlaces.indexWhere((place) => place.id == value.id); - newPlaces[index] = value; - - Provider.of(context, listen: false).setPlaces(newPlaces); - } } class _CategoryButton extends StatelessWidget { @@ -68,6 +55,7 @@ class _CategoryButton extends StatelessWidget { final bool selected; final ValueChanged onCategoryChanged; + const _CategoryButton({ required this.category, required this.selected, @@ -118,6 +106,7 @@ class _ListCategoryButtonBar extends StatelessWidget { final PlaceCategory selectedCategory; final ValueChanged onCategoryChanged; + const _ListCategoryButtonBar({ required this.selectedCategory, required this.onCategoryChanged, @@ -151,24 +140,14 @@ class _ListCategoryButtonBar extends StatelessWidget { class _PlaceListTile extends StatelessWidget { final Place place; - final ValueChanged onPlaceChanged; const _PlaceListTile({ required this.place, - required this.onPlaceChanged, }); @override Widget build(BuildContext context) { return InkWell( - onTap: () => Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return PlaceDetails( - place: place, - onChanged: (value) => onPlaceChanged(value), - ); - }), - ), + onTap: () => context.go('/place/${place.id}'), child: Container( padding: const EdgeInsets.only(top: 16.0), child: Column( diff --git a/place_tracker/lib/place_map.dart b/place_tracker/lib/place_map.dart index f1f8efc9c..2ec80b9df 100644 --- a/place_tracker/lib/place_map.dart +++ b/place_tracker/lib/place_map.dart @@ -5,13 +5,14 @@ import 'dart:async'; import 'dart:math'; +import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:provider/provider.dart'; import 'package:uuid/uuid.dart'; import 'place.dart'; -import 'place_details.dart'; import 'place_tracker_app.dart'; class MapConfiguration { @@ -77,11 +78,22 @@ class _PlaceMapState extends State { MapConfiguration? _configuration; + @override + void initState() { + super.initState(); + context.read().addListener(_watchMapConfigurationChanges); + } + + @override + void dispose() { + context.read().removeListener(_watchMapConfigurationChanges); + super.dispose(); + } + @override Widget build(BuildContext context) { - _maybeUpdateMapConfiguration(); + _watchMapConfigurationChanges(); var state = Provider.of(context); - return Builder(builder: (context) { // We need this additional builder here so that we can pass its context to // _AddPlaceButtonBar's onSavePressed callback. This callback shows a @@ -189,7 +201,7 @@ class _PlaceMapState extends State { infoWindowParam: InfoWindow( title: 'New Place', snippet: null, - onTap: () => _pushPlaceDetailsScreen(newPlace), + onTap: () => context.go('/place/${newPlace.id}'), ), draggableParam: false, ); @@ -212,7 +224,7 @@ class _PlaceMapState extends State { action: SnackBarAction( label: 'Edit', onPressed: () async { - _pushPlaceDetailsScreen(newPlace); + context.go('/place/${newPlace.id}'); }, ), ), @@ -221,14 +233,6 @@ class _PlaceMapState extends State { // Add the new place to the places stored in appState. final newPlaces = List.from(appState.places)..add(newPlace); - // Manually update our map configuration here since our map is already - // updated with the new marker. Otherwise, the map would be reconfigured - // in the main build method due to a modified AppState. - _configuration = MapConfiguration( - places: newPlaces, - selectedCategory: appState.selectedCategory, - ); - appState.setPlaces(newPlaces); } } @@ -240,7 +244,7 @@ class _PlaceMapState extends State { infoWindow: InfoWindow( title: place.name, snippet: '${place.starRating} Star Rating', - onTap: () => _pushPlaceDetailsScreen(place), + onTap: () => context.go('/place/${place.id}'), ), icon: await _getPlaceMarkerIcon(context, place.category), visible: place.category == @@ -250,11 +254,10 @@ class _PlaceMapState extends State { return marker; } - Future _maybeUpdateMapConfiguration() async { - _configuration ??= - MapConfiguration.of(Provider.of(context, listen: false)); - final newConfiguration = - MapConfiguration.of(Provider.of(context, listen: false)); + Future _watchMapConfigurationChanges() async { + final appState = context.read(); + _configuration ??= MapConfiguration.of(appState); + final newConfiguration = MapConfiguration.of(appState); // Since we manually update [_configuration] when place or selectedCategory // changes come from the [place_map], we should only enter this if statement @@ -270,9 +273,14 @@ class _PlaceMapState extends State { } else { // At this point, we know the places have been updated from the list // view. We need to reconfigure the map to respect the updates. - newConfiguration.places - .where((p) => !_configuration!.places.contains(p)) - .map((value) => _updateExistingPlaceMarker(place: value)); + for (final place in newConfiguration.places) { + final oldPlace = + _configuration!.places.firstWhereOrNull((p) => p.id == place.id); + if (oldPlace == null || oldPlace != place) { + // New place or updated place. + _updateExistingPlaceMarker(place: place); + } + } await _zoomToFitPlaces( _getPlacesForCategory( @@ -299,27 +307,6 @@ class _PlaceMapState extends State { }); } - void _onPlaceChanged(Place value) { - // Replace the place with the modified version. - final newPlaces = - List.from(Provider.of(context, listen: false).places); - final index = newPlaces.indexWhere((place) => place.id == value.id); - newPlaces[index] = value; - - _updateExistingPlaceMarker(place: value); - - // Manually update our map configuration here since our map is already - // updated with the new marker. Otherwise, the map would be reconfigured - // in the main build method due to a modified AppState. - _configuration = MapConfiguration( - places: newPlaces, - selectedCategory: - Provider.of(context, listen: false).selectedCategory, - ); - - Provider.of(context, listen: false).setPlaces(newPlaces); - } - void _onToggleMapTypePressed() { final nextType = MapType.values[(_currentMapType.index + 1) % MapType.values.length]; @@ -329,18 +316,6 @@ class _PlaceMapState extends State { }); } - void _pushPlaceDetailsScreen(Place place) { - Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return PlaceDetails( - place: place, - onChanged: (value) => _onPlaceChanged(value), - ); - }), - ); - } - Future _showPlacesForSelectedCategory(PlaceCategory category) async { setState(() { for (var marker in List.of(_markedPlaces.keys)) { @@ -412,15 +387,17 @@ class _PlaceMapState extends State { maxLong = max(maxLong, place.longitude); } - await controller.animateCamera( - CameraUpdate.newLatLngBounds( - LatLngBounds( - southwest: LatLng(minLat, minLong), - northeast: LatLng(maxLat, maxLong), + WidgetsBinding.instance.addPostFrameCallback((_) { + controller.animateCamera( + CameraUpdate.newLatLngBounds( + LatLngBounds( + southwest: LatLng(minLat, minLong), + northeast: LatLng(maxLat, maxLong), + ), + 48.0, ), - 48.0, - ), - ); + ); + }); } static Future _getPlaceMarkerIcon( diff --git a/place_tracker/lib/place_tracker_app.dart b/place_tracker/lib/place_tracker_app.dart index 1a9a41dea..7b0582dfa 100644 --- a/place_tracker/lib/place_tracker_app.dart +++ b/place_tracker/lib/place_tracker_app.dart @@ -3,10 +3,12 @@ // found in the LICENSE file. import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:provider/provider.dart'; import 'place.dart'; +import 'place_details.dart'; import 'place_list.dart'; import 'place_map.dart'; import 'stub_data.dart'; @@ -21,8 +23,26 @@ class PlaceTrackerApp extends StatelessWidget { @override Widget build(BuildContext context) { - return const MaterialApp( - home: _PlaceTrackerHomePage(), + return MaterialApp.router( + routerConfig: GoRouter(routes: [ + GoRoute( + path: '/', + builder: (context, state) => const _PlaceTrackerHomePage(), + routes: [ + GoRoute( + path: 'place/:id', + builder: (context, state) { + final id = state.params['id']!; + final place = context + .read() + .places + .singleWhere((place) => place.id == id); + return PlaceDetails(place: place); + }, + ), + ], + ), + ]), ); } } diff --git a/place_tracker/pubspec.yaml b/place_tracker/pubspec.yaml index b61f6c60c..ca5c02389 100644 --- a/place_tracker/pubspec.yaml +++ b/place_tracker/pubspec.yaml @@ -15,6 +15,8 @@ dependencies: google_maps_flutter_web: ">=0.3.0+1 <0.5.0" provider: ^6.0.2 uuid: ^3.0.4 + go_router: ^5.2.4 + collection: ^1.16.0 dev_dependencies: flutter_test: From 7e11b89445c9f1ceef93cc54e3678c8e85d8b67f Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Thu, 15 Dec 2022 18:54:24 -0600 Subject: [PATCH 066/134] Move to using analyzer strict modes instead of deprecated strong mode (#1531) The strong mode options were already deprecated and are being removed in Dart 3. --- analysis_options.yaml | 6 +++--- web/samples_index/analysis_options.yaml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 455dedfa4..847745812 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,9 +1,9 @@ include: package:flutter_lints/flutter.yaml analyzer: - strong-mode: - implicit-casts: false - implicit-dynamic: false + language: + strict-casts: true + strict-inference: true linter: rules: diff --git a/web/samples_index/analysis_options.yaml b/web/samples_index/analysis_options.yaml index d28c30e05..d7eb49106 100644 --- a/web/samples_index/analysis_options.yaml +++ b/web/samples_index/analysis_options.yaml @@ -3,9 +3,9 @@ include: package:flutter_lints/flutter.yaml analyzer: exclude: - lib/src/data.g.dart - strong-mode: - implicit-casts: false - implicit-dynamic: false + language: + strict-casts: true + strict-inference: true linter: rules: From 9a82e003ba5c7840763923e35354be8daa43ce86 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Thu, 15 Dec 2022 21:36:04 -0600 Subject: [PATCH 067/134] Minor sample index cleanup (#1532) --- web/_tool/build_ci.dart | 4 ++-- web/_tool/peanut_post_build.dart | 2 +- web/_tool/pubspec.yaml | 2 +- web/samples_index/.gitignore | 1 - web/samples_index/README.md | 14 ++++++------- web/samples_index/analysis_options.yaml | 6 ++++++ web/samples_index/lib/cookbook.dart | 6 +++--- web/samples_index/lib/src/carousel.dart | 18 ++++++++-------- web/samples_index/lib/src/data.dart | 17 ++++++++-------- web/samples_index/lib/src/search.dart | 8 ++++---- web/samples_index/lib/src/templates.dart | 23 ++++++++++----------- web/samples_index/pubspec.yaml | 26 ++++++++++++++---------- web/samples_index/tool/grind.dart | 14 ++++++------- web/samples_index/web/main.dart | 2 +- web/samples_index/web/styles.scss | 2 +- 15 files changed, 77 insertions(+), 68 deletions(-) diff --git a/web/_tool/build_ci.dart b/web/_tool/build_ci.dart index 5882c274a..1713607be 100644 --- a/web/_tool/build_ci.dart +++ b/web/_tool/build_ci.dart @@ -7,9 +7,9 @@ import 'package:path/path.dart' as p; import 'common.dart'; import 'fix_base_tags.dart'; -final ignoredDirectories = ['_tool', 'samples_index']; +const ignoredDirectories = ['_tool', 'samples_index']; -main() async { +void main() async { final packageDirs = [ ...listPackageDirs(Directory.current) .map((path) => p.relative(path, from: Directory.current.path)) diff --git a/web/_tool/peanut_post_build.dart b/web/_tool/peanut_post_build.dart index 683132d3f..c7482751f 100644 --- a/web/_tool/peanut_post_build.dart +++ b/web/_tool/peanut_post_build.dart @@ -14,7 +14,7 @@ import 'package:path/path.dart' as p; import 'common.dart'; -main(List args) async { +void main(List args) async { final buildDir = args[0]; final fileMap = (jsonDecode(args[1]) as Map).cast(); diff --git a/web/_tool/pubspec.yaml b/web/_tool/pubspec.yaml index 157e4f497..ba5630c78 100644 --- a/web/_tool/pubspec.yaml +++ b/web/_tool/pubspec.yaml @@ -2,7 +2,7 @@ name: tool publish_to: none environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.17.0 <3.0.0' dependencies: markdown: ^6.0.0 diff --git a/web/samples_index/.gitignore b/web/samples_index/.gitignore index bc8e6f07c..99161f407 100644 --- a/web/samples_index/.gitignore +++ b/web/samples_index/.gitignore @@ -3,7 +3,6 @@ public/ # Files and directories created by pub .dart_tool/ -.packages # Remove the following pattern if you wish to check in your lock file pubspec.lock diff --git a/web/samples_index/README.md b/web/samples_index/README.md index ff23f21fb..06d60ab74 100644 --- a/web/samples_index/README.md +++ b/web/samples_index/README.md @@ -7,9 +7,8 @@ This tool is used to generate the visual samples index for Flutter samples. We use [grinder](https://pub.dev/packages/grinder) to run the build tasks: ```bash -$ pub get -$ pub global activate grinder -$ grind generate +$ dart pub get +$ dart run grinder generate ``` This will generate the index into `./web` @@ -20,6 +19,7 @@ If you want to serve the index locally, you can use [webdev](https://pub.dev/packages/webdev): ```bash +$ dart pub global activate grinder $ webdev serve ``` @@ -28,16 +28,16 @@ $ webdev serve You can build the complete index into a publishable directory using Grinder: ```bash -$ grind build-release +$ dart run grinder build-release ``` This outputs the completely built index to `./public`. ## Generating cookbook content -The cookbook articles are generated using a WebDriver script that scrapes the -flutter.dev website. To run: +The cookbook articles are generated using a WebDriver script +that scrapes the docs.flutter.dev website. To run: 1. Install [ChromeDriver](https://chromedriver.chromium.org/downloads) 2. run `chromedriver --port=4444 --url-base=wd/hub --verbose` -3. run `grind scrape-cookbook` +3. run `dart run grinder scrape-cookbook` diff --git a/web/samples_index/analysis_options.yaml b/web/samples_index/analysis_options.yaml index d7eb49106..973c98aad 100644 --- a/web/samples_index/analysis_options.yaml +++ b/web/samples_index/analysis_options.yaml @@ -6,6 +6,7 @@ analyzer: language: strict-casts: true strict-inference: true + strict-raw-types: true linter: rules: @@ -16,6 +17,11 @@ linter: directives_ordering: true package_api_docs: true package_prefixed_library_names: true + prefer_final_in_for_each: true + prefer_single_quotes: true test_types_in_equals: true throw_in_finally: true + unawaited_futures: true unnecessary_statements: true + use_enums: true + use_super_parameters: true diff --git a/web/samples_index/lib/cookbook.dart b/web/samples_index/lib/cookbook.dart index 2db0bbd67..8f0fb978f 100644 --- a/web/samples_index/lib/cookbook.dart +++ b/web/samples_index/lib/cookbook.dart @@ -14,11 +14,11 @@ import 'package:webdriver/io.dart'; class CookbookScraper { late WebDriver _driver; - Future init() async { + Future init() async { _driver = await createDriver(desired: {}); } - Future dispose() async { + Future dispose() async { await _driver.quit(); } @@ -59,7 +59,7 @@ class CookbookScraper { ); } - Future takeScreenshot(String url) async { + Future takeScreenshot(String url) async { var screenshot = await _driver.captureScreenshotAsList(); var file = File('web/${screenshotPath(url)}'); await file.create(recursive: true); diff --git a/web/samples_index/lib/src/carousel.dart b/web/samples_index/lib/src/carousel.dart index b617e983f..9d1841c80 100644 --- a/web/samples_index/lib/src/carousel.dart +++ b/web/samples_index/lib/src/carousel.dart @@ -11,7 +11,7 @@ class Carousel { final List slides = querySelectorAll('.slider-single'); late int currentSlideIndex; - late int lastSlideIndex; + late final int lastSlideIndex; late Element prevSlide, currentSlide, nextSlide; @@ -127,24 +127,24 @@ class Carousel { } void _checkRepeat() { - var prevArrow = querySelector('.slider-left'); - var nextArrow = querySelector('.slider-right'); + var prevArrow = querySelector('.slider-left') as AnchorElement; + var nextArrow = querySelector('.slider-right') as AnchorElement; if (currentSlideIndex == slides.length - 1) { slides[0].classes.add('hidden'); slides[slides.length - 1].classes.remove('hidden'); - prevArrow!.classes.remove('hidden'); - nextArrow!.classes.add('hidden'); + prevArrow.classes.remove('hidden'); + nextArrow.classes.add('hidden'); } else if (currentSlideIndex == 0) { slides[slides.length - 1].classes.add('hidden'); slides[0].classes.remove('hidden'); - prevArrow!.classes.add('hidden'); - nextArrow!.classes.remove('hidden'); + prevArrow.classes.add('hidden'); + nextArrow.classes.remove('hidden'); } else { slides[slides.length - 1].classes.remove('hidden'); slides[0].classes.remove('hidden'); - prevArrow!.classes.remove('hidden'); - nextArrow!.classes.remove('hidden'); + prevArrow.classes.remove('hidden'); + nextArrow.classes.remove('hidden'); } } diff --git a/web/samples_index/lib/src/data.dart b/web/samples_index/lib/src/data.dart index 3332b5e05..a33d66ca7 100644 --- a/web/samples_index/lib/src/data.dart +++ b/web/samples_index/lib/src/data.dart @@ -22,7 +22,7 @@ class Index { Index(this.samples); - factory Index.fromJson(Map json) => _$IndexFromJson(json); + factory Index.fromJson(Map json) => _$IndexFromJson(json); Map toJson() => _$IndexToJson(this); } @@ -100,7 +100,7 @@ class Sample { this.channel, }); - factory Sample.fromJson(Map json) => _$SampleFromJson(json); + factory Sample.fromJson(Map json) => _$SampleFromJson(json); Map toJson() => _$SampleToJson(this); @@ -116,25 +116,25 @@ class Sample { buf.write(name.toLowerCase()); buf.write(' '); - for (var tag in tags) { + for (final tag in tags) { buf.write('tag:${tag.toLowerCase()} '); // Allow tags to be searched without the tag: prefix buf.write('${tag.toLowerCase()} '); } - for (var platform in platforms) { + for (final platform in platforms) { buf.write('platform:$platform '); // Allow platforms to be searched without the tag: prefix buf.write('$platform '); } - for (var widget in widgets) { + for (final widget in widgets) { buf.write('widget:$widget '); } - for (var package in packages) { + for (final package in packages) { buf.write('package:$package '); } @@ -167,7 +167,8 @@ class Screenshot { Screenshot(this.url, this.alt); - factory Screenshot.fromJson(Map json) => _$ScreenshotFromJson(json); + factory Screenshot.fromJson(Map json) => + _$ScreenshotFromJson(json); Map toJson() => _$ScreenshotToJson(this); } @@ -180,7 +181,7 @@ class Link { Link(this.text, this.href); - factory Link.fromJson(Map json) => _$LinkFromJson(json); + factory Link.fromJson(Map json) => _$LinkFromJson(json); Map toJson() => _$LinkToJson(this); } diff --git a/web/samples_index/lib/src/search.dart b/web/samples_index/lib/src/search.dart index c8d00c510..7f57e7794 100644 --- a/web/samples_index/lib/src/search.dart +++ b/web/samples_index/lib/src/search.dart @@ -16,7 +16,7 @@ bool matchesQuery(String query, String sampleAttributes) { // This will check whether a type parameter is present in the // search query, and return false if the self type mismatches // the query type - for (var word in queryWords) { + for (final word in queryWords) { if ((word.contains('type:') && !attributes.contains(word)) || (word.contains('platform:') && !attributes.contains('type:demo'))) { return false; @@ -30,7 +30,7 @@ bool matchesQuery(String query, String sampleAttributes) { // Test for exact matches for keywords var matches = 0; - for (var word in queryWords) { + for (final word in queryWords) { if (attributes.contains(word)) { matches++; } @@ -43,8 +43,8 @@ bool matchesQuery(String query, String sampleAttributes) { // e.g. searching "kitten tag:cats" is a match for a sample with the // attributes "kittens tag:cats" matches = 0; - for (var attribute in attributes) { - for (var queryWord in queryWords) { + for (final attribute in attributes) { + for (final queryWord in queryWords) { if (attribute.startsWith(queryWord)) { matches++; } diff --git a/web/samples_index/lib/src/templates.dart b/web/samples_index/lib/src/templates.dart index aeabdf027..5d8c98ece 100644 --- a/web/samples_index/lib/src/templates.dart +++ b/web/samples_index/lib/src/templates.dart @@ -29,7 +29,7 @@ $_footer '''; -String _indexHeader = ''' +const String _indexHeader = ''' Flutter samples @@ -39,11 +39,11 @@ String _indexHeader = ''' - ${_googleAnalytics()} + $_googleAnalytics '''; -String _descriptionHeader = ''' +const String _descriptionHeader = ''' Flutter samples @@ -54,11 +54,11 @@ String _descriptionHeader = ''' - ${_googleAnalytics()} + $_googleAnalytics '''; -String _navbar = ''' +const String _navbar = '''

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 Date: Wed, 19 Oct 2022 12:08:45 +0800 Subject: [PATCH 027/134] Fixes exception in platform_channels (#1480) --- platform_channels/lib/src/pet_list_screen.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform_channels/lib/src/pet_list_screen.dart b/platform_channels/lib/src/pet_list_screen.dart index c3b7b0056..b36a2b850 100644 --- a/platform_channels/lib/src/pet_list_screen.dart +++ b/platform_channels/lib/src/pet_list_screen.dart @@ -20,8 +20,8 @@ class _PetListScreenState extends State { final scaffoldKey = GlobalKey(); @override - void initState() { - super.initState(); + void didChangeDependencies() { + super.didChangeDependencies(); // Receives a string of json object from the platform and converts it // to PetModel. final scaffoldMessenger = ScaffoldMessenger.of(context); From d5124b813588eb4a3c67d9fbe05fd6ec1a666f8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 02:04:06 -0500 Subject: [PATCH 028/134] Bump github/codeql-action from 2.1.27 to 2.1.28 (#1481) --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index fe5aa872e..d1de10f05 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@807578363a7869ca324a79039e6db9c843e0e100 + uses: github/codeql-action/upload-sarif@cc7986c02bac29104a72998e67239bb5ee2ee110 with: sarif_file: results.sarif From 00471b10ccfa751807caa59007897ed0682d12c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 02:04:31 -0500 Subject: [PATCH 029/134] Bump actions/setup-java from 3.5.1 to 3.6.0 (#1482) --- .github/workflows/beta.yml | 6 +++--- .github/workflows/main.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index 94f960ef7..95f364532 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -27,7 +27,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d + - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc with: distribution: 'zulu' java-version: '12.x' @@ -42,7 +42,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d + - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc with: distribution: 'zulu' java-version: '12.x' @@ -57,7 +57,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d + - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc with: distribution: 'zulu' java-version: '12.x' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 247c87032..d4df2388d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d + - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc with: distribution: 'zulu' java-version: '12.x' @@ -41,7 +41,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d + - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc with: distribution: 'zulu' java-version: '12.x' @@ -54,7 +54,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d + - uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc with: distribution: 'zulu' java-version: '12.x' From 742f433b52809a6362716f8f3bec25ab9086c0b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 02:05:18 -0500 Subject: [PATCH 030/134] Bump ossf/scorecard-action from 2.0.4 to 2.0.6 (#1483) Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.0.4 to 2.0.6. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/e363bfca00e752f91de7b7d2a77340e2e523cb18...99c53751e09b9529366343771cc321ec74e9bd3d) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index d1de10f05..4c576c4fe 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -27,7 +27,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@e363bfca00e752f91de7b7d2a77340e2e523cb18 + uses: ossf/scorecard-action@99c53751e09b9529366343771cc321ec74e9bd3d with: results_file: results.sarif results_format: sarif From f3534cd55d57d424808947381935f5eeb6480495 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Oct 2022 00:00:41 +1000 Subject: [PATCH 031/134] Bump firebase_core and cloud_firestore in /flutter_maps_firestore (#1484) Bumps [firebase_core](https://github.com/firebase/flutterfire/tree/master/packages/firebase_core) and [cloud_firestore](https://github.com/firebase/flutterfire/tree/master/packages/cloud_firestore). These dependencies needed to be updated together. Updates `firebase_core` from 1.24.0 to 2.0.0 - [Release notes](https://github.com/firebase/flutterfire/releases) - [Changelog](https://github.com/firebase/flutterfire/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/flutterfire/commits/firebase_core_web-v2.0.0/packages/firebase_core) Updates `cloud_firestore` from 3.5.1 to 4.0.1 - [Release notes](https://github.com/firebase/flutterfire/releases) - [Changelog](https://github.com/firebase/flutterfire/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/flutterfire/commits/cloud_firestore-v4.0.1/packages/cloud_firestore) --- updated-dependencies: - dependency-name: firebase_core dependency-type: direct:production update-type: version-update:semver-major - dependency-name: cloud_firestore dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- flutter_maps_firestore/pubspec.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flutter_maps_firestore/pubspec.yaml b/flutter_maps_firestore/pubspec.yaml index 794f76844..ed1346ecc 100644 --- a/flutter_maps_firestore/pubspec.yaml +++ b/flutter_maps_firestore/pubspec.yaml @@ -8,8 +8,8 @@ environment: dependencies: flutter: sdk: flutter - cloud_firestore: ^3.1.10 - firebase_core: ^1.2.0 + cloud_firestore: ">=3.1.10 <5.0.0" + firebase_core: ">=1.2.0 <3.0.0" google_maps_flutter: ^2.0.0 google_maps_webservice: ^0.0.20-nullsafety.0 location: ^4.0.0-nullsafety.0 From c21fcd6573a8419f54698015048a8648b68cdb26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Oct 2022 00:31:19 +1000 Subject: [PATCH 032/134] Bump firebase_core, cloud_firestore and firebase_auth (#1485) Bumps [firebase_core](https://github.com/firebase/flutterfire/tree/master/packages/firebase_core), [cloud_firestore](https://github.com/firebase/flutterfire/tree/master/packages/cloud_firestore) and [firebase_auth](https://github.com/firebase/flutterfire/tree/master/packages/firebase_auth). These dependencies needed to be updated together. Updates `firebase_core` from 1.24.0 to 2.0.0 - [Release notes](https://github.com/firebase/flutterfire/releases) - [Changelog](https://github.com/firebase/flutterfire/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/flutterfire/commits/firebase_core_web-v2.0.0/packages/firebase_core) Updates `cloud_firestore` from 3.5.1 to 4.0.1 - [Release notes](https://github.com/firebase/flutterfire/releases) - [Changelog](https://github.com/firebase/flutterfire/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/flutterfire/commits/cloud_firestore-v4.0.1/packages/cloud_firestore) Updates `firebase_auth` from 3.11.2 to 4.0.1 - [Release notes](https://github.com/firebase/flutterfire/releases) - [Changelog](https://github.com/firebase/flutterfire/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/flutterfire/commits/firebase_auth-v4.0.1/packages/firebase_auth) --- updated-dependencies: - dependency-name: firebase_core dependency-type: direct:production update-type: version-update:semver-major - dependency-name: cloud_firestore dependency-type: direct:production update-type: version-update:semver-major - dependency-name: firebase_auth dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- experimental/web_dashboard/pubspec.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/experimental/web_dashboard/pubspec.yaml b/experimental/web_dashboard/pubspec.yaml index 1f6fea8f8..4f3d71cca 100644 --- a/experimental/web_dashboard/pubspec.yaml +++ b/experimental/web_dashboard/pubspec.yaml @@ -8,11 +8,11 @@ environment: dependencies: charts_flutter: ^0.12.0 - cloud_firestore: ^3.1.14 + cloud_firestore: ^4.0.1 collection: ^1.16.0 cupertino_icons: ^1.0.0 - firebase_auth: ^3.3.17 - firebase_core: ^1.16.0 + firebase_auth: ^4.0.1 + firebase_core: ^2.0.0 flutter: sdk: flutter google_sign_in: ^5.3.1 From 6caaa0a3c96d092c46d881c02d24646fd24cf984 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Thu, 20 Oct 2022 09:00:41 -0700 Subject: [PATCH 033/134] code sharing sample: flat package directory (#1486) --- code_sharing/{server => }/Dockerfile | 12 +++++++++--- code_sharing/Makefile | 4 ++-- code_sharing/README.md | 10 +++++----- code_sharing/client/lib/main.dart | 6 +++++- code_sharing/client/pubspec.yaml | 2 +- code_sharing/docker-compose.yml | 2 +- code_sharing/server/.dockerignore | 11 +++++++---- code_sharing/server/pubspec.yaml | 2 +- code_sharing/{server => }/shared/.gitignore | 0 code_sharing/{server => }/shared/CHANGELOG.md | 0 code_sharing/{server => }/shared/README.md | 0 .../{server => }/shared/analysis_options.yaml | 0 code_sharing/{server => }/shared/lib/shared.dart | 0 code_sharing/{server => }/shared/lib/src/models.dart | 0 .../{server => }/shared/lib/src/models.freezed.dart | 0 .../{server => }/shared/lib/src/models.g.dart | 0 code_sharing/{server => }/shared/pubspec.yaml | 0 .../{server => }/shared/test/shared_test.dart | 0 tool/flutter_ci_script_beta.sh | 2 +- 19 files changed, 32 insertions(+), 19 deletions(-) rename code_sharing/{server => }/Dockerfile (72%) rename code_sharing/{server => }/shared/.gitignore (100%) rename code_sharing/{server => }/shared/CHANGELOG.md (100%) rename code_sharing/{server => }/shared/README.md (100%) rename code_sharing/{server => }/shared/analysis_options.yaml (100%) rename code_sharing/{server => }/shared/lib/shared.dart (100%) rename code_sharing/{server => }/shared/lib/src/models.dart (100%) rename code_sharing/{server => }/shared/lib/src/models.freezed.dart (100%) rename code_sharing/{server => }/shared/lib/src/models.g.dart (100%) rename code_sharing/{server => }/shared/pubspec.yaml (100%) rename code_sharing/{server => }/shared/test/shared_test.dart (100%) diff --git a/code_sharing/server/Dockerfile b/code_sharing/Dockerfile similarity index 72% rename from code_sharing/server/Dockerfile rename to code_sharing/Dockerfile index f07aec295..f41dc30c6 100644 --- a/code_sharing/server/Dockerfile +++ b/code_sharing/Dockerfile @@ -1,9 +1,15 @@ # Use latest stable channel SDK. FROM dart:stable AS build +# Copy shared code. +WORKDIR /shared +COPY /shared/. . + +# Copy server code. +WORKDIR /server +COPY /server/. . + # Resolve app dependencies. -WORKDIR /app -COPY . . RUN dart pub get # AOT compile app. @@ -13,7 +19,7 @@ RUN dart compile exe bin/server.dart -o bin/server # and the pre-built AOT-runtime in the `/runtime/` directory of the base image. FROM scratch COPY --from=build /runtime/ / -COPY --from=build /app/bin/server /app/bin/ +COPY --from=build /server/bin/server /app/bin/ # Start server. EXPOSE 8080 diff --git a/code_sharing/Makefile b/code_sharing/Makefile index faf874bbe..22aecc54d 100644 --- a/code_sharing/Makefile +++ b/code_sharing/Makefile @@ -19,6 +19,6 @@ test: # Docker build: - (cd server && flutter pub get) - docker build ./server -t codesharingserver -f server/Dockerfile + (cd server && dart pub get) + docker build . -t codesharingserver diff --git a/code_sharing/README.md b/code_sharing/README.md index 5c7187357..f11edba49 100644 --- a/code_sharing/README.md +++ b/code_sharing/README.md @@ -32,13 +32,13 @@ code_sharing/ server/ bin/ server.dart - # Common business logic - shared/ - pubspec.yaml - lib/ - ... pubspec.yaml Dockerfile + # Common business logic + shared/ + pubspec.yaml + lib/ + ... ``` ## Recreating this on your own diff --git a/code_sharing/client/lib/main.dart b/code_sharing/client/lib/main.dart index e96b52fc9..f9a97b348 100644 --- a/code_sharing/client/lib/main.dart +++ b/code_sharing/client/lib/main.dart @@ -78,7 +78,11 @@ class _MyHomePageState extends State { (int val) => setState( () { _counter = val; - isWriting = true; + // Leave this up for at least a split second + Future.delayed( + const Duration(milliseconds: 200), + () => setState(() => isWriting = false), + ); }, ), ); diff --git a/code_sharing/client/pubspec.yaml b/code_sharing/client/pubspec.yaml index f46c1210c..8897d18b4 100644 --- a/code_sharing/client/pubspec.yaml +++ b/code_sharing/client/pubspec.yaml @@ -12,7 +12,7 @@ dependencies: sdk: flutter http: ^0.13.5 shared: - path: ../server/shared + path: ../shared dev_dependencies: flutter_lints: ^2.0.0 diff --git a/code_sharing/docker-compose.yml b/code_sharing/docker-compose.yml index bf378f004..e38c622b2 100644 --- a/code_sharing/docker-compose.yml +++ b/code_sharing/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: server: build: - context: server + context: . ports: - 8080:8080 environment: diff --git a/code_sharing/server/.dockerignore b/code_sharing/server/.dockerignore index 21504f8fe..7d51f93ae 100644 --- a/code_sharing/server/.dockerignore +++ b/code_sharing/server/.dockerignore @@ -1,9 +1,12 @@ .dockerignore Dockerfile -build/ -.dart_tool/ +docker-compose.yml +Makefile +README.md +*/build/ +*/.dart_tool/ .git/ .github/ .gitignore -.idea/ -.packages +*/.idea/ +*/.packages diff --git a/code_sharing/server/pubspec.yaml b/code_sharing/server/pubspec.yaml index d89bbeedd..0641e64f9 100644 --- a/code_sharing/server/pubspec.yaml +++ b/code_sharing/server/pubspec.yaml @@ -11,7 +11,7 @@ dependencies: shelf: ^1.1.0 shelf_router: ^1.0.0 shared: - path: ./shared + path: ../shared dev_dependencies: http: ^0.13.0 diff --git a/code_sharing/server/shared/.gitignore b/code_sharing/shared/.gitignore similarity index 100% rename from code_sharing/server/shared/.gitignore rename to code_sharing/shared/.gitignore diff --git a/code_sharing/server/shared/CHANGELOG.md b/code_sharing/shared/CHANGELOG.md similarity index 100% rename from code_sharing/server/shared/CHANGELOG.md rename to code_sharing/shared/CHANGELOG.md diff --git a/code_sharing/server/shared/README.md b/code_sharing/shared/README.md similarity index 100% rename from code_sharing/server/shared/README.md rename to code_sharing/shared/README.md diff --git a/code_sharing/server/shared/analysis_options.yaml b/code_sharing/shared/analysis_options.yaml similarity index 100% rename from code_sharing/server/shared/analysis_options.yaml rename to code_sharing/shared/analysis_options.yaml diff --git a/code_sharing/server/shared/lib/shared.dart b/code_sharing/shared/lib/shared.dart similarity index 100% rename from code_sharing/server/shared/lib/shared.dart rename to code_sharing/shared/lib/shared.dart diff --git a/code_sharing/server/shared/lib/src/models.dart b/code_sharing/shared/lib/src/models.dart similarity index 100% rename from code_sharing/server/shared/lib/src/models.dart rename to code_sharing/shared/lib/src/models.dart diff --git a/code_sharing/server/shared/lib/src/models.freezed.dart b/code_sharing/shared/lib/src/models.freezed.dart similarity index 100% rename from code_sharing/server/shared/lib/src/models.freezed.dart rename to code_sharing/shared/lib/src/models.freezed.dart diff --git a/code_sharing/server/shared/lib/src/models.g.dart b/code_sharing/shared/lib/src/models.g.dart similarity index 100% rename from code_sharing/server/shared/lib/src/models.g.dart rename to code_sharing/shared/lib/src/models.g.dart diff --git a/code_sharing/server/shared/pubspec.yaml b/code_sharing/shared/pubspec.yaml similarity index 100% rename from code_sharing/server/shared/pubspec.yaml rename to code_sharing/shared/pubspec.yaml diff --git a/code_sharing/server/shared/test/shared_test.dart b/code_sharing/shared/test/shared_test.dart similarity index 100% rename from code_sharing/server/shared/test/shared_test.dart rename to code_sharing/shared/test/shared_test.dart diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index 5457b0ecc..e9ebc70e1 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -17,7 +17,7 @@ declare -ar PROJECT_NAMES=( "animations" "code_sharing/client" "code_sharing/server" - "code_sharing/server/shared" + "code_sharing/shared" "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "experimental/federated_plugin/federated_plugin" From 1cf93b8c27db85b187be2e56bbc68aba84850623 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 12:16:24 -0500 Subject: [PATCH 034/134] Bump peaceiris/actions-gh-pages from 3.8.0 to 3.9.0 (#1491) --- .github/workflows/gh-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 2daff8436..ff2841d6e 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -32,7 +32,7 @@ jobs: working-directory: web - name: Deploy - uses: peaceiris/actions-gh-pages@068dc23d9710f1ba62e86896f84735d869951305 + uses: peaceiris/actions-gh-pages@de7ea6f8efb354206b205ef54722213d99067935 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: web/samples_index/public From 0dccacec2b2a3a5106045b0d27a6b7bf3549b1df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rulong=20Chen=EF=BC=88=E9=99=88=E6=B1=9D=E9=BE=99=EF=BC=89?= Date: Tue, 25 Oct 2022 02:28:48 +0800 Subject: [PATCH 035/134] [add_to_app] Fixes type mismatch (#1489) --- .../example/androidView/FlutterViewEngine.kt | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/FlutterViewEngine.kt b/add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/FlutterViewEngine.kt index afc0db2d5..e0c96a1b2 100644 --- a/add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/FlutterViewEngine.kt +++ b/add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/FlutterViewEngine.kt @@ -4,11 +4,13 @@ package dev.flutter.example.androidView +import android.app.Activity import android.content.Intent import androidx.activity.ComponentActivity import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.OnLifecycleEvent +import io.flutter.embedding.android.ExclusiveAppComponent import io.flutter.embedding.android.FlutterView import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.platform.PlatformPlugin @@ -40,7 +42,7 @@ import io.flutter.plugin.platform.PlatformPlugin * what the appropriate intersection between the [FlutterView], the [FlutterEngine] and your * `Activity` should be for your own application. */ -class FlutterViewEngine(val engine: FlutterEngine) : LifecycleObserver{ +class FlutterViewEngine(val engine: FlutterEngine) : LifecycleObserver, ExclusiveAppComponent{ private var flutterView: FlutterView? = null private var activity: ComponentActivity? = null private var platformPlugin: PlatformPlugin? = null @@ -55,7 +57,7 @@ class FlutterViewEngine(val engine: FlutterEngine) : LifecycleObserver{ flutterView!!.let { flutterView -> platformPlugin = PlatformPlugin(activity, engine.platformChannel) - engine.activityControlSurface.attachToActivity(activity, activity.lifecycle) + engine.activityControlSurface.attachToActivity(this, activity.lifecycle) flutterView.attachToFlutterEngine(engine) activity.lifecycle.addObserver(this) } @@ -217,4 +219,25 @@ class FlutterViewEngine(val engine: FlutterEngine) : LifecycleObserver{ engine.activityControlSurface.onUserLeaveHint(); } } + + /** + * Called when another App Component is about to become attached to the [ ] this App Component + * is currently attached to. + * + * + * This App Component's connections to the [io.flutter.embedding.engine.FlutterEngine] + * are still valid at the moment of this call. + */ + override fun detachFromFlutterEngine() { + // Do nothing here + } + + /** + * Retrieve the App Component behind this exclusive App Component. + * + * @return The app component. + */ + override fun getAppComponent(): Activity { + return activity!!; + } } From cb46fade864d63e3d837d35d06b60a283fb27cce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Oct 2022 04:30:44 +1000 Subject: [PATCH 036/134] Bump actions/upload-artifact from 3.1.0 to 3.1.1 (#1490) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/3cea5372237819ed00197afe530f5a7ea3e805c8...83fd05a356d7e2593de66fc9913b3002723633cb) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 4c576c4fe..b57f82301 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -42,7 +42,7 @@ jobs: # Upload the results as artifacts (optional). - name: "Upload artifact" - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 + uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb with: name: SARIF file path: results.sarif From ee72fc8ad7307732a9a90ea447383e0df2ea0dfd Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Mon, 24 Oct 2022 17:50:52 -0400 Subject: [PATCH 037/134] Drop `web/particle_background` (#1453) --- web/particle_background/LICENSE | 21 - web/particle_background/README.md | 7 - web/particle_background/analysis_options.yaml | 11 - web/particle_background/assets/preview.png | Bin 20488 -> 0 bytes web/particle_background/lib/main.dart | 181 ------- .../lib/simple_animations_package.dart | 455 ------------------ web/particle_background/pubspec.yaml | 14 - web/particle_background/web/index.html | 11 - web/samples_index/lib/src/samples.yaml | 17 - .../web/images/particle_background1.png | Bin 899423 -> 0 bytes 10 files changed, 717 deletions(-) delete mode 100644 web/particle_background/LICENSE delete mode 100644 web/particle_background/README.md delete mode 100644 web/particle_background/analysis_options.yaml delete mode 100644 web/particle_background/assets/preview.png delete mode 100644 web/particle_background/lib/main.dart delete mode 100644 web/particle_background/lib/simple_animations_package.dart delete mode 100644 web/particle_background/pubspec.yaml delete mode 100644 web/particle_background/web/index.html delete mode 100644 web/samples_index/web/images/particle_background1.png diff --git a/web/particle_background/LICENSE b/web/particle_background/LICENSE deleted file mode 100644 index f1e7e2f51..000000000 --- a/web/particle_background/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Felix Blaschke - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/web/particle_background/README.md b/web/particle_background/README.md deleted file mode 100644 index 00e174861..000000000 --- a/web/particle_background/README.md +++ /dev/null @@ -1,7 +0,0 @@ -Flutter app demonstrating -[simple_animations](https://pub.dev/packages/simple_animations) in action. - -Contributed by Felix Blaschke. - -One of a series of samples -[published here](https://github.com/felixblaschke/simple_animations/tree/2.4.2/example). diff --git a/web/particle_background/analysis_options.yaml b/web/particle_background/analysis_options.yaml deleted file mode 100644 index de149220e..000000000 --- a/web/particle_background/analysis_options.yaml +++ /dev/null @@ -1,11 +0,0 @@ -include: ../../analysis_options.yaml - -analyzer: - strong-mode: - implicit-casts: true - implicit-dynamic: true - -linter: - rules: - constant_identifier_names: false - diff --git a/web/particle_background/assets/preview.png b/web/particle_background/assets/preview.png deleted file mode 100644 index 7a63a7991eb46df7439aaeb39e65a63131ed4214..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20488 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 e2ZRX%MI`_Z%)}ol(1Ozd0000 runApp(const ParticleApp()); - -class ParticleApp extends StatelessWidget { - const ParticleApp({super.key}); - - @override - Widget build(BuildContext context) { - return const MaterialApp( - home: Scaffold( - body: ParticleBackgroundPage(), - ), - ); - } -} - -class ParticleBackgroundPage extends StatelessWidget { - const ParticleBackgroundPage({super.key}); - - @override - Widget build(BuildContext context) { - return Stack( - children: const [ - Positioned.fill(child: AnimatedBackground()), - Positioned.fill(child: Particles(30)), - Positioned.fill(child: CenteredText()), - ], - ); - } -} - -class Particles extends StatefulWidget { - final int numberOfParticles; - - const Particles(this.numberOfParticles, {super.key}); - - @override - State createState() => _ParticlesState(); -} - -class _ParticlesState extends State { - final Random random = Random(); - - final List particles = []; - - @override - void initState() { - List.generate(widget.numberOfParticles, (index) { - particles.add(ParticleModel(random)); - }); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Rendering( - startTime: const Duration(seconds: 30), - onTick: _simulateParticles, - builder: (context, time) { - return CustomPaint( - painter: ParticlePainter(particles, time), - ); - }, - ); - } - - _simulateParticles(Duration time) { - for (var particle in particles) { - particle.maintainRestart(time); - } - } -} - -class ParticleModel { - late Animatable tween; - late double size; - late AnimationProgress animationProgress; - Random random; - - ParticleModel(this.random) { - restart(); - } - - restart({Duration time = Duration.zero}) { - final startPosition = Offset(-0.2 + 1.4 * random.nextDouble(), 1.2); - final endPosition = Offset(-0.2 + 1.4 * random.nextDouble(), -0.2); - final duration = Duration(milliseconds: 3000 + random.nextInt(6000)); - - tween = MultiTrackTween([ - Track("x").add( - duration, Tween(begin: startPosition.dx, end: endPosition.dx), - curve: Curves.easeInOutSine), - Track("y").add( - duration, Tween(begin: startPosition.dy, end: endPosition.dy), - curve: Curves.easeIn), - ]); - animationProgress = AnimationProgress(duration: duration, startTime: time); - size = 0.2 + random.nextDouble() * 0.4; - } - - maintainRestart(Duration time) { - if (animationProgress.progress(time) == 1.0) { - restart(time: time); - } - } -} - -class ParticlePainter extends CustomPainter { - List particles; - Duration time; - - ParticlePainter(this.particles, this.time); - - @override - void paint(Canvas canvas, Size size) { - final paint = Paint()..color = Colors.white.withAlpha(50); - - for (var particle in particles) { - var progress = particle.animationProgress.progress(time); - final animation = particle.tween.transform(progress); - final position = - Offset(animation["x"] * size.width, animation["y"] * size.height); - canvas.drawCircle(position, size.width * 0.2 * particle.size, paint); - } - } - - @override - bool shouldRepaint(CustomPainter oldDelegate) => true; -} - -class AnimatedBackground extends StatelessWidget { - const AnimatedBackground({super.key}); - - @override - Widget build(BuildContext context) { - final tween = MultiTrackTween([ - Track("color1").add( - const Duration(seconds: 3), - ColorTween( - begin: const Color(0xff8a113a), end: Colors.lightBlue.shade900)), - Track("color2").add(const Duration(seconds: 3), - ColorTween(begin: const Color(0xff440216), end: Colors.blue.shade600)) - ]); - - return ControlledAnimation( - playback: Playback.MIRROR, - tween: tween, - duration: tween.duration, - builder: (context, dynamic animation) { - return Container( - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [animation["color1"], animation["color2"]])), - ); - }, - ); - } -} - -class CenteredText extends StatelessWidget { - const CenteredText({ - super.key, - }); - - @override - Widget build(BuildContext context) { - return const Center( - child: Text( - "Welcome to Flutter for web", - style: TextStyle(color: Colors.white, fontWeight: FontWeight.w200), - textScaleFactor: 4, - ), - ); - } -} diff --git a/web/particle_background/lib/simple_animations_package.dart b/web/particle_background/lib/simple_animations_package.dart deleted file mode 100644 index af5ae7374..000000000 --- a/web/particle_background/lib/simple_animations_package.dart +++ /dev/null @@ -1,455 +0,0 @@ -// Package simple_animations: -// https://pub.dev/packages/simple_animations - -import 'dart:math'; - -import 'package:flutter/scheduler.dart'; -import 'package:flutter/widgets.dart'; - -/// Widget to easily create a continuous animation. -/// -/// You need to specify a [builder] function that gets the build context passed -/// along with the [timeElapsed] (as a [Duration]) since the rendering started. -/// You can use this time to specify custom animations on it. -/// -/// The [builder] rebuilds all sub-widgets every frame. -/// -/// You define an [onTick] function that is called before builder to update -/// you rendered scene. It's also utilized during fast-forwarding the animation. -/// -/// Specify a [startTime] to fast-forward your animation in the beginning. -/// The widget will interpolate the animation by calling the [onTick] function -/// multiple times. (Default value is `20`. You can tune it by setting the -/// [startTimeSimulationTicks] property.) -class Rendering extends StatefulWidget { - final Widget Function(BuildContext context, Duration timeElapsed) builder; - final Function(Duration timeElapsed)? onTick; - final Duration startTime; - final int startTimeSimulationTicks; - - const Rendering( - {required this.builder, - this.onTick, - this.startTime = Duration.zero, - this.startTimeSimulationTicks = 20, - super.key}); - - @override - State createState() => _RenderingState(); -} - -class _RenderingState extends State - with SingleTickerProviderStateMixin { - late Ticker _ticker; - Duration _timeElapsed = const Duration(milliseconds: 0); - - @override - void initState() { - if (widget.startTime > Duration.zero) { - _simulateStartTimeTicks(); - } - - _ticker = createTicker((elapsed) { - _onRender(elapsed + widget.startTime); - }); - _ticker.start(); - super.initState(); - } - - void _onRender(Duration effectiveElapsed) { - if (widget.onTick != null) { - widget.onTick!(effectiveElapsed); - } - setState(() { - _timeElapsed = effectiveElapsed; - }); - } - - void _simulateStartTimeTicks() { - if (widget.onTick != null) { - for (var i in Iterable.generate(widget.startTimeSimulationTicks + 1)) { - final simulatedTime = Duration( - milliseconds: (widget.startTime.inMilliseconds * - i / - widget.startTimeSimulationTicks) - .round()); - widget.onTick!(simulatedTime); - } - } - } - - @override - void dispose() { - _ticker.stop(canceled: true); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return widget.builder(context, _timeElapsed); - } -} - -/// Animatable that tweens multiple parallel properties (called [Track]s). -/// --- -/// The constructor of [MultiTrackTween] expects a list of [Track] objects. -/// You can fetch the specified total duration via [duration] getter. -/// --- -/// Example: -/// -/// ```dart -/// final tween = MultiTrackTween([ -/// Track("color") -/// .add(Duration(seconds: 1), ColorTween(begin: Colors.red, end: Colors.blue)) -/// .add(Duration(seconds: 1), ColorTween(begin: Colors.blue, end: Colors.yellow)), -/// Track("width") -/// .add(Duration(milliseconds: 500), ConstantTween(200.0)) -/// .add(Duration(milliseconds: 1500), Tween(begin: 200.0, end: 400.0), -/// curve: Curves.easeIn) -/// ]); -/// -/// return ControlledAnimation( -/// duration: tween.duration, -/// tween: tween, -/// builder: (context, values) { -/// ... -/// } -/// ); -/// ``` -class MultiTrackTween extends Animatable> { - final _tracksToTween = {}; - var _maxDuration = 0; - - MultiTrackTween(List tracks) - : assert(tracks.isNotEmpty, "Add a List to configure the tween."), - assert(tracks.where((track) => track.items.isEmpty).isEmpty, - "Each Track needs at least one added Tween by using the add()-method.") { - _computeMaxDuration(tracks); - _computeTrackTweens(tracks); - } - - void _computeMaxDuration(List tracks) { - for (var track in tracks) { - final trackDuration = track.items - .map((item) => item.duration.inMilliseconds) - .reduce((sum, item) => sum + item); - _maxDuration = max(_maxDuration, trackDuration); - } - } - - void _computeTrackTweens(List tracks) { - for (var track in tracks) { - final trackDuration = track.items - .map((item) => item.duration.inMilliseconds) - .reduce((sum, item) => sum + item); - - final sequenceItems = track.items - .map((item) => TweenSequenceItem( - tween: item.tween, - weight: item.duration.inMilliseconds / _maxDuration)) - .toList(); - - if (trackDuration < _maxDuration) { - sequenceItems.add(TweenSequenceItem( - tween: ConstantTween(null), - weight: (_maxDuration - trackDuration) / _maxDuration)); - } - - final sequence = TweenSequence(sequenceItems); - - _tracksToTween[track.name] = - _TweenData(tween: sequence, maxTime: trackDuration / _maxDuration); - } - } - - /// Returns the highest duration specified by [Track]s. - /// --- - /// Use it to pass it into an [ControlledAnimation]. - /// - /// You can also scale it by multiplying a double value. - /// - /// Example: - /// ```dart - /// final tween = MultiTrackTween(listOfTracks); - /// - /// return ControlledAnimation( - /// duration: tween.duration * 1.25, // stretch animation by 25% - /// tween: tween, - /// builder: (context, values) { - /// ... - /// } - /// ); - /// ``` - Duration get duration { - return Duration(milliseconds: _maxDuration); - } - - @override - Map transform(double t) { - final Map result = {}; - _tracksToTween.forEach((name, tweenData) { - final double tTween = max(0, min(t, tweenData.maxTime! - 0.0001)); - result[name] = tweenData.tween!.transform(tTween); - }); - return result; - } -} - -/// Single property to tween. Used by [MultiTrackTween]. -class Track { - final String name; - final List items = []; - - Track(this.name); - - /// Adds a "piece of animation" to a [Track]. - /// - /// You need to pass a [duration] and a [tween]. It will return the track, so - /// you can specify a track in a builder's style. - /// - /// Optionally you can set a named parameter [curve] that applies an easing - /// curve to the tween. - Track add(Duration duration, Animatable tween, {Curve? curve}) { - items.add(TrackItem(duration, tween, curve: curve)); - return this; - } -} - -class TrackItem { - final Duration duration; - late Animatable tween; - - TrackItem(this.duration, Animatable tween, {Curve? curve}) { - if (curve != null) { - this.tween = tween.chain(CurveTween(curve: curve)); - } else { - this.tween = tween; - } - } -} - -class _TweenData { - final Animatable? tween; - final double? maxTime; - - _TweenData({this.tween, this.maxTime}); -} - -/// Playback tell the controller of the animation what to do. -enum Playback { - /// Animation stands still. - PAUSE, - - /// Animation plays forwards and stops at the end. - PLAY_FORWARD, - - /// Animation plays backwards and stops at the beginning. - PLAY_REVERSE, - - /// Animation will reset to the beginning and start playing forward. - START_OVER_FORWARD, - - /// Animation will reset to the end and start play backward. - START_OVER_REVERSE, - - /// Animation will play forwards and start over at the beginning when it - /// reaches the end. - LOOP, - - /// Animation will play forward until the end and will reverse playing until - /// it reaches the beginning. Then it starts over playing forward. And so on. - MIRROR -} - -/// Widget to create custom, managed, tween-based animations in a very simple way. -/// -/// --- -/// -/// An internal [AnimationController] will do everything you tell him by -/// dynamically assigning the one [Playback] to [playback] property. -/// By default the animation will start playing forward and stops at the end. -/// -/// A minimum set of properties are [duration] (time span of the animation), -/// [tween] (values to interpolate among the animation) and a [builder] function -/// (defines the animated scene). -/// -/// Instead of using [builder] as building function you can use for performance -/// critical scenarios [builderWithChild] along with a prebuild [child]. -/// -/// --- -/// -/// The following properties are optional: -/// -/// - You can apply a [delay] that forces the animation to pause a -/// specified time before the animation will perform the defined [playback] -/// instruction. -/// -/// - You can specify a [curve] that modifies the [tween] by applying a -/// non-linear animation function. You can find curves in [Curves], for -/// example [Curves.easeOut] or [Curves.easeIn]. -/// -/// - You can track the animation by setting an [AnimationStatusListener] to -/// the property [animationControllerStatusListener]. The internal [AnimationController] then -/// will route out any events that occur. [ControlledAnimation] doesn't filter -/// or modifies these events. These events are currently only reliable for the -/// [playback]-types [Playback.PLAY_FORWARD] and [Playback.PLAY_REVERSE]. -/// -/// - You can set the start position of animation by specifying [startPosition] -/// with a value between *0.0* and *1.0*. The [startPosition] is only -/// evaluated once during the initialization of the widget. -/// -class ControlledAnimation extends StatefulWidget { - final Playback playback; - final Animatable tween; - final Curve curve; - final Duration duration; - final Duration? delay; - final Widget Function(BuildContext buildContext, T animatedValue)? builder; - final Widget Function(BuildContext, Widget? child, T animatedValue)? - builderWithChild; - final Widget? child; - final AnimationStatusListener? animationControllerStatusListener; - final double startPosition; - - const ControlledAnimation( - {this.playback = Playback.PLAY_FORWARD, - required this.tween, - this.curve = Curves.linear, - required this.duration, - this.delay, - this.builder, - this.builderWithChild, - this.child, - this.animationControllerStatusListener, - this.startPosition = 0.0, - super.key}) - : assert( - (builderWithChild != null && child != null && builder == null) || - (builder != null && builderWithChild == null && child == null), - "Either use just builder and keep buildWithChild and child null. " - "Or keep builder null and set a builderWithChild and a child."), - assert( - startPosition >= 0 && startPosition <= 1, - "The property startPosition " - "must have a value between 0.0 and 1.0."); - - @override - State createState() => _ControlledAnimationState(); -} - -class _ControlledAnimationState extends State - with SingleTickerProviderStateMixin { - late AnimationController _controller; - late Animation _animation; - bool _isDisposed = false; - bool _waitForDelay = true; - bool _isCurrentlyMirroring = false; - - @override - void initState() { - _controller = AnimationController(vsync: this, duration: widget.duration) - ..addListener(() { - setState(() {}); - }) - ..value = widget.startPosition; - - _animation = widget.tween - .chain(CurveTween(curve: widget.curve)) - .animate(_controller) as Animation; - - if (widget.animationControllerStatusListener != null) { - _controller.addStatusListener(widget.animationControllerStatusListener!); - } - - initialize(); - super.initState(); - } - - Future initialize() async { - if (widget.delay != null) { - await Future.delayed(widget.delay!); - } - _waitForDelay = false; - await executeInstruction(); - } - - @override - void didUpdateWidget(ControlledAnimation oldWidget) { - _controller.duration = widget.duration; - executeInstruction(); - super.didUpdateWidget(oldWidget); - } - - Future executeInstruction() async { - if (_isDisposed || _waitForDelay) { - return; - } - - if (widget.playback == Playback.PAUSE) { - _controller.stop(); - } - if (widget.playback == Playback.PLAY_FORWARD) { - await _controller.forward(); - } - if (widget.playback == Playback.PLAY_REVERSE) { - await _controller.reverse(); - } - if (widget.playback == Playback.START_OVER_FORWARD) { - await _controller.forward(from: 0.0); - } - if (widget.playback == Playback.START_OVER_REVERSE) { - await _controller.reverse(from: 1.0); - } - if (widget.playback == Playback.LOOP) { - await _controller.repeat(); - } - if (widget.playback == Playback.MIRROR && !_isCurrentlyMirroring) { - _isCurrentlyMirroring = true; - await _controller.repeat(reverse: true); - } - - if (widget.playback != Playback.MIRROR) { - _isCurrentlyMirroring = false; - } - } - - @override - Widget build(BuildContext context) { - if (widget.builder != null) { - return widget.builder!(context, _animation.value); - } else if (widget.builderWithChild != null && widget.child != null) { - return widget.builderWithChild!(context, widget.child, _animation.value); - } - _controller.stop(canceled: true); - throw FlutterError( - "I don't know how to build the animation. Make sure to either specify " - "a builder or a builderWithChild (along with a child)."); - } - - @override - void dispose() { - _isDisposed = true; - _controller.dispose(); - super.dispose(); - } -} - -/// Utility class to compute an animation progress between two points in time. -/// -/// On creation you specify a [startTime] and a [duration]. -/// -/// You can query the progress value - a value between `0.0` and `11.0` - by -/// calling [progress] and passing the current time. -class AnimationProgress { - final Duration duration; - final Duration startTime; - - /// Creates an [AnimationProgress]. - AnimationProgress({required this.duration, required this.startTime}); - - /// Queries the current progress value based on the specified [startTime] and - /// [duration] as a value between `0.0` and `1.0`. It will automatically - /// clamp values this interval to fit in. - double progress(Duration time) => max(0.0, - min((time - startTime).inMilliseconds / duration.inMilliseconds, 1.0)); -} diff --git a/web/particle_background/pubspec.yaml b/web/particle_background/pubspec.yaml deleted file mode 100644 index b99d326ed..000000000 --- a/web/particle_background/pubspec.yaml +++ /dev/null @@ -1,14 +0,0 @@ -name: particle_background -description: Example for the simple_animations package -homepage: https://github.com/felixblaschke/simple_animations - -environment: - sdk: ">=2.17.0-0 <3.0.0" - -dependencies: - flutter: - sdk: flutter - flutter_lints: ^2.0.1 -flutter: - assets: - - preview.png diff --git a/web/particle_background/web/index.html b/web/particle_background/web/index.html deleted file mode 100644 index 1785ebb8b..000000000 --- a/web/particle_background/web/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/web/samples_index/lib/src/samples.yaml b/web/samples_index/lib/src/samples.yaml index c702b0b91..f43b7286f 100644 --- a/web/samples_index/lib/src/samples.yaml +++ b/web/samples_index/lib/src/samples.yaml @@ -634,23 +634,6 @@ samples: web: web/github_dataviz type: demo - - name: Particle Background - author: Felix Blaschke - screenshots: - - url: images/particle_background1.png - alt: Particle Background screenshot - source: https://github.com/flutter/samples/tree/main/web/particle_background - description: > - Flutter app demonstrating package:simple_animations in action. - difficulty: intermediate - widgets: [] - packages: [] - platforms: ['web'] - links: [] - tags: ['demo', 'animation'] - web: web/particle_background - type: demo - - name: Dice author: Jaime Blasco screenshots: diff --git a/web/samples_index/web/images/particle_background1.png b/web/samples_index/web/images/particle_background1.png deleted file mode 100644 index 1bf2637d7c635dc5ebc7370b9954a2566eddf0df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 899423 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 z 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%0A^jPrkCx}ExEmjR7ux+ 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�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 X`zQ(ucQWL%j>02ia4H)s?6Ri)}+biVcRHV=Oz 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 z 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%0DOVh0awzA%9{sCZyn}!qb#IVC3fojH9xQg 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 Date: Sun, 9 Oct 2022 12:53:36 +1100 Subject: [PATCH 018/134] Elide `form_app` from beta CI (#1467) --- tool/flutter_ci_script_beta.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index 173d237c2..787a99705 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -22,7 +22,8 @@ declare -ar PROJECT_NAMES=( # TODO(DomesticMouse): Needs to be re-formatted for Flutter beta # "experimental/linting_tool" "flutter_maps_firestore" - "form_app" + # TODO(domesticmouse): 'errorColor' is deprecated and shouldn't be used. + # "form_app" "game_template" "infinite_list" "ios_app_clip" From 0990f43c9321bc0a9a702d6f8a6942f1c4888d66 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Sun, 9 Oct 2022 14:07:20 +1100 Subject: [PATCH 019/134] Comment out Verify web demos for beta channel (#1468) --- .github/workflows/verify-web-demos.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/verify-web-demos.yml b/.github/workflows/verify-web-demos.yml index d306f32db..3d4e51927 100644 --- a/.github/workflows/verify-web-demos.yml +++ b/.github/workflows/verify-web-demos.yml @@ -17,7 +17,8 @@ jobs: matrix: flutter_version: - stable - - beta + # TODO(johnpryan): https://github.com/flutter/samples/issues/1469 + # - beta steps: - name: Checkout uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 From 405be60cda6e650022e36a7854d2e4313f11f18f Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Tue, 11 Oct 2022 05:28:07 -0500 Subject: [PATCH 020/134] Restrict sass_builder to v2.1.4 to fix build (#1470) --- web/samples_index/pubspec.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/web/samples_index/pubspec.yaml b/web/samples_index/pubspec.yaml index 5cc7c3bc2..80e5dffc9 100644 --- a/web/samples_index/pubspec.yaml +++ b/web/samples_index/pubspec.yaml @@ -9,7 +9,9 @@ dependencies: path: ^1.6.0 yaml: ^3.0.0 mdc_web: ^0.6.0 - sass_builder: ^2.1.0 + # ^2.1.5 is no longer compatible with our overridden sass version + # https://github.com/flutter/samples/issues/1472 + sass_builder: 2.1.4 checked_yaml: ^2.0.1 webdriver: ^3.0.0 html: ^0.15.0 @@ -27,5 +29,6 @@ dev_dependencies: # Once released, it will need to be rolled into package:mdc_web. # # https://github.com/material-components/material-components-web/pull/7158 +# https://github.com/flutter/samples/issues/1472 dependency_overrides: sass: 1.32.10 \ No newline at end of file From 73464650bf45c2af9dba0bac64d718c82a0815b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Oct 2022 07:15:40 -0500 Subject: [PATCH 021/134] Bump subosito/flutter-action from 2.7.1 to 2.8.0 (#1474) --- .github/workflows/beta.yml | 6 +++--- .github/workflows/gh-pages.yml | 2 +- .github/workflows/main.yml | 6 +++--- .github/workflows/verify-web-demos.yml | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index d18f899cb..94f960ef7 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -31,7 +31,7 @@ jobs: with: distribution: 'zulu' java-version: '12.x' - - uses: subosito/flutter-action@1e6ee87cb840500837bcd50a667fb28815d8e310 + - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d with: channel: beta - run: ./tool/flutter_ci_script_stable.sh @@ -46,7 +46,7 @@ jobs: with: distribution: 'zulu' java-version: '12.x' - - uses: subosito/flutter-action@1e6ee87cb840500837bcd50a667fb28815d8e310 + - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d with: channel: beta - run: ./tool/android_ci_script.sh @@ -61,7 +61,7 @@ jobs: with: distribution: 'zulu' java-version: '12.x' - - uses: subosito/flutter-action@1e6ee87cb840500837bcd50a667fb28815d8e310 + - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d with: channel: beta - run: ./tool/ios_ci_script.sh diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 79609edeb..03165a32c 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -21,7 +21,7 @@ jobs: submodules: true fetch-depth: 0 - - uses: subosito/flutter-action@1e6ee87cb840500837bcd50a667fb28815d8e310 + - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d - name: Init scripts run: dart pub get diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7f4112cb2..247c87032 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -32,7 +32,7 @@ jobs: with: distribution: 'zulu' java-version: '12.x' - - uses: subosito/flutter-action@1e6ee87cb840500837bcd50a667fb28815d8e310 + - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d with: channel: ${{ matrix.flutter_version }} - run: ./tool/flutter_ci_script_${{ matrix.flutter_version }}.sh @@ -45,7 +45,7 @@ jobs: with: distribution: 'zulu' java-version: '12.x' - - uses: subosito/flutter-action@1e6ee87cb840500837bcd50a667fb28815d8e310 + - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d with: channel: stable - run: ./tool/android_ci_script.sh @@ -58,7 +58,7 @@ jobs: with: distribution: 'zulu' java-version: '12.x' - - uses: subosito/flutter-action@1e6ee87cb840500837bcd50a667fb28815d8e310 + - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d with: channel: stable - run: ./tool/ios_ci_script.sh diff --git a/.github/workflows/verify-web-demos.yml b/.github/workflows/verify-web-demos.yml index 3d4e51927..948f97372 100644 --- a/.github/workflows/verify-web-demos.yml +++ b/.github/workflows/verify-web-demos.yml @@ -25,7 +25,7 @@ jobs: with: submodules: true fetch-depth: 0 - - uses: subosito/flutter-action@1e6ee87cb840500837bcd50a667fb28815d8e310 + - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d with: channel: ${{ matrix.flutter_version }} - name: Init scripts From ad1faad66b7abe2c86ceb9962f921dfc34bb24a2 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Fri, 14 Oct 2022 09:00:49 -0400 Subject: [PATCH 022/134] Drop `web/charts` sample (#1452) --- web/charts/README.md | 8 - web/charts/analysis_options.yaml | 29 -- web/charts/assets/preview.png | Bin 6711 -> 0 bytes web/charts/lib/a11y/a11y_gallery.dart | 29 -- .../a11y/domain_a11y_explore_bar_chart.dart | 216 ------------- web/charts/lib/app_config.dart | 44 --- web/charts/lib/axes/axes_gallery.dart | 136 -------- web/charts/lib/axes/bar_secondary_axis.dart | 159 ---------- .../lib/axes/bar_secondary_axis_only.dart | 115 ------- .../lib/axes/custom_axis_tick_formatters.dart | 145 --------- .../lib/axes/custom_font_size_and_color.dart | 137 -------- .../lib/axes/custom_measure_tick_count.dart | 123 ------- .../lib/axes/flipped_vertical_axis.dart | 115 ------- .../lib/axes/gridline_dash_pattern.dart | 121 ------- .../axes/hidden_ticks_and_labels_axis.dart | 119 ------- .../axes/horizontal_bar_secondary_axis.dart | 162 ---------- .../lib/axes/integer_only_measure_axis.dart | 130 -------- web/charts/lib/axes/line_disjoint_axis.dart | 270 ---------------- .../axes/measure_axis_label_alignment.dart | 123 ------- .../lib/axes/nonzero_bound_measure_axis.dart | 120 ------- .../lib/axes/numeric_initial_viewport.dart | 134 -------- .../lib/axes/ordinal_initial_viewport.dart | 146 --------- .../lib/axes/short_tick_length_axis.dart | 116 ------- .../lib/axes/statically_provided_ticks.dart | 134 -------- web/charts/lib/bar_chart/bar_gallery.dart | 155 --------- .../lib/bar_chart/custom_rounded_bars.dart | 111 ------- web/charts/lib/bar_chart/grouped.dart | 155 --------- .../lib/bar_chart/grouped_fill_color.dart | 179 ----------- .../bar_chart/grouped_single_target_line.dart | 182 ----------- web/charts/lib/bar_chart/grouped_stacked.dart | 245 -------------- .../grouped_stacked_weight_pattern.dart | 258 --------------- .../lib/bar_chart/grouped_target_line.dart | 249 --------------- web/charts/lib/bar_chart/horizontal.dart | 105 ------ .../lib/bar_chart/horizontal_bar_label.dart | 124 -------- .../horizontal_bar_label_custom.dart | 141 -------- .../horizontal_pattern_forward_hatch.dart | 165 ---------- .../lib/bar_chart/pattern_forward_hatch.dart | 162 ---------- web/charts/lib/bar_chart/simple.dart | 105 ------ web/charts/lib/bar_chart/spark_bar.dart | 140 -------- web/charts/lib/bar_chart/stacked.dart | 156 --------- .../lib/bar_chart/stacked_fill_color.dart | 179 ----------- .../lib/bar_chart/stacked_horizontal.dart | 158 --------- .../lib/bar_chart/stacked_target_line.dart | 250 --------------- .../lib/behaviors/behaviors_gallery.dart | 124 -------- web/charts/lib/behaviors/chart_title.dart | 132 -------- .../lib/behaviors/initial_hint_animation.dart | 176 ---------- .../lib/behaviors/initial_selection.dart | 130 -------- .../lib/behaviors/percent_of_domain.dart | 168 ---------- .../percent_of_domain_by_category.dart | 263 --------------- .../lib/behaviors/percent_of_series.dart | 121 ------- .../behaviors/selection_bar_highlight.dart | 111 ------- .../behaviors/selection_callback_example.dart | 202 ------------ .../behaviors/selection_line_highlight.dart | 128 -------- ...selection_line_highlight_custom_shape.dart | 132 -------- .../selection_scatter_plot_highlight.dart | 234 -------------- .../lib/behaviors/selection_user_managed.dart | 165 ---------- web/charts/lib/behaviors/slider.dart | 195 ------------ .../sliding_viewport_on_selection.dart | 145 --------- web/charts/lib/combo_chart/combo_gallery.dart | 57 ---- .../lib/combo_chart/date_time_line_point.dart | 184 ----------- .../lib/combo_chart/numeric_line_bar.dart | 175 ---------- .../lib/combo_chart/numeric_line_point.dart | 176 ---------- .../lib/combo_chart/ordinal_bar_line.dart | 167 ---------- .../lib/combo_chart/scatter_plot_line.dart | 199 ------------ web/charts/lib/drawer.dart | 51 --- web/charts/lib/gallery_scaffold.dart | 67 ---- web/charts/lib/home.dart | 125 -------- web/charts/lib/i18n/i18n_gallery.dart | 50 --- web/charts/lib/i18n/rtl_bar_chart.dart | 120 ------- web/charts/lib/i18n/rtl_line_chart.dart | 116 ------- web/charts/lib/i18n/rtl_line_segments.dart | 249 --------------- web/charts/lib/i18n/rtl_series_legend.dart | 207 ------------ .../lib/legends/datum_legend_options.dart | 137 -------- .../legends/datum_legend_with_measures.dart | 147 --------- .../legends/default_hidden_series_legend.dart | 189 ----------- .../lib/legends/legend_custom_symbol.dart | 211 ------------ web/charts/lib/legends/legends_gallery.dart | 80 ----- .../lib/legends/series_legend_options.dart | 216 ------------- .../legends/series_legend_with_measures.dart | 229 ------------- .../lib/legends/simple_datum_legend.dart | 105 ------ .../lib/legends/simple_series_legend.dart | 184 ----------- web/charts/lib/line_chart/animation_zoom.dart | 102 ------ web/charts/lib/line_chart/area_and_line.dart | 142 --------- web/charts/lib/line_chart/dash_pattern.dart | 163 ---------- .../lib/line_chart/line_annotation.dart | 121 ------- web/charts/lib/line_chart/line_gallery.dart | 113 ------- web/charts/lib/line_chart/points.dart | 104 ------ .../lib/line_chart/range_annotation.dart | 125 -------- .../line_chart/range_annotation_margin.dart | 143 --------- web/charts/lib/line_chart/segments.dart | 234 -------------- web/charts/lib/line_chart/simple.dart | 102 ------ web/charts/lib/line_chart/simple_nulls.dart | 180 ----------- web/charts/lib/line_chart/stacked_area.dart | 161 ---------- .../line_chart/stacked_area_custom_color.dart | 177 ----------- .../lib/line_chart/stacked_area_nulls.dart | 192 ----------- web/charts/lib/main.dart | 54 ---- web/charts/lib/pie_chart/auto_label.dart | 123 ------- web/charts/lib/pie_chart/donut.dart | 104 ------ web/charts/lib/pie_chart/gauge.dart | 106 ------- web/charts/lib/pie_chart/outside_label.dart | 119 ------- web/charts/lib/pie_chart/partial_pie.dart | 105 ------ web/charts/lib/pie_chart/pie_gallery.dart | 65 ---- web/charts/lib/pie_chart/simple.dart | 100 ------ .../scatter_plot_chart/animation_zoom.dart | 143 --------- .../scatter_plot_chart/bucketing_axis.dart | 259 --------------- .../scatter_plot_chart/comparison_points.dart | 170 ---------- .../scatter_plot_gallery.dart | 58 ---- web/charts/lib/scatter_plot_chart/shapes.dart | 205 ------------ web/charts/lib/scatter_plot_chart/simple.dart | 151 --------- .../confidence_interval.dart | 120 ------- .../time_series_chart/end_points_axis.dart | 112 ------- .../time_series_chart/line_annotation.dart | 116 ------- .../time_series_chart/range_annotation.dart | 113 ------- .../range_annotation_margin.dart | 139 -------- web/charts/lib/time_series_chart/simple.dart | 109 ------- .../time_series_chart/symbol_annotation.dart | 300 ------------------ .../time_series_gallery.dart | 79 ----- .../time_series_chart/with_bar_renderer.dart | 149 --------- web/charts/pubspec.yaml | 21 -- web/charts/web/index.html | 11 - web/samples_index/lib/src/samples.yaml | 17 - 121 files changed, 17024 deletions(-) delete mode 100644 web/charts/README.md delete mode 100644 web/charts/analysis_options.yaml delete mode 100644 web/charts/assets/preview.png delete mode 100644 web/charts/lib/a11y/a11y_gallery.dart delete mode 100644 web/charts/lib/a11y/domain_a11y_explore_bar_chart.dart delete mode 100644 web/charts/lib/app_config.dart delete mode 100644 web/charts/lib/axes/axes_gallery.dart delete mode 100644 web/charts/lib/axes/bar_secondary_axis.dart delete mode 100644 web/charts/lib/axes/bar_secondary_axis_only.dart delete mode 100644 web/charts/lib/axes/custom_axis_tick_formatters.dart delete mode 100644 web/charts/lib/axes/custom_font_size_and_color.dart delete mode 100644 web/charts/lib/axes/custom_measure_tick_count.dart delete mode 100644 web/charts/lib/axes/flipped_vertical_axis.dart delete mode 100644 web/charts/lib/axes/gridline_dash_pattern.dart delete mode 100644 web/charts/lib/axes/hidden_ticks_and_labels_axis.dart delete mode 100644 web/charts/lib/axes/horizontal_bar_secondary_axis.dart delete mode 100644 web/charts/lib/axes/integer_only_measure_axis.dart delete mode 100644 web/charts/lib/axes/line_disjoint_axis.dart delete mode 100644 web/charts/lib/axes/measure_axis_label_alignment.dart delete mode 100644 web/charts/lib/axes/nonzero_bound_measure_axis.dart delete mode 100644 web/charts/lib/axes/numeric_initial_viewport.dart delete mode 100644 web/charts/lib/axes/ordinal_initial_viewport.dart delete mode 100644 web/charts/lib/axes/short_tick_length_axis.dart delete mode 100644 web/charts/lib/axes/statically_provided_ticks.dart delete mode 100644 web/charts/lib/bar_chart/bar_gallery.dart delete mode 100644 web/charts/lib/bar_chart/custom_rounded_bars.dart delete mode 100644 web/charts/lib/bar_chart/grouped.dart delete mode 100644 web/charts/lib/bar_chart/grouped_fill_color.dart delete mode 100644 web/charts/lib/bar_chart/grouped_single_target_line.dart delete mode 100644 web/charts/lib/bar_chart/grouped_stacked.dart delete mode 100644 web/charts/lib/bar_chart/grouped_stacked_weight_pattern.dart delete mode 100644 web/charts/lib/bar_chart/grouped_target_line.dart delete mode 100644 web/charts/lib/bar_chart/horizontal.dart delete mode 100644 web/charts/lib/bar_chart/horizontal_bar_label.dart delete mode 100644 web/charts/lib/bar_chart/horizontal_bar_label_custom.dart delete mode 100644 web/charts/lib/bar_chart/horizontal_pattern_forward_hatch.dart delete mode 100644 web/charts/lib/bar_chart/pattern_forward_hatch.dart delete mode 100644 web/charts/lib/bar_chart/simple.dart delete mode 100644 web/charts/lib/bar_chart/spark_bar.dart delete mode 100644 web/charts/lib/bar_chart/stacked.dart delete mode 100644 web/charts/lib/bar_chart/stacked_fill_color.dart delete mode 100644 web/charts/lib/bar_chart/stacked_horizontal.dart delete mode 100644 web/charts/lib/bar_chart/stacked_target_line.dart delete mode 100644 web/charts/lib/behaviors/behaviors_gallery.dart delete mode 100644 web/charts/lib/behaviors/chart_title.dart delete mode 100644 web/charts/lib/behaviors/initial_hint_animation.dart delete mode 100644 web/charts/lib/behaviors/initial_selection.dart delete mode 100644 web/charts/lib/behaviors/percent_of_domain.dart delete mode 100644 web/charts/lib/behaviors/percent_of_domain_by_category.dart delete mode 100644 web/charts/lib/behaviors/percent_of_series.dart delete mode 100644 web/charts/lib/behaviors/selection_bar_highlight.dart delete mode 100644 web/charts/lib/behaviors/selection_callback_example.dart delete mode 100644 web/charts/lib/behaviors/selection_line_highlight.dart delete mode 100644 web/charts/lib/behaviors/selection_line_highlight_custom_shape.dart delete mode 100644 web/charts/lib/behaviors/selection_scatter_plot_highlight.dart delete mode 100644 web/charts/lib/behaviors/selection_user_managed.dart delete mode 100644 web/charts/lib/behaviors/slider.dart delete mode 100644 web/charts/lib/behaviors/sliding_viewport_on_selection.dart delete mode 100644 web/charts/lib/combo_chart/combo_gallery.dart delete mode 100644 web/charts/lib/combo_chart/date_time_line_point.dart delete mode 100644 web/charts/lib/combo_chart/numeric_line_bar.dart delete mode 100644 web/charts/lib/combo_chart/numeric_line_point.dart delete mode 100644 web/charts/lib/combo_chart/ordinal_bar_line.dart delete mode 100644 web/charts/lib/combo_chart/scatter_plot_line.dart delete mode 100644 web/charts/lib/drawer.dart delete mode 100644 web/charts/lib/gallery_scaffold.dart delete mode 100644 web/charts/lib/home.dart delete mode 100644 web/charts/lib/i18n/i18n_gallery.dart delete mode 100644 web/charts/lib/i18n/rtl_bar_chart.dart delete mode 100644 web/charts/lib/i18n/rtl_line_chart.dart delete mode 100644 web/charts/lib/i18n/rtl_line_segments.dart delete mode 100644 web/charts/lib/i18n/rtl_series_legend.dart delete mode 100644 web/charts/lib/legends/datum_legend_options.dart delete mode 100644 web/charts/lib/legends/datum_legend_with_measures.dart delete mode 100644 web/charts/lib/legends/default_hidden_series_legend.dart delete mode 100644 web/charts/lib/legends/legend_custom_symbol.dart delete mode 100644 web/charts/lib/legends/legends_gallery.dart delete mode 100644 web/charts/lib/legends/series_legend_options.dart delete mode 100644 web/charts/lib/legends/series_legend_with_measures.dart delete mode 100644 web/charts/lib/legends/simple_datum_legend.dart delete mode 100644 web/charts/lib/legends/simple_series_legend.dart delete mode 100644 web/charts/lib/line_chart/animation_zoom.dart delete mode 100644 web/charts/lib/line_chart/area_and_line.dart delete mode 100644 web/charts/lib/line_chart/dash_pattern.dart delete mode 100644 web/charts/lib/line_chart/line_annotation.dart delete mode 100644 web/charts/lib/line_chart/line_gallery.dart delete mode 100644 web/charts/lib/line_chart/points.dart delete mode 100644 web/charts/lib/line_chart/range_annotation.dart delete mode 100644 web/charts/lib/line_chart/range_annotation_margin.dart delete mode 100644 web/charts/lib/line_chart/segments.dart delete mode 100644 web/charts/lib/line_chart/simple.dart delete mode 100644 web/charts/lib/line_chart/simple_nulls.dart delete mode 100644 web/charts/lib/line_chart/stacked_area.dart delete mode 100644 web/charts/lib/line_chart/stacked_area_custom_color.dart delete mode 100644 web/charts/lib/line_chart/stacked_area_nulls.dart delete mode 100644 web/charts/lib/main.dart delete mode 100644 web/charts/lib/pie_chart/auto_label.dart delete mode 100644 web/charts/lib/pie_chart/donut.dart delete mode 100644 web/charts/lib/pie_chart/gauge.dart delete mode 100644 web/charts/lib/pie_chart/outside_label.dart delete mode 100644 web/charts/lib/pie_chart/partial_pie.dart delete mode 100644 web/charts/lib/pie_chart/pie_gallery.dart delete mode 100644 web/charts/lib/pie_chart/simple.dart delete mode 100644 web/charts/lib/scatter_plot_chart/animation_zoom.dart delete mode 100644 web/charts/lib/scatter_plot_chart/bucketing_axis.dart delete mode 100644 web/charts/lib/scatter_plot_chart/comparison_points.dart delete mode 100644 web/charts/lib/scatter_plot_chart/scatter_plot_gallery.dart delete mode 100644 web/charts/lib/scatter_plot_chart/shapes.dart delete mode 100644 web/charts/lib/scatter_plot_chart/simple.dart delete mode 100644 web/charts/lib/time_series_chart/confidence_interval.dart delete mode 100644 web/charts/lib/time_series_chart/end_points_axis.dart delete mode 100644 web/charts/lib/time_series_chart/line_annotation.dart delete mode 100644 web/charts/lib/time_series_chart/range_annotation.dart delete mode 100644 web/charts/lib/time_series_chart/range_annotation_margin.dart delete mode 100644 web/charts/lib/time_series_chart/simple.dart delete mode 100644 web/charts/lib/time_series_chart/symbol_annotation.dart delete mode 100644 web/charts/lib/time_series_chart/time_series_gallery.dart delete mode 100644 web/charts/lib/time_series_chart/with_bar_renderer.dart delete mode 100644 web/charts/pubspec.yaml delete mode 100644 web/charts/web/index.html diff --git a/web/charts/README.md b/web/charts/README.md deleted file mode 100644 index 86741043c..000000000 --- a/web/charts/README.md +++ /dev/null @@ -1,8 +0,0 @@ -Examples of the [charts_flutter](https://pub.dev/packages/charts_flutter) package running on the web. - -Original source at [github.com/google/charts](https://github.com/google/charts). - -Copied from -[commit 35aeffe7c9](https://github.com/google/charts/commit/35aeffe7c96aa7d231c90fddd9766998545f1080). - -With changes to run on the web. diff --git a/web/charts/analysis_options.yaml b/web/charts/analysis_options.yaml deleted file mode 100644 index 184fcbdd6..000000000 --- a/web/charts/analysis_options.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# This file configures the analyzer, which statically analyzes Dart code to -# check for errors, warnings, and lints. -# -# The issues identified by the analyzer are surfaced in the UI of Dart-enabled -# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be -# invoked from the command line by running `flutter analyze`. - -# The following line activates a set of recommended lints for Flutter apps, -# packages, and plugins designed to encourage good coding practices. -include: package:flutter_lints/flutter.yaml - -linter: - # The lint rules applied to this project can be customized in the - # section below to disable rules from the `package:flutter_lints/flutter.yaml` - # included above or to enable additional rules. A list of all available lints - # and their documentation is published at - # https://dart-lang.github.io/linter/lints/index.html. - # - # Instead of disabling a lint rule for the entire project in the - # section below, it can also be suppressed for a single line of code - # or a specific dart file by using the `// ignore: name_of_lint` and - # `// ignore_for_file: name_of_lint` syntax on the line or in the file - # producing the lint. - rules: - avoid_print: false - prefer_single_quotes: true - -# Additional information about this file can be found at -# https://dart.dev/guides/language/analysis-options \ No newline at end of file diff --git a/web/charts/assets/preview.png b/web/charts/assets/preview.png deleted file mode 100644 index 45399d470dc99458deaa53ed087223c00bb4d12e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6711 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 buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.accessibility), - title: 'Screen reader enabled bar chart', - subtitle: 'Requires TalkBack or Voiceover turned on to work. ' - 'Bar chart with domain selection explore mode behavior.', - childBuilder: () => DomainA11yExploreBarChart.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/a11y/domain_a11y_explore_bar_chart.dart b/web/charts/lib/a11y/domain_a11y_explore_bar_chart.dart deleted file mode 100644 index 6e8a6053a..000000000 --- a/web/charts/lib/a11y/domain_a11y_explore_bar_chart.dart +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a bar chart with domain selection A11y behavior. -/// -/// The OS screen reader (TalkBack / VoiceOver) setting must be turned on, or -/// the behavior does not do anything. -/// -/// Note that the screenshot does not show any visual differences but when the -/// OS screen reader is enabled, the node that is being read out loud will be -/// surrounded by a rectangle. -/// -/// When [DomainA11yExploreBehavior] is added to the chart, the chart will -/// listen for the gesture that triggers "explore mode". -/// "Explore mode" creates semantic nodes for each domain value in the chart -/// with a description (customizable, defaults to domain value) and a bounding -/// box that surrounds the domain. -/// -/// These semantic node descriptions are read out loud by the OS screen reader -/// when the user taps within the bounding box, or when the user cycles through -/// the screen's elements (such as swiping left and right). -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class DomainA11yExploreBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const DomainA11yExploreBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory DomainA11yExploreBarChart.withSampleData() { - return DomainA11yExploreBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory DomainA11yExploreBarChart.withRandomData() { - return DomainA11yExploreBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final mobileData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tabletData = [ - // Purposely missing data to show that only measures that are available - // are vocalized. - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Mobile Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileData, - ), - charts.Series( - id: 'Tablet Sales', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletData, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - /// An example of how to generate a customized vocalization for - /// [DomainA11yExploreBehavior] from a list of [SeriesDatum]s. - /// - /// The list of series datums is for one domain. - /// - /// This example vocalizes the domain, then for each series that has that - /// domain, it vocalizes the series display name and the measure and a - /// description of that measure. - String vocalizeDomainAndMeasures(List seriesDatums) { - final buffer = StringBuffer(); - - // The datum's type in this case is [OrdinalSales]. - // So we can access year and sales information here. - buffer.write(seriesDatums.first.datum.year); - - for (charts.SeriesDatum seriesDatum in seriesDatums) { - final series = seriesDatum.series; - final datum = seriesDatum.datum; - - buffer.write(' ${series.displayName} ' - '${datum.sales / 1000} thousand dollars'); - } - - return buffer.toString(); - } - - @override - Widget build(BuildContext context) { - return Semantics( - // Describe your chart - label: 'Yearly sales bar chart', - // Optionally provide a hint for the user to know how to trigger - // explore mode. - hint: 'Press and hold to enable explore', - child: charts.BarChart( - seriesList, - animate: animate, - // To prevent conflict with the select nearest behavior that uses the - // tap gesture, turn off default interactions when the user is using - // an accessibility service like TalkBack or VoiceOver to interact - // with the application. - defaultInteractions: !MediaQuery.of(context).accessibleNavigation, - behaviors: [ - charts.DomainA11yExploreBehavior( - // Callback for generating the message that is vocalized. - // An example of how to use is in [vocalizeDomainAndMeasures]. - // If none is set, the default only vocalizes the domain value. - vocalizationCallback: vocalizeDomainAndMeasures, - // The following settings are optional, but shown here for - // demonstration purchases. - // [exploreModeTrigger] Default is press and hold, can be - // changed to tap. - exploreModeTrigger: charts.ExploreModeTrigger.pressHold, - // [exploreModeEnabledAnnouncement] Optionally notify the OS - // when explore mode is enabled. - exploreModeEnabledAnnouncement: 'Explore mode enabled', - // [exploreModeDisabledAnnouncement] Optionally notify the OS - // when explore mode is disabled. - exploreModeDisabledAnnouncement: 'Explore mode disabled', - // [minimumWidth] Default and minimum is 1.0. This is the - // minimum width of the screen reader bounding box. The bounding - // box width is calculated based on the domain axis step size. - // Minimum width will be used if the step size is smaller. - minimumWidth: 1.0, - ), - // Optionally include domain highlighter as a behavior. - // This behavior is included in this example to show that when an - // a11y node has focus, the chart's internal selection model is - // also updated. - charts.DomainHighlighter(charts.SelectionModelType.info), - ], - )); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final mobileData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tabletData = [ - // Purposely missing data to show that only measures that are available - // are vocalized. - OrdinalSales('2016', 25), - OrdinalSales('2017', 50), - ]; - - return [ - charts.Series( - id: 'Mobile Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileData, - ), - charts.Series( - id: 'Tablet Sales', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletData, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/app_config.dart b/web/charts/lib/app_config.dart deleted file mode 100644 index 760e8e680..000000000 --- a/web/charts/lib/app_config.dart +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; - -/// A particular configuration of the app. -class AppConfig { - final String appName; - final String appLink; - final ThemeData theme; - final bool showPerformanceOverlay; - - AppConfig({ - required this.appName, - required this.appLink, - required this.theme, - required this.showPerformanceOverlay, - }); -} - -/// The default configuration of the app. -AppConfig get defaultConfig { - return AppConfig( - appName: 'Charts Gallery', - appLink: '', - theme: ThemeData( - brightness: Brightness.light, - primarySwatch: Colors.lightBlue, - ), - showPerformanceOverlay: false, - ); -} diff --git a/web/charts/lib/axes/axes_gallery.dart b/web/charts/lib/axes/axes_gallery.dart deleted file mode 100644 index f7b9cc5e2..000000000 --- a/web/charts/lib/axes/axes_gallery.dart +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'bar_secondary_axis.dart'; -import 'bar_secondary_axis_only.dart'; -import 'custom_axis_tick_formatters.dart'; -import 'custom_font_size_and_color.dart'; -import 'custom_measure_tick_count.dart'; -import 'gridline_dash_pattern.dart'; -import 'hidden_ticks_and_labels_axis.dart'; -import 'horizontal_bar_secondary_axis.dart'; -import 'integer_only_measure_axis.dart'; -import 'line_disjoint_axis.dart'; -import 'measure_axis_label_alignment.dart'; -import 'numeric_initial_viewport.dart'; -import 'nonzero_bound_measure_axis.dart'; -import 'ordinal_initial_viewport.dart'; -import 'short_tick_length_axis.dart'; -import 'statically_provided_ticks.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Bar chart with Secondary Measure Axis', - subtitle: 'Bar chart with a series using a secondary measure axis', - childBuilder: () => BarChartWithSecondaryAxis.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Bar chart with Secondary Measure Axis only', - subtitle: 'Bar chart with both series using secondary measure axis', - childBuilder: () => BarChartWithSecondaryAxisOnly.withRandomData(), - ), - GalleryScaffold( - listTileIcon: Transform.rotate( - angle: 1.5708, child: const Icon(Icons.insert_chart)), - title: 'Horizontal bar chart with Secondary Measure Axis', - subtitle: - 'Horizontal Bar chart with a series using secondary measure axis', - childBuilder: () => HorizontalBarChartWithSecondaryAxis.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Short Ticks Axis', - subtitle: 'Bar chart with the primary measure axis having short ticks', - childBuilder: () => ShortTickLengthAxis.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Custom Axis Fonts', - subtitle: 'Bar chart with custom axis font size and color', - childBuilder: () => CustomFontSizeAndColor.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Label Alignment Axis', - subtitle: 'Bar chart with custom measure axis label alignments', - childBuilder: () => MeasureAxisLabelAlignment.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'No Axis', - subtitle: 'Bar chart with only the axis line drawn', - childBuilder: () => HiddenTicksAndLabelsAxis.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Statically Provided Ticks', - subtitle: 'Bar chart with statically provided ticks', - childBuilder: () => StaticallyProvidedTicks.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Custom Formatter', - subtitle: 'Timeseries with custom domain and measure tick formatters', - childBuilder: () => CustomAxisTickFormatters.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Custom Tick Count', - subtitle: 'Timeseries with custom measure axis tick count', - childBuilder: () => CustomMeasureTickCount.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Integer Measure Ticks', - subtitle: 'Timeseries with only whole number measure axis ticks', - childBuilder: () => IntegerOnlyMeasureAxis.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Non-zero bound Axis', - subtitle: 'Timeseries with measure axis that does not include zero', - childBuilder: () => NonzeroBoundMeasureAxis.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Ordinal axis with initial viewport', - subtitle: 'Single series with initial viewport', - childBuilder: () => OrdinalInitialViewport.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Numeric axis with initial viewport', - subtitle: 'Initial viewport is set to a subset of the data', - childBuilder: () => NumericInitialViewport.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Gridline dash pattern', - subtitle: 'Timeseries with measure gridlines that have a dash pattern', - childBuilder: () => GridlineDashPattern.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Disjoint Measure Axes', - subtitle: 'Line chart with disjoint measure axes', - childBuilder: () => DisjointMeasureAxisLineChart.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/axes/bar_secondary_axis.dart b/web/charts/lib/axes/bar_secondary_axis.dart deleted file mode 100644 index 1197d6de4..000000000 --- a/web/charts/lib/axes/bar_secondary_axis.dart +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of using a primary and secondary axis (left & right respectively) -/// for a set of grouped bars. This is useful for comparing Series that have -/// different units (revenue vs clicks by region), or different magnitudes (2017 -/// revenue vs 1/1/2017 revenue by region). -/// -/// The first series plots using the primary axis to position its measure -/// values (bar height). This is the default axis used if the measureAxisId is -/// not set. -/// -/// The second series plots using the secondary axis due to the measureAxisId of -/// secondaryMeasureAxisId. -/// -/// Note: primary and secondary may flip left and right positioning when -/// RTL.flipAxisLocations is set. -class BarChartWithSecondaryAxis extends StatelessWidget { - static const secondaryMeasureAxisId = 'secondaryMeasureAxisId'; - final List> seriesList; - final bool? animate; - - const BarChartWithSecondaryAxis(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory BarChartWithSecondaryAxis.withSampleData() { - return BarChartWithSecondaryAxis( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory BarChartWithSecondaryAxis.withRandomData() { - return BarChartWithSecondaryAxis(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final globalSalesData = [ - OrdinalSales('2014', random.nextInt(100) * 100), - OrdinalSales('2015', random.nextInt(100) * 100), - OrdinalSales('2016', random.nextInt(100) * 100), - OrdinalSales('2017', random.nextInt(100) * 100), - ]; - - final losAngelesSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - charts.Series( - id: 'Los Angeles Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: losAngelesSalesData, - )..setAttribute(charts.measureAxisIdKey, secondaryMeasureAxisId) - // Set the 'Los Angeles Revenue' series to use the secondary measure axis. - // All series that have this set will use the secondary measure axis. - // All other series will use the primary measure axis. - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - // It is important when using both primary and secondary axes to choose - // the same number of ticks for both sides to get the gridlines to line - // up. - primaryMeasureAxis: const charts.NumericAxisSpec( - tickProviderSpec: - charts.BasicNumericTickProviderSpec(desiredTickCount: 3)), - secondaryMeasureAxis: const charts.NumericAxisSpec( - tickProviderSpec: - charts.BasicNumericTickProviderSpec(desiredTickCount: 3)), - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final globalSalesData = [ - OrdinalSales('2014', 5000), - OrdinalSales('2015', 25000), - OrdinalSales('2016', 100000), - OrdinalSales('2017', 750000), - ]; - - final losAngelesSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - charts.Series( - id: 'Los Angeles Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: losAngelesSalesData, - )..setAttribute(charts.measureAxisIdKey, secondaryMeasureAxisId) - // Set the 'Los Angeles Revenue' series to use the secondary measure axis. - // All series that have this set will use the secondary measure axis. - // All other series will use the primary measure axis. - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/axes/bar_secondary_axis_only.dart b/web/charts/lib/axes/bar_secondary_axis_only.dart deleted file mode 100644 index 3acc51239..000000000 --- a/web/charts/lib/axes/bar_secondary_axis_only.dart +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of using only a secondary axis (on the right) for a set of grouped -/// bars. -/// -/// Both series plots using the secondary axis due to the measureAxisId of -/// secondaryMeasureAxisId. -/// -/// Note: secondary may flip left and right positioning when -/// RTL.flipAxisLocations is set. -class BarChartWithSecondaryAxisOnly extends StatelessWidget { - static const secondaryMeasureAxisId = 'secondaryMeasureAxisId'; - final List> seriesList; - final bool? animate; - - const BarChartWithSecondaryAxisOnly(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory BarChartWithSecondaryAxisOnly.withSampleData() { - return BarChartWithSecondaryAxisOnly( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory BarChartWithSecondaryAxisOnly.withRandomData() { - return BarChartWithSecondaryAxisOnly(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final globalSalesData = [ - OrdinalSales('2014', random.nextInt(100) * 100), - OrdinalSales('2015', random.nextInt(100) * 100), - OrdinalSales('2016', random.nextInt(100) * 100), - OrdinalSales('2017', random.nextInt(100) * 100), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ) - // Set series to use the secondary measure axis. - ..setAttribute(charts.measureAxisIdKey, secondaryMeasureAxisId), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final globalSalesData = [ - OrdinalSales('2014', 500), - OrdinalSales('2015', 2500), - OrdinalSales('2016', 1000), - OrdinalSales('2017', 7500), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ) - // Set series to use the secondary measure axis. - ..setAttribute(charts.measureAxisIdKey, secondaryMeasureAxisId), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/axes/custom_axis_tick_formatters.dart b/web/charts/lib/axes/custom_axis_tick_formatters.dart deleted file mode 100644 index 53f9c1f5e..000000000 --- a/web/charts/lib/axes/custom_axis_tick_formatters.dart +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of timeseries chart with custom measure and domain formatters. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; -import 'package:intl/intl.dart'; - -class CustomAxisTickFormatters extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const CustomAxisTickFormatters(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory CustomAxisTickFormatters.withSampleData() { - return CustomAxisTickFormatters( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory CustomAxisTickFormatters.withRandomData() { - return CustomAxisTickFormatters(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - MyRow(DateTime(2017, 9, 25), random.nextInt(100)), - MyRow(DateTime(2017, 9, 26), random.nextInt(100)), - MyRow(DateTime(2017, 9, 27), random.nextInt(100)), - MyRow(DateTime(2017, 9, 28), random.nextInt(100)), - MyRow(DateTime(2017, 9, 29), random.nextInt(100)), - MyRow(DateTime(2017, 9, 30), random.nextInt(100)), - MyRow(DateTime(2017, 10, 01), random.nextInt(100)), - MyRow(DateTime(2017, 10, 02), random.nextInt(100)), - MyRow(DateTime(2017, 10, 03), random.nextInt(100)), - MyRow(DateTime(2017, 10, 04), random.nextInt(100)), - MyRow(DateTime(2017, 10, 05), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Cost', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.cost, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - /// Formatter for numeric ticks using [NumberFormat] to format into currency - /// - /// This is what is used in the [NumericAxisSpec] below. - final simpleCurrencyFormatter = - charts.BasicNumericTickFormatterSpec.fromNumberFormat( - NumberFormat.compactSimpleCurrency()); - - /// Formatter for numeric ticks that uses the callback provided. - /// - /// Use this formatter if you need to format values that [NumberFormat] - /// cannot provide. - /// - /// To see this formatter, change [NumericAxisSpec] to use this formatter. - // final customTickFormatter = - // charts.BasicNumericTickFormatterSpec((num value) => 'MyValue: $value'); - - return charts.TimeSeriesChart(seriesList, - animate: animate, - // Sets up a currency formatter for the measure axis. - primaryMeasureAxis: - charts.NumericAxisSpec(tickFormatterSpec: simpleCurrencyFormatter), - - /// Customizes the date tick formatter. It will print the day of month - /// as the default format, but include the month and year if it - /// transitions to a new month. - /// - /// minute, hour, day, month, and year are all provided by default and - /// you can override them following this pattern. - domainAxis: const charts.DateTimeAxisSpec( - tickFormatterSpec: charts.AutoDateTimeTickFormatterSpec( - day: charts.TimeFormatterSpec( - format: 'd', transitionFormat: 'MM/dd/yyyy')))); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - MyRow(DateTime(2017, 9, 25), 6), - MyRow(DateTime(2017, 9, 26), 8), - MyRow(DateTime(2017, 9, 27), 6), - MyRow(DateTime(2017, 9, 28), 9), - MyRow(DateTime(2017, 9, 29), 11), - MyRow(DateTime(2017, 9, 30), 15), - MyRow(DateTime(2017, 10, 01), 25), - MyRow(DateTime(2017, 10, 02), 33), - MyRow(DateTime(2017, 10, 03), 27), - MyRow(DateTime(2017, 10, 04), 31), - MyRow(DateTime(2017, 10, 05), 23), - ]; - - return [ - charts.Series( - id: 'Cost', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.cost, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class MyRow { - final DateTime timeStamp; - final int cost; - MyRow(this.timeStamp, this.cost); -} diff --git a/web/charts/lib/axes/custom_font_size_and_color.dart b/web/charts/lib/axes/custom_font_size_and_color.dart deleted file mode 100644 index 2f02cce22..000000000 --- a/web/charts/lib/axes/custom_font_size_and_color.dart +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Custom Font Style Example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of using a custom primary measure and domain axis replacing the -/// renderSpec with one with a custom font size and a custom color. -/// -/// There are many axis styling options in the SmallTickRenderer allowing you -/// to customize the font, tick lengths, and offsets. -class CustomFontSizeAndColor extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const CustomFontSizeAndColor(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory CustomFontSizeAndColor.withSampleData() { - return CustomFontSizeAndColor( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory CustomFontSizeAndColor.withRandomData() { - return CustomFontSizeAndColor(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final globalSalesData = [ - OrdinalSales('2014', random.nextInt(100) * 100), - OrdinalSales('2015', random.nextInt(100) * 100), - OrdinalSales('2016', random.nextInt(100) * 100), - OrdinalSales('2017', random.nextInt(100) * 100), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - - /// Assign a custom style for the domain axis. - /// - /// This is an OrdinalAxisSpec to match up with BarChart's default - /// ordinal domain axis (use NumericAxisSpec or DateTimeAxisSpec for - /// other charts). - domainAxis: const charts.OrdinalAxisSpec( - renderSpec: charts.SmallTickRendererSpec( - - // Tick and Label styling here. - labelStyle: charts.TextStyleSpec( - fontSize: 18, // size in Pts. - color: charts.MaterialPalette.black), - - // Change the line colors to match text color. - lineStyle: - charts.LineStyleSpec(color: charts.MaterialPalette.black))), - - /// Assign a custom style for the measure axis. - primaryMeasureAxis: const charts.NumericAxisSpec( - renderSpec: charts.GridlineRendererSpec( - - // Tick and Label styling here. - labelStyle: charts.TextStyleSpec( - fontSize: 18, // size in Pts. - color: charts.MaterialPalette.black), - - // Change the line colors to match text color. - lineStyle: - charts.LineStyleSpec(color: charts.MaterialPalette.black))), - ); - } - - /// Create series list with single series - static List> _createSampleData() { - final globalSalesData = [ - OrdinalSales('2014', 5000), - OrdinalSales('2015', 25000), - OrdinalSales('2016', 100000), - OrdinalSales('2017', 750000), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/axes/custom_measure_tick_count.dart b/web/charts/lib/axes/custom_measure_tick_count.dart deleted file mode 100644 index 4c230113d..000000000 --- a/web/charts/lib/axes/custom_measure_tick_count.dart +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of timeseries chart with a custom number of ticks -/// -/// The tick count can be set by setting the [desiredMinTickCount] and -/// [desiredMaxTickCount] for automatically adjusted tick counts (based on -/// how 'nice' the ticks are) or [desiredTickCount] for a fixed tick count. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class CustomMeasureTickCount extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const CustomMeasureTickCount(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory CustomMeasureTickCount.withSampleData() { - return CustomMeasureTickCount( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory CustomMeasureTickCount.withRandomData() { - return CustomMeasureTickCount(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - MyRow(DateTime(2017, 9, 25), random.nextInt(100)), - MyRow(DateTime(2017, 9, 26), random.nextInt(100)), - MyRow(DateTime(2017, 9, 27), random.nextInt(100)), - MyRow(DateTime(2017, 9, 28), random.nextInt(100)), - MyRow(DateTime(2017, 9, 29), random.nextInt(100)), - MyRow(DateTime(2017, 9, 30), random.nextInt(100)), - MyRow(DateTime(2017, 10, 01), random.nextInt(100)), - MyRow(DateTime(2017, 10, 02), random.nextInt(100)), - MyRow(DateTime(2017, 10, 03), random.nextInt(100)), - MyRow(DateTime(2017, 10, 04), random.nextInt(100)), - MyRow(DateTime(2017, 10, 05), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Cost', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.cost, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart(seriesList, - animate: animate, - - /// Customize the measure axis to have 2 ticks, - primaryMeasureAxis: const charts.NumericAxisSpec( - tickProviderSpec: - charts.BasicNumericTickProviderSpec(desiredTickCount: 2))); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - MyRow(DateTime(2017, 9, 25), 6), - MyRow(DateTime(2017, 9, 26), 8), - MyRow(DateTime(2017, 9, 27), 6), - MyRow(DateTime(2017, 9, 28), 9), - MyRow(DateTime(2017, 9, 29), 11), - MyRow(DateTime(2017, 9, 30), 15), - MyRow(DateTime(2017, 10, 01), 25), - MyRow(DateTime(2017, 10, 02), 33), - MyRow(DateTime(2017, 10, 03), 27), - MyRow(DateTime(2017, 10, 04), 31), - MyRow(DateTime(2017, 10, 05), 23), - ]; - - return [ - charts.Series( - id: 'Cost', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.cost, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class MyRow { - final DateTime timeStamp; - final int cost; - MyRow(this.timeStamp, this.cost); -} diff --git a/web/charts/lib/axes/flipped_vertical_axis.dart b/web/charts/lib/axes/flipped_vertical_axis.dart deleted file mode 100644 index 475e32569..000000000 --- a/web/charts/lib/axes/flipped_vertical_axis.dart +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of flipping the vertical measure axis direction so that larger -/// values render downward instead of the usual rendering up. -/// -/// flipVerticalAxis, when set, flips the vertical axis from its default -/// direction. -/// -/// Note: primary and secondary may flip left and right positioning when -/// RTL.flipAxisLocations is set. -class FlippedVerticalAxis extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const FlippedVerticalAxis(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory FlippedVerticalAxis.withSampleData() { - return FlippedVerticalAxis( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory FlippedVerticalAxis.withRandomData() { - return FlippedVerticalAxis(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - const runners = ['Smith', 'Jones', 'Brown', 'Doe']; - - // Randomly assign runners, but leave the order of the places. - final raceData = [ - RunnerRank(runners.removeAt(random.nextInt(runners.length)), 1), - RunnerRank(runners.removeAt(random.nextInt(runners.length)), 2), - RunnerRank(runners.removeAt(random.nextInt(runners.length)), 3), - RunnerRank(runners.removeAt(random.nextInt(runners.length)), 4), - ]; - - return [ - charts.Series( - id: 'Race Results', - domainFn: (RunnerRank row, _) => row.name, - measureFn: (RunnerRank row, _) => row.place, - data: raceData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - // Known Issue, the bar chart cannot render negative direction bars at this - // time so the result is an empty chart. - // TODO: Remove this comment - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - flipVerticalAxis: true, - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final raceData = [ - RunnerRank('Smith', 1), - RunnerRank('Jones', 2), - RunnerRank('Brown', 3), - RunnerRank('Doe', 4), - ]; - - return [ - charts.Series( - id: 'Race Results', - domainFn: (RunnerRank row, _) => row.name, - measureFn: (RunnerRank row, _) => row.place, - data: raceData), - ]; - } -} - -/// Datum/Row for the chart. -class RunnerRank { - final String name; - final int place; - RunnerRank(this.name, this.place); -} diff --git a/web/charts/lib/axes/gridline_dash_pattern.dart b/web/charts/lib/axes/gridline_dash_pattern.dart deleted file mode 100644 index fe6c20c3f..000000000 --- a/web/charts/lib/axes/gridline_dash_pattern.dart +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of timeseries chart with gridlines that have a dash pattern. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class GridlineDashPattern extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const GridlineDashPattern(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory GridlineDashPattern.withSampleData() { - return GridlineDashPattern( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory GridlineDashPattern.withRandomData() { - return GridlineDashPattern(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - MyRow(DateTime(2017, 9, 25), random.nextInt(100)), - MyRow(DateTime(2017, 9, 26), random.nextInt(100)), - MyRow(DateTime(2017, 9, 27), random.nextInt(100)), - MyRow(DateTime(2017, 9, 28), random.nextInt(100)), - MyRow(DateTime(2017, 9, 29), random.nextInt(100)), - MyRow(DateTime(2017, 9, 30), random.nextInt(100)), - MyRow(DateTime(2017, 10, 01), random.nextInt(100)), - MyRow(DateTime(2017, 10, 02), random.nextInt(100)), - MyRow(DateTime(2017, 10, 03), random.nextInt(100)), - MyRow(DateTime(2017, 10, 04), random.nextInt(100)), - MyRow(DateTime(2017, 10, 05), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Cost', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.cost, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart(seriesList, - animate: animate, - - /// Customize the gridlines to use a dash pattern. - primaryMeasureAxis: const charts.NumericAxisSpec( - renderSpec: charts.GridlineRendererSpec( - lineStyle: charts.LineStyleSpec( - dashPattern: [4, 4], - )))); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - MyRow(DateTime(2017, 9, 25), 6), - MyRow(DateTime(2017, 9, 26), 8), - MyRow(DateTime(2017, 9, 27), 6), - MyRow(DateTime(2017, 9, 28), 9), - MyRow(DateTime(2017, 9, 29), 11), - MyRow(DateTime(2017, 9, 30), 15), - MyRow(DateTime(2017, 10, 01), 25), - MyRow(DateTime(2017, 10, 02), 33), - MyRow(DateTime(2017, 10, 03), 27), - MyRow(DateTime(2017, 10, 04), 31), - MyRow(DateTime(2017, 10, 05), 23), - ]; - - return [ - charts.Series( - id: 'Cost', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.cost, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class MyRow { - final DateTime timeStamp; - final int cost; - MyRow(this.timeStamp, this.cost); -} diff --git a/web/charts/lib/axes/hidden_ticks_and_labels_axis.dart b/web/charts/lib/axes/hidden_ticks_and_labels_axis.dart deleted file mode 100644 index aaee6565d..000000000 --- a/web/charts/lib/axes/hidden_ticks_and_labels_axis.dart +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// No Axis Example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of hiding both axis. -class HiddenTicksAndLabelsAxis extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const HiddenTicksAndLabelsAxis(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory HiddenTicksAndLabelsAxis.withSampleData() { - return HiddenTicksAndLabelsAxis( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory HiddenTicksAndLabelsAxis.withRandomData() { - return HiddenTicksAndLabelsAxis(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final globalSalesData = [ - OrdinalSales('2014', random.nextInt(100) * 100), - OrdinalSales('2015', random.nextInt(100) * 100), - OrdinalSales('2016', random.nextInt(100) * 100), - OrdinalSales('2017', random.nextInt(100) * 100), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - - /// Assign a custom style for the measure axis. - /// - /// The NoneRenderSpec can still draw an axis line with - /// showAxisLine=true. - primaryMeasureAxis: - const charts.NumericAxisSpec(renderSpec: charts.NoneRenderSpec()), - - /// This is an OrdinalAxisSpec to match up with BarChart's default - /// ordinal domain axis (use NumericAxisSpec or DateTimeAxisSpec for - /// other charts). - domainAxis: const charts.OrdinalAxisSpec( - // Make sure that we draw the domain axis line. - showAxisLine: true, - // But don't draw anything else. - renderSpec: charts.NoneRenderSpec()), - ); - } - - /// Create series list with single series - static List> _createSampleData() { - final globalSalesData = [ - OrdinalSales('2014', 5000), - OrdinalSales('2015', 25000), - OrdinalSales('2016', 100000), - OrdinalSales('2017', 750000), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/axes/horizontal_bar_secondary_axis.dart b/web/charts/lib/axes/horizontal_bar_secondary_axis.dart deleted file mode 100644 index 13fe15b73..000000000 --- a/web/charts/lib/axes/horizontal_bar_secondary_axis.dart +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of using a primary and secondary axis (left & right respectively) -/// for a set of grouped bars. This is useful for comparing Series that have -/// different units (revenue vs clicks by region), or different magnitudes (2017 -/// revenue vs 1/1/2017 revenue by region). -/// -/// The first series plots using the primary axis to position its measure -/// values (bar height). This is the default axis used if the measureAxisId is -/// not set. -/// -/// The second series plots using the secondary axis due to the measureAxisId of -/// secondaryMeasureAxisId. -/// -/// Note: primary and secondary may flip left and right positioning when -/// RTL.flipAxisLocations is set. -class HorizontalBarChartWithSecondaryAxis extends StatelessWidget { - static const secondaryMeasureAxisId = 'secondaryMeasureAxisId'; - final List> seriesList; - final bool? animate; - - const HorizontalBarChartWithSecondaryAxis(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - factory HorizontalBarChartWithSecondaryAxis.withSampleData() { - return HorizontalBarChartWithSecondaryAxis( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory HorizontalBarChartWithSecondaryAxis.withRandomData() { - return HorizontalBarChartWithSecondaryAxis(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final globalSalesData = [ - OrdinalSales('2014', random.nextInt(100) * 100), - OrdinalSales('2015', random.nextInt(100) * 100), - OrdinalSales('2016', random.nextInt(100) * 100), - OrdinalSales('2017', random.nextInt(100) * 100), - ]; - - final losAngelesSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - charts.Series( - id: 'Los Angeles Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: losAngelesSalesData, - )..setAttribute(charts.measureAxisIdKey, secondaryMeasureAxisId) - // Set the 'Los Angeles Revenue' series to use the secondary measure axis. - // All series that have this set will use the secondary measure axis. - // All other series will use the primary measure axis. - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // For horizontal bar charts, set the [vertical] flag to false. - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - vertical: false, - // It is important when using both primary and secondary axes to choose - // the same number of ticks for both sides to get the gridlines to line - // up. - primaryMeasureAxis: const charts.NumericAxisSpec( - tickProviderSpec: - charts.BasicNumericTickProviderSpec(desiredTickCount: 3)), - secondaryMeasureAxis: const charts.NumericAxisSpec( - tickProviderSpec: - charts.BasicNumericTickProviderSpec(desiredTickCount: 3)), - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final globalSalesData = [ - OrdinalSales('2014', 5000), - OrdinalSales('2015', 25000), - OrdinalSales('2016', 100000), - OrdinalSales('2017', 750000), - ]; - - final losAngelesSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - charts.Series( - id: 'Los Angeles Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: losAngelesSalesData, - )..setAttribute(charts.measureAxisIdKey, secondaryMeasureAxisId) - // Set the 'Los Angeles Revenue' series to use the secondary measure axis. - // All series that have this set will use the secondary measure axis. - // All other series will use the primary measure axis. - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/axes/integer_only_measure_axis.dart b/web/charts/lib/axes/integer_only_measure_axis.dart deleted file mode 100644 index 54a51c537..000000000 --- a/web/charts/lib/axes/integer_only_measure_axis.dart +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of timeseries chart forcing the measure axis to have whole number -/// ticks. This is useful if the measure units don't make sense to present as -/// fractional. -/// -/// This is done by customizing the measure axis and setting -/// [dataIsInWholeNumbers] on the tick provider. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class IntegerOnlyMeasureAxis extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const IntegerOnlyMeasureAxis(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory IntegerOnlyMeasureAxis.withSampleData() { - return IntegerOnlyMeasureAxis( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory IntegerOnlyMeasureAxis.withRandomData() { - return IntegerOnlyMeasureAxis(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - MyRow(DateTime(2017, 9, 25), random.nextDouble().round()), - MyRow(DateTime(2017, 9, 26), random.nextDouble().round()), - MyRow(DateTime(2017, 9, 27), random.nextDouble().round()), - MyRow(DateTime(2017, 9, 28), random.nextDouble().round()), - MyRow(DateTime(2017, 9, 29), random.nextDouble().round()), - MyRow(DateTime(2017, 9, 30), random.nextDouble().round()), - MyRow(DateTime(2017, 10, 01), random.nextDouble().round()), - MyRow(DateTime(2017, 10, 02), random.nextDouble().round()), - MyRow(DateTime(2017, 10, 03), random.nextDouble().round()), - MyRow(DateTime(2017, 10, 04), random.nextDouble().round()), - MyRow(DateTime(2017, 10, 05), random.nextDouble().round()), - ]; - - return [ - charts.Series( - id: 'Headcount', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.headcount, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart( - seriesList, - animate: animate, - // Provides a custom axis ensuring that the ticks are in whole numbers. - primaryMeasureAxis: const charts.NumericAxisSpec( - tickProviderSpec: charts.BasicNumericTickProviderSpec( - // Make sure we don't have values less than 1 as ticks - // (ie: counts). - dataIsInWholeNumbers: true, - // Fixed tick count to highlight the integer only behavior - // generating ticks [0, 1, 2, 3, 4]. - desiredTickCount: 5)), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - MyRow(DateTime(2017, 9, 25), 0), - MyRow(DateTime(2017, 9, 26), 0), - MyRow(DateTime(2017, 9, 27), 0), - MyRow(DateTime(2017, 9, 28), 0), - MyRow(DateTime(2017, 9, 29), 0), - MyRow(DateTime(2017, 9, 30), 0), - MyRow(DateTime(2017, 10, 01), 1), - MyRow(DateTime(2017, 10, 02), 1), - MyRow(DateTime(2017, 10, 03), 1), - MyRow(DateTime(2017, 10, 04), 1), - MyRow(DateTime(2017, 10, 05), 1), - ]; - - return [ - charts.Series( - id: 'Headcount', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.headcount, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class MyRow { - final DateTime timeStamp; - final int headcount; - MyRow(this.timeStamp, this.headcount); -} diff --git a/web/charts/lib/axes/line_disjoint_axis.dart b/web/charts/lib/axes/line_disjoint_axis.dart deleted file mode 100644 index 87dee4fb9..000000000 --- a/web/charts/lib/axes/line_disjoint_axis.dart +++ /dev/null @@ -1,270 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of using disjoint measure axes to render 4 series of lines with -/// separate scales. The general use case for this type of chart is to show -/// differences in the trends of the data, without comparing their absolute -/// values. -/// -/// Disjoint measure axes will be used to scale the series associated with them, -/// but they will not render any tick elements on either side of the chart. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:collection' show LinkedHashMap; -import 'dart:math'; - -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class DisjointMeasureAxisLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const DisjointMeasureAxisLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory DisjointMeasureAxisLineChart.withSampleData() { - return DisjointMeasureAxisLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory DisjointMeasureAxisLineChart.withRandomData() { - return DisjointMeasureAxisLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - // The first three series contain similar data with different magnitudes. - // This demonstrates the ability to graph the trends in each series relative - // to each other, without the largest magnitude series compressing the - // smallest. - final myFakeDesktopData = [ - LinearClicks(0, clickCount: random.nextInt(100)), - LinearClicks(1, clickCount: random.nextInt(100)), - LinearClicks(2, clickCount: random.nextInt(100)), - LinearClicks(3, clickCount: random.nextInt(100)), - ]; - - final myFakeTabletData = [ - LinearClicks(0, clickCount: random.nextInt(100) * 100), - LinearClicks(1, clickCount: random.nextInt(100) * 100), - LinearClicks(2, clickCount: random.nextInt(100) * 100), - LinearClicks(3, clickCount: random.nextInt(100) * 100), - ]; - - final myFakeMobileData = [ - LinearClicks(0, clickCount: random.nextInt(100) * 1000), - LinearClicks(1, clickCount: random.nextInt(100) * 1000), - LinearClicks(2, clickCount: random.nextInt(100) * 1000), - LinearClicks(3, clickCount: random.nextInt(100) * 1000), - ]; - - // The fourth series renders with decimal values, representing a very - // different sort ratio-based data. If this was on the same axis as any of - // the other series, it would be squashed near zero. - final myFakeClickRateData = [ - LinearClicks(0, clickRate: .25), - LinearClicks(1, clickRate: .65), - LinearClicks(2, clickRate: .50), - LinearClicks(3, clickRate: .30), - ]; - - return [ - // We render an empty series on the primary measure axis to ensure that - // the axis itself gets rendered. This helps us draw the gridlines on the - // chart. - charts.Series( - id: 'Fake Series', - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickCount, - data: []), - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickCount, - data: myFakeDesktopData, - ) - // Set the 'Desktop' series to use a disjoint axis. - ..setAttribute(charts.measureAxisIdKey, 'axis 1'), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickCount, - data: myFakeTabletData, - ) - // Set the 'Tablet' series to use a disjoint axis. - ..setAttribute(charts.measureAxisIdKey, 'axis 2'), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickCount, - data: myFakeMobileData, - ) - // Set the 'Mobile' series to use a disjoint axis. - ..setAttribute(charts.measureAxisIdKey, 'axis 3'), - charts.Series( - id: 'Click Rate', - colorFn: (_, __) => charts.MaterialPalette.purple.shadeDefault, - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickCount, - data: myFakeClickRateData, - ) - // Set the 'Click Rate' series to use a disjoint axis. - ..setAttribute(charts.measureAxisIdKey, 'axis 4'), - ]; - } - - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, - animate: animate, - // Configure a primary measure axis that will render gridlines across - // the chart. This axis uses fake ticks with no labels to ensure that we - // get 5 grid lines. - // - // We do this because disjoint measure axes do not draw any tick - // elements on the chart. - primaryMeasureAxis: const charts.NumericAxisSpec( - tickProviderSpec: charts.StaticNumericTickProviderSpec( - // Create the ticks to be used the domain axis. - [ - charts.TickSpec(0, label: ''), - charts.TickSpec(1, label: ''), - charts.TickSpec(2, label: ''), - charts.TickSpec(3, label: ''), - charts.TickSpec(4, label: ''), - ], - )), - // Create one disjoint measure axis per series on the chart. - // - // Disjoint measure axes will be used to scale the rendered data, - // without drawing any tick elements on either side of the chart. - disjointMeasureAxes: - LinkedHashMap.from({ - 'axis 1': const charts.NumericAxisSpec(), - 'axis 2': const charts.NumericAxisSpec(), - 'axis 3': const charts.NumericAxisSpec(), - 'axis 4': const charts.NumericAxisSpec(), - })); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - // The first three series contain similar data with different magnitudes. - // This demonstrates the ability to graph the trends in each series relative - // to each other, without the largest magnitude series compressing the - // smallest. - final myFakeDesktopData = [ - LinearClicks(0, clickCount: 25), - LinearClicks(1, clickCount: 125), - LinearClicks(2, clickCount: 920), - LinearClicks(3, clickCount: 375), - ]; - - final myFakeTabletData = [ - LinearClicks(0, clickCount: 375), - LinearClicks(1, clickCount: 1850), - LinearClicks(2, clickCount: 9700), - LinearClicks(3, clickCount: 5000), - ]; - - final myFakeMobileData = [ - LinearClicks(0, clickCount: 5000), - LinearClicks(1, clickCount: 25000), - LinearClicks(2, clickCount: 100000), - LinearClicks(3, clickCount: 75000), - ]; - - // The fourth series renders with decimal values, representing a very - // different sort ratio-based data. If this was on the same axis as any of - // the other series, it would be squashed near zero. - final myFakeClickRateData = [ - LinearClicks(0, clickRate: .25), - LinearClicks(1, clickRate: .65), - LinearClicks(2, clickRate: .50), - LinearClicks(3, clickRate: .30), - ]; - - return [ - // We render an empty series on the primary measure axis to ensure that - // the axis itself gets rendered. This helps us draw the gridlines on the - // chart. - charts.Series( - id: 'Fake Series', - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickCount, - data: []), - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickCount, - data: myFakeDesktopData, - ) - // Set the 'Desktop' series to use a disjoint axis. - ..setAttribute(charts.measureAxisIdKey, 'axis 1'), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickCount, - data: myFakeTabletData, - ) - // Set the 'Tablet' series to use a disjoint axis. - ..setAttribute(charts.measureAxisIdKey, 'axis 2'), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickCount, - data: myFakeMobileData, - ) - // Set the 'Mobile' series to use a disjoint axis. - ..setAttribute(charts.measureAxisIdKey, 'axis 3'), - charts.Series( - id: 'Click Rate', - colorFn: (_, __) => charts.MaterialPalette.purple.shadeDefault, - domainFn: (LinearClicks clickCount, _) => clickCount.year, - measureFn: (LinearClicks clickCount, _) => clickCount.clickRate, - data: myFakeClickRateData, - ) - // Set the 'Click Rate' series to use a disjoint axis. - ..setAttribute(charts.measureAxisIdKey, 'axis 4'), - ]; - } -} - -/// Sample linear data type. -class LinearClicks { - final int year; - final int? clickCount; - final double? clickRate; - - LinearClicks(this.year, {this.clickCount, this.clickRate}); -} diff --git a/web/charts/lib/axes/measure_axis_label_alignment.dart b/web/charts/lib/axes/measure_axis_label_alignment.dart deleted file mode 100644 index 9cf596642..000000000 --- a/web/charts/lib/axes/measure_axis_label_alignment.dart +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Custom Tick Label Alignment Example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of using a custom primary measure replacing the renderSpec with one -/// that aligns the text under the tick and left justifies. -class MeasureAxisLabelAlignment extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const MeasureAxisLabelAlignment(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory MeasureAxisLabelAlignment.withSampleData() { - return MeasureAxisLabelAlignment( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory MeasureAxisLabelAlignment.withRandomData() { - return MeasureAxisLabelAlignment(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final globalSalesData = [ - OrdinalSales('2014', random.nextInt(100) * 100), - OrdinalSales('2015', random.nextInt(100) * 100), - OrdinalSales('2016', random.nextInt(100) * 100), - OrdinalSales('2017', random.nextInt(100) * 100), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - - /// Customize the primary measure axis using a small tick renderer. - /// Use String instead of num for ordinal domain axis - /// (typically bar charts). - primaryMeasureAxis: const charts.NumericAxisSpec( - renderSpec: charts.GridlineRendererSpec( - // Display the measure axis labels below the gridline. - // - // 'Before' & 'after' follow the axis value direction. - // Vertical axes draw 'before' below & 'after' above the tick. - // Horizontal axes draw 'before' left & 'after' right the tick. - labelAnchor: charts.TickLabelAnchor.before, - - // Left justify the text in the axis. - // - // Note: outside means that the secondary measure axis would right - // justify. - labelJustification: charts.TickLabelJustification.outside, - )), - ); - } - - /// Create series list with single series - static List> _createSampleData() { - final globalSalesData = [ - OrdinalSales('2014', 5000), - OrdinalSales('2015', 25000), - OrdinalSales('2016', 100000), - OrdinalSales('2017', 750000), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/axes/nonzero_bound_measure_axis.dart b/web/charts/lib/axes/nonzero_bound_measure_axis.dart deleted file mode 100644 index 2ed666a4b..000000000 --- a/web/charts/lib/axes/nonzero_bound_measure_axis.dart +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of timeseries chart that has a measure axis that does NOT include -/// zero. It starts at 100 and goes to 140. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class NonzeroBoundMeasureAxis extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const NonzeroBoundMeasureAxis(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory NonzeroBoundMeasureAxis.withSampleData() { - return NonzeroBoundMeasureAxis( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory NonzeroBoundMeasureAxis.withRandomData() { - return NonzeroBoundMeasureAxis(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - MyRow(DateTime(2017, 9, 25), random.nextInt(100) + 100), - MyRow(DateTime(2017, 9, 26), random.nextInt(100) + 100), - MyRow(DateTime(2017, 9, 27), random.nextInt(100) + 100), - MyRow(DateTime(2017, 9, 28), random.nextInt(100) + 100), - MyRow(DateTime(2017, 9, 29), random.nextInt(100) + 100), - MyRow(DateTime(2017, 9, 30), random.nextInt(100) + 100), - MyRow(DateTime(2017, 10, 01), random.nextInt(100) + 100), - MyRow(DateTime(2017, 10, 02), random.nextInt(100) + 100), - MyRow(DateTime(2017, 10, 03), random.nextInt(100) + 100), - MyRow(DateTime(2017, 10, 04), random.nextInt(100) + 100), - MyRow(DateTime(2017, 10, 05), random.nextInt(100) + 100), - ]; - - return [ - charts.Series( - id: 'Headcount', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.headcount, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart(seriesList, - animate: animate, - // Provide a tickProviderSpec which does NOT require that zero is - // included. - primaryMeasureAxis: const charts.NumericAxisSpec( - tickProviderSpec: - charts.BasicNumericTickProviderSpec(zeroBound: false))); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - MyRow(DateTime(2017, 9, 25), 106), - MyRow(DateTime(2017, 9, 26), 108), - MyRow(DateTime(2017, 9, 27), 106), - MyRow(DateTime(2017, 9, 28), 109), - MyRow(DateTime(2017, 9, 29), 111), - MyRow(DateTime(2017, 9, 30), 115), - MyRow(DateTime(2017, 10, 01), 125), - MyRow(DateTime(2017, 10, 02), 133), - MyRow(DateTime(2017, 10, 03), 127), - MyRow(DateTime(2017, 10, 04), 131), - MyRow(DateTime(2017, 10, 05), 123), - ]; - - return [ - charts.Series( - id: 'Headcount', - domainFn: (MyRow row, _) => row.timeStamp, - measureFn: (MyRow row, _) => row.headcount, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class MyRow { - final DateTime timeStamp; - final int headcount; - MyRow(this.timeStamp, this.headcount); -} diff --git a/web/charts/lib/axes/numeric_initial_viewport.dart b/web/charts/lib/axes/numeric_initial_viewport.dart deleted file mode 100644 index ca3e1d363..000000000 --- a/web/charts/lib/axes/numeric_initial_viewport.dart +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of setting an initial viewport for ordinal axis. -/// -/// This allows for specifying the specific range of data to show that differs -/// from what was provided in the series list. -/// -/// In this example, the series list has numeric data from 0 to 10, but we -/// want to show from 3 to 7. -/// We can do this by specifying an [NumericExtents] in [NumericAxisSpec]. - -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class NumericInitialViewport extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const NumericInitialViewport(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory NumericInitialViewport.withSampleData() { - return NumericInitialViewport( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory NumericInitialViewport.withRandomData() { - return NumericInitialViewport(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - LinearSales(4, random.nextInt(100)), - LinearSales(5, random.nextInt(100)), - LinearSales(6, random.nextInt(100)), - LinearSales(7, random.nextInt(100)), - LinearSales(8, random.nextInt(100)), - LinearSales(9, random.nextInt(100)), - LinearSales(10, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart( - seriesList, - animate: animate, - domainAxis: const charts.NumericAxisSpec( - // Set the initial viewport by providing a new AxisSpec with the - // desired viewport, in NumericExtents. - viewport: charts.NumericExtents(3.0, 7.0)), - // Optionally add a pan or pan and zoom behavior. - // If pan/zoom is not added, the viewport specified remains the viewport. - behaviors: [charts.PanAndZoomBehavior()], - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - LinearSales(4, 55), - LinearSales(5, 66), - LinearSales(6, 110), - LinearSales(7, 70), - LinearSales(8, 20), - LinearSales(9, 25), - LinearSales(10, 45), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/axes/ordinal_initial_viewport.dart b/web/charts/lib/axes/ordinal_initial_viewport.dart deleted file mode 100644 index cd48b2024..000000000 --- a/web/charts/lib/axes/ordinal_initial_viewport.dart +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of setting an initial viewport for ordinal axis. -/// -/// This allows for specifying the specific range of data to show that differs -/// from what was provided in the series list. -/// -/// In this example, the series list has ordinal data from year 2014 to 2030, -/// but we want to show starting at 2018 and we only want to show 4 values. -/// We can do this by specifying an [OrdinalViewport] in [OrdinalAxisSpec]. - -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class OrdinalInitialViewport extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const OrdinalInitialViewport(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory OrdinalInitialViewport.withSampleData() { - return OrdinalInitialViewport( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory OrdinalInitialViewport.withRandomData() { - return OrdinalInitialViewport(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - OrdinalSales('2018', random.nextInt(100)), - OrdinalSales('2019', random.nextInt(100)), - OrdinalSales('2020', random.nextInt(100)), - OrdinalSales('2021', random.nextInt(100)), - OrdinalSales('2022', random.nextInt(100)), - OrdinalSales('2023', random.nextInt(100)), - OrdinalSales('2024', random.nextInt(100)), - OrdinalSales('2025', random.nextInt(100)), - OrdinalSales('2026', random.nextInt(100)), - OrdinalSales('2027', random.nextInt(100)), - OrdinalSales('2028', random.nextInt(100)), - OrdinalSales('2029', random.nextInt(100)), - OrdinalSales('2030', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - // Set the initial viewport by providing a new AxisSpec with the - // desired viewport: a starting domain and the data size. - domainAxis: - charts.OrdinalAxisSpec(viewport: charts.OrdinalViewport('2018', 4)), - // Optionally add a pan or pan and zoom behavior. - // If pan/zoom is not added, the viewport specified remains the viewport. - behaviors: [charts.PanAndZoomBehavior()], - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - OrdinalSales('2018', 33), - OrdinalSales('2019', 80), - OrdinalSales('2020', 21), - OrdinalSales('2021', 77), - OrdinalSales('2022', 8), - OrdinalSales('2023', 12), - OrdinalSales('2024', 42), - OrdinalSales('2025', 70), - OrdinalSales('2026', 77), - OrdinalSales('2027', 55), - OrdinalSales('2028', 19), - OrdinalSales('2029', 66), - OrdinalSales('2030', 27), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/axes/short_tick_length_axis.dart b/web/charts/lib/axes/short_tick_length_axis.dart deleted file mode 100644 index cc510b04b..000000000 --- a/web/charts/lib/axes/short_tick_length_axis.dart +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Custom Tick Style Example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of using a custom primary measure axis replacing the default -/// gridline rendering with a short tick rendering. It also turns on the axis -/// line so that the ticks have something to line up against. -/// -/// There are many axis styling options in the SmallTickRenderer allowing you -/// to customize the font, tick lengths, and offsets. -class ShortTickLengthAxis extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const ShortTickLengthAxis(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory ShortTickLengthAxis.withSampleData() { - return ShortTickLengthAxis( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory ShortTickLengthAxis.withRandomData() { - return ShortTickLengthAxis(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final globalSalesData = [ - OrdinalSales('2014', random.nextInt(100) * 100), - OrdinalSales('2015', random.nextInt(100) * 100), - OrdinalSales('2016', random.nextInt(100) * 100), - OrdinalSales('2017', random.nextInt(100) * 100), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - - /// Customize the primary measure axis using a small tick renderer. - /// Note: use String instead of num for ordinal domain axis - /// (typically bar charts). - primaryMeasureAxis: const charts.NumericAxisSpec( - renderSpec: charts.SmallTickRendererSpec( - // Tick and Label styling here. - )), - ); - } - - /// Create series list with single series - static List> _createSampleData() { - final globalSalesData = [ - OrdinalSales('2014', 5000), - OrdinalSales('2015', 25000), - OrdinalSales('2016', 100000), - OrdinalSales('2017', 750000), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/axes/statically_provided_ticks.dart b/web/charts/lib/axes/statically_provided_ticks.dart deleted file mode 100644 index 1f155595b..000000000 --- a/web/charts/lib/axes/statically_provided_ticks.dart +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of axis using statically provided ticks. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of specifying a custom set of ticks to be used on the domain axis. -/// -/// Specifying custom set of ticks allows specifying exactly what ticks are -/// used in the axis. Each tick is also allowed to have a different style set. -/// -/// For an ordinal axis, the [StaticOrdinalTickProviderSpec] is shown in this -/// example defining ticks to be used with [TickSpec] of String. -/// -/// For numeric axis, the [StaticNumericTickProviderSpec] can be used by passing -/// in a list of ticks defined with [TickSpec] of num. -/// -/// For datetime axis, the [StaticDateTimeTickProviderSpec] can be used by -/// passing in a list of ticks defined with [TickSpec] of datetime. -class StaticallyProvidedTicks extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const StaticallyProvidedTicks(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory StaticallyProvidedTicks.withSampleData() { - return StaticallyProvidedTicks( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory StaticallyProvidedTicks.withRandomData() { - return StaticallyProvidedTicks(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final globalSalesData = [ - OrdinalSales('2014', random.nextInt(100) * 100), - OrdinalSales('2015', random.nextInt(100) * 100), - OrdinalSales('2016', random.nextInt(100) * 100), - OrdinalSales('2017', random.nextInt(100) * 100), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // Create the ticks to be used the domain axis. - final staticTicks = [ - const charts.TickSpec( - // Value must match the domain value. - '2014', - // Optional label for this tick, defaults to domain value if not set. - label: 'Year 2014', - // The styling for this tick. - style: charts.TextStyleSpec( - color: charts.Color(r: 0x4C, g: 0xAF, b: 0x50))), - // If no text style is specified - the style from renderSpec will be used - // if one is specified. - const charts.TickSpec('2015'), - const charts.TickSpec('2016'), - const charts.TickSpec('2017'), - ]; - - return charts.BarChart( - seriesList, - animate: animate, - domainAxis: charts.OrdinalAxisSpec( - tickProviderSpec: charts.StaticOrdinalTickProviderSpec(staticTicks)), - ); - } - - /// Create series list with single series - static List> _createSampleData() { - final globalSalesData = [ - OrdinalSales('2014', 5000), - OrdinalSales('2015', 25000), - OrdinalSales('2016', 100000), - OrdinalSales('2017', 750000), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/bar_gallery.dart b/web/charts/lib/bar_chart/bar_gallery.dart deleted file mode 100644 index caf9b302b..000000000 --- a/web/charts/lib/bar_chart/bar_gallery.dart +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'custom_rounded_bars.dart'; -import 'grouped.dart'; -import 'grouped_fill_color.dart'; -import 'grouped_single_target_line.dart'; -import 'grouped_stacked.dart'; -import 'grouped_stacked_weight_pattern.dart'; -import 'grouped_target_line.dart'; -import 'horizontal.dart'; -import 'horizontal_bar_label.dart'; -import 'horizontal_bar_label_custom.dart'; -import 'horizontal_pattern_forward_hatch.dart'; -import 'pattern_forward_hatch.dart'; -import 'simple.dart'; -import 'stacked.dart'; -import 'stacked_fill_color.dart'; -import 'stacked_horizontal.dart'; -import 'stacked_target_line.dart'; -import 'spark_bar.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Simple Bar Chart', - subtitle: 'Simple bar chart with a single series', - childBuilder: () => SimpleBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Stacked Bar Chart', - subtitle: 'Stacked bar chart with multiple series', - childBuilder: () => StackedBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Grouped Bar Chart', - subtitle: 'Grouped bar chart with multiple series', - childBuilder: () => GroupedBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Grouped Stacked Bar Chart', - subtitle: 'Grouped and stacked bar chart with multiple series', - childBuilder: () => GroupedStackedBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Grouped Bar Target Line Chart', - subtitle: 'Grouped bar target line chart with multiple series', - childBuilder: () => GroupedBarTargetLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Grouped Bar Single Target Line Chart', - subtitle: - 'Grouped bar target line chart with multiple series and a single target', - childBuilder: () => GroupedBarSingleTargetLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Stacked Bar Target Line Chart', - subtitle: 'Stacked bar target line chart with multiple series', - childBuilder: () => StackedBarTargetLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: Transform.rotate( - angle: 1.5708, child: const Icon(Icons.insert_chart)), - title: 'Horizontal Bar Chart', - subtitle: 'Horizontal bar chart with a single series', - childBuilder: () => HorizontalBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: Transform.rotate( - angle: 1.5708, child: const Icon(Icons.insert_chart)), - title: 'Stacked Horizontal Bar Chart', - subtitle: 'Stacked horizontal bar chart with multiple series', - childBuilder: () => StackedHorizontalBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: Transform.rotate( - angle: 1.5708, child: const Icon(Icons.insert_chart)), - title: 'Horizontal Bar Chart with Bar Labels', - subtitle: 'Horizontal bar chart with a single series and bar labels', - childBuilder: () => HorizontalBarLabelChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: Transform.rotate( - angle: 1.5708, child: const Icon(Icons.insert_chart)), - title: 'Horizontal Bar Chart with Custom Bar Labels', - subtitle: 'Bar labels with customized styling', - childBuilder: () => HorizontalBarLabelCustomChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Spark Bar Chart', - subtitle: 'Spark Bar Chart', - childBuilder: () => SparkBar.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Grouped Fill Color Bar Chart', - subtitle: 'Grouped bar chart with fill colors', - childBuilder: () => GroupedFillColorBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Stacked Fill Color Bar Chart', - subtitle: 'Stacked bar chart with fill colors', - childBuilder: () => StackedFillColorBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Pattern Forward Hatch Bar Chart', - subtitle: 'Pattern Forward Hatch Bar Chart', - childBuilder: () => PatternForwardHatchBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: Transform.rotate( - angle: 1.5708, child: const Icon(Icons.insert_chart)), - title: 'Horizontal Pattern Forward Hatch Bar Chart', - subtitle: 'Horizontal Pattern Forward Hatch Bar Chart', - childBuilder: () => - HorizontalPatternForwardHatchBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Weight Pattern Bar Chart', - subtitle: 'Grouped and stacked bar chart with a weight pattern', - childBuilder: () => GroupedStackedWeightPatternBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Bar Chart with custom bar radius', - subtitle: 'Custom rounded bar corners', - childBuilder: () => CustomRoundedBars.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/bar_chart/custom_rounded_bars.dart b/web/charts/lib/bar_chart/custom_rounded_bars.dart deleted file mode 100644 index 7f0a755fc..000000000 --- a/web/charts/lib/bar_chart/custom_rounded_bars.dart +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class CustomRoundedBars extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const CustomRoundedBars(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with custom rounded bars. - factory CustomRoundedBars.withSampleData() { - return CustomRoundedBars( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory CustomRoundedBars.withRandomData() { - return CustomRoundedBars(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - defaultRenderer: charts.BarRendererConfig( - // By default, bar renderer will draw rounded bars with a constant - // radius of 30. - // To not have any rounded corners, use [NoCornerStrategy] - // To change the radius of the bars, use [ConstCornerStrategy] - cornerStrategy: const charts.ConstCornerStrategy(30)), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/grouped.dart b/web/charts/lib/bar_chart/grouped.dart deleted file mode 100644 index db7357983..000000000 --- a/web/charts/lib/bar_chart/grouped.dart +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class GroupedBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const GroupedBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory GroupedBarChart.withSampleData() { - return GroupedBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory GroupedBarChart.withRandomData() { - return GroupedBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/grouped_fill_color.dart b/web/charts/lib/bar_chart/grouped_fill_color.dart deleted file mode 100644 index 887deaddd..000000000 --- a/web/charts/lib/bar_chart/grouped_fill_color.dart +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of a grouped bar chart with three series, each rendered with -/// different fill colors. -class GroupedFillColorBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const GroupedFillColorBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory GroupedFillColorBarChart.withSampleData() { - return GroupedFillColorBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory GroupedFillColorBarChart.withRandomData() { - return GroupedFillColorBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - // Blue bars with a lighter center color. - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - fillColorFn: (_, __) => - charts.MaterialPalette.blue.shadeDefault.lighter, - ), - // Solid red bars. Fill color will default to the series color if no - // fillColorFn is configured. - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - ), - // Hollow green bars. - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - fillColorFn: (_, __) => charts.MaterialPalette.transparent, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - // Configure a stroke width to enable borders on the bars. - defaultRenderer: charts.BarRendererConfig( - groupingType: charts.BarGroupingType.grouped, strokeWidthPx: 2.0), - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 50), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - // Blue bars with a lighter center color. - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - fillColorFn: (_, __) => - charts.MaterialPalette.blue.shadeDefault.lighter, - ), - // Solid red bars. Fill color will default to the series color if no - // fillColorFn is configured. - charts.Series( - id: 'Tablet', - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - ), - // Hollow green bars. - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - fillColorFn: (_, __) => charts.MaterialPalette.transparent, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/grouped_single_target_line.dart b/web/charts/lib/bar_chart/grouped_single_target_line.dart deleted file mode 100644 index fc767e1e8..000000000 --- a/web/charts/lib/bar_chart/grouped_single_target_line.dart +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class GroupedBarSingleTargetLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const GroupedBarSingleTargetLineChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - factory GroupedBarSingleTargetLineChart.withSampleData() { - return GroupedBarSingleTargetLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory GroupedBarSingleTargetLineChart.withRandomData() { - return GroupedBarSingleTargetLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final targetLineData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData), - charts.Series( - id: 'Desktop Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: targetLineData) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart(seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - customSeriesRenderers: [ - charts.BarTargetLineRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customTargetLine', - groupingType: charts.BarGroupingType.grouped) - ]); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final targetLineData = [ - OrdinalSales('2014', 30), - OrdinalSales('2015', 55), - OrdinalSales('2016', 15), - OrdinalSales('2017', 25), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData), - charts.Series( - id: 'Desktop Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: targetLineData) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/grouped_stacked.dart b/web/charts/lib/bar_chart/grouped_stacked.dart deleted file mode 100644 index 98cfa51f6..000000000 --- a/web/charts/lib/bar_chart/grouped_stacked.dart +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a bar chart with grouped, stacked series oriented vertically. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class GroupedStackedBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const GroupedStackedBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory GroupedStackedBarChart.withSampleData() { - return GroupedStackedBarChart( - createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory GroupedStackedBarChart.withRandomData() { - return GroupedStackedBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesDataA = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesDataA = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesDataA = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final desktopSalesDataB = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesDataB = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesDataB = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataA, - ), - charts.Series( - id: 'Tablet A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataA, - ), - charts.Series( - id: 'Mobile A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataA, - ), - charts.Series( - id: 'Desktop B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataB, - ), - charts.Series( - id: 'Tablet B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataB, - ), - charts.Series( - id: 'Mobile B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataB, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.groupedStacked, - ); - } - - /// Create series list with multiple series - static List> createSampleData() { - final desktopSalesDataA = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesDataA = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesDataA = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final desktopSalesDataB = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesDataB = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesDataB = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - charts.Series( - id: 'Desktop A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataA, - ), - charts.Series( - id: 'Tablet A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataA, - ), - charts.Series( - id: 'Mobile A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataA, - ), - charts.Series( - id: 'Desktop B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataB, - ), - charts.Series( - id: 'Tablet B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataB, - ), - charts.Series( - id: 'Mobile B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataB, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/grouped_stacked_weight_pattern.dart b/web/charts/lib/bar_chart/grouped_stacked_weight_pattern.dart deleted file mode 100644 index 263a324a1..000000000 --- a/web/charts/lib/bar_chart/grouped_stacked_weight_pattern.dart +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a bar chart with grouped, stacked series oriented vertically with -/// a custom weight pattern. -/// -/// This is a pattern of weights used to calculate the width of bars within a -/// bar group. If not specified, each bar in the group will have an equal width. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class GroupedStackedWeightPatternBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const GroupedStackedWeightPatternBarChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - factory GroupedStackedWeightPatternBarChart.withSampleData() { - return GroupedStackedWeightPatternBarChart( - createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory GroupedStackedWeightPatternBarChart.withRandomData() { - return GroupedStackedWeightPatternBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesDataA = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesDataA = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesDataA = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final desktopSalesDataB = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesDataB = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesDataB = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataA, - ), - charts.Series( - id: 'Tablet A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataA, - ), - charts.Series( - id: 'Mobile A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataA, - ), - charts.Series( - id: 'Desktop B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataB, - ), - charts.Series( - id: 'Tablet B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataB, - ), - charts.Series( - id: 'Mobile B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataB, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - // Configure the bar renderer in grouped stacked rendering mode with a - // custom weight pattern. - // - // The first stack of bars in each group is configured to be twice as wide - // as the second stack of bars in each group. - defaultRenderer: charts.BarRendererConfig( - groupingType: charts.BarGroupingType.groupedStacked, - weightPattern: [2, 1], - ), - ); - } - - /// Create series list with multiple series - static List> createSampleData() { - final desktopSalesDataA = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesDataA = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesDataA = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final desktopSalesDataB = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesDataB = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesDataB = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - charts.Series( - id: 'Desktop A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataA, - ), - charts.Series( - id: 'Tablet A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataA, - ), - charts.Series( - id: 'Mobile A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataA, - ), - charts.Series( - id: 'Desktop B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataB, - ), - charts.Series( - id: 'Tablet B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataB, - ), - charts.Series( - id: 'Mobile B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataB, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/grouped_target_line.dart b/web/charts/lib/bar_chart/grouped_target_line.dart deleted file mode 100644 index a3ba85104..000000000 --- a/web/charts/lib/bar_chart/grouped_target_line.dart +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class GroupedBarTargetLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const GroupedBarTargetLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory GroupedBarTargetLineChart.withSampleData() { - return GroupedBarTargetLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory GroupedBarTargetLineChart.withRandomData() { - return GroupedBarTargetLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final desktopTargetLineData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableTargetLineData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileTargetLineData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Desktop Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - charts.Series( - id: 'Tablet Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - charts.Series( - id: 'Mobile Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart(seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - customSeriesRenderers: [ - charts.BarTargetLineRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customTargetLine', - groupingType: charts.BarGroupingType.grouped) - ]); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final desktopTargetLineData = [ - OrdinalSales('2014', 4), - OrdinalSales('2015', 20), - OrdinalSales('2016', 80), - OrdinalSales('2017', 65), - ]; - - final tableTargetLineData = [ - OrdinalSales('2014', 30), - OrdinalSales('2015', 55), - OrdinalSales('2016', 15), - OrdinalSales('2017', 25), - ]; - - final mobileTargetLineData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 5), - OrdinalSales('2016', 45), - OrdinalSales('2017', 35), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Desktop Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - charts.Series( - id: 'Tablet Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - charts.Series( - id: 'Mobile Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/horizontal.dart b/web/charts/lib/bar_chart/horizontal.dart deleted file mode 100644 index 18bc6cc0b..000000000 --- a/web/charts/lib/bar_chart/horizontal.dart +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Horizontal bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class HorizontalBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const HorizontalBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory HorizontalBarChart.withSampleData() { - return HorizontalBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory HorizontalBarChart.withRandomData() { - return HorizontalBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // For horizontal bar charts, set the [vertical] flag to false. - return charts.BarChart( - seriesList, - animate: animate, - vertical: false, - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/horizontal_bar_label.dart b/web/charts/lib/bar_chart/horizontal_bar_label.dart deleted file mode 100644 index af5e38516..000000000 --- a/web/charts/lib/bar_chart/horizontal_bar_label.dart +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Horizontal bar chart with bar label renderer example and hidden domain axis. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class HorizontalBarLabelChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const HorizontalBarLabelChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory HorizontalBarLabelChart.withSampleData() { - return HorizontalBarLabelChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory HorizontalBarLabelChart.withRandomData() { - return HorizontalBarLabelChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - // Set a label accessor to control the text of the bar label. - labelAccessorFn: (OrdinalSales sales, _) => - '${sales.year}: \$${sales.sales.toString()}') - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - // [BarLabelDecorator] will automatically position the label - // inside the bar if the label will fit. If the label will not fit and the - // area outside of the bar is larger than the bar, it will draw outside of the - // bar. Labels can always display inside or outside using [LabelPosition]. - // - // Text style for inside / outside can be controlled independently by setting - // [insideLabelStyleSpec] and [outsideLabelStyleSpec]. - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - vertical: false, - // Set a bar label decorator. - // Example configuring different styles for inside/outside: - // barRendererDecorator: new charts.BarLabelDecorator( - // insideLabelStyleSpec: new charts.TextStyleSpec(...), - // outsideLabelStyleSpec: new charts.TextStyleSpec(...)), - barRendererDecorator: charts.BarLabelDecorator(), - // Hide domain axis. - domainAxis: - const charts.OrdinalAxisSpec(renderSpec: charts.NoneRenderSpec()), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - // Set a label accessor to control the text of the bar label. - labelAccessorFn: (OrdinalSales sales, _) => - '${sales.year}: \$${sales.sales.toString()}') - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/horizontal_bar_label_custom.dart b/web/charts/lib/bar_chart/horizontal_bar_label_custom.dart deleted file mode 100644 index f84332670..000000000 --- a/web/charts/lib/bar_chart/horizontal_bar_label_custom.dart +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Horizontal bar chart with custom style for each datum in the bar label. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class HorizontalBarLabelCustomChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const HorizontalBarLabelCustomChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - static HorizontalBarLabelCustomChart createWithSampleData() { - return HorizontalBarLabelCustomChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory HorizontalBarLabelCustomChart.withRandomData() { - return HorizontalBarLabelCustomChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - // Set a label accessor to control the text of the bar label. - labelAccessorFn: (OrdinalSales sales, _) => - '${sales.year}: \$${sales.sales.toString()}', - insideLabelStyleAccessorFn: (OrdinalSales sales, _) { - final color = (sales.year == '2014') - ? charts.MaterialPalette.red.shadeDefault - : charts.MaterialPalette.yellow.shadeDefault.darker; - return charts.TextStyleSpec(color: color); - }, - outsideLabelStyleAccessorFn: (OrdinalSales sales, _) { - final color = (sales.year == '2014') - ? charts.MaterialPalette.red.shadeDefault - : charts.MaterialPalette.yellow.shadeDefault.darker; - return charts.TextStyleSpec(color: color); - }, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - // The [BarLabelDecorator] has settings to set the text style for all labels - // for inside the bar and outside the bar. To be able to control each datum's - // style, set the style accessor functions on the series. - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - vertical: false, - barRendererDecorator: charts.BarLabelDecorator(), - // Hide domain axis. - domainAxis: - const charts.OrdinalAxisSpec(renderSpec: charts.NoneRenderSpec()), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - // Set a label accessor to control the text of the bar label. - labelAccessorFn: (OrdinalSales sales, _) => - '${sales.year}: \$${sales.sales.toString()}', - insideLabelStyleAccessorFn: (OrdinalSales sales, _) { - final color = (sales.year == '2014') - ? charts.MaterialPalette.red.shadeDefault - : charts.MaterialPalette.yellow.shadeDefault.darker; - return charts.TextStyleSpec(color: color); - }, - outsideLabelStyleAccessorFn: (OrdinalSales sales, _) { - final color = (sales.year == '2014') - ? charts.MaterialPalette.red.shadeDefault - : charts.MaterialPalette.yellow.shadeDefault.darker; - return charts.TextStyleSpec(color: color); - }, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/horizontal_pattern_forward_hatch.dart b/web/charts/lib/bar_chart/horizontal_pattern_forward_hatch.dart deleted file mode 100644 index fdb05814e..000000000 --- a/web/charts/lib/bar_chart/horizontal_pattern_forward_hatch.dart +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Forward pattern hatch bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Forward hatch pattern horizontal bar chart example. -/// -/// The second series of bars is rendered with a pattern by defining a -/// fillPatternFn mapping function. -class HorizontalPatternForwardHatchBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const HorizontalPatternForwardHatchBarChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - factory HorizontalPatternForwardHatchBarChart.withSampleData() { - return HorizontalPatternForwardHatchBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory HorizontalPatternForwardHatchBarChart.withRandomData() { - return HorizontalPatternForwardHatchBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - fillPatternFn: (OrdinalSales sales, _) => - charts.FillPatternType.forwardHatch, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - vertical: false, - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - fillPatternFn: (OrdinalSales sales, _) => - charts.FillPatternType.forwardHatch, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/pattern_forward_hatch.dart b/web/charts/lib/bar_chart/pattern_forward_hatch.dart deleted file mode 100644 index 1ac515099..000000000 --- a/web/charts/lib/bar_chart/pattern_forward_hatch.dart +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Forward hatch pattern bar chart example. -/// -/// The second series of bars is rendered with a pattern by defining a -/// fillPatternFn mapping function. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class PatternForwardHatchBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const PatternForwardHatchBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory PatternForwardHatchBarChart.withSampleData() { - return PatternForwardHatchBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory PatternForwardHatchBarChart.withRandomData() { - return PatternForwardHatchBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - fillPatternFn: (OrdinalSales sales, _) => - charts.FillPatternType.forwardHatch, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - fillPatternFn: (OrdinalSales sales, _) => - charts.FillPatternType.forwardHatch, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/simple.dart b/web/charts/lib/bar_chart/simple.dart deleted file mode 100644 index 4f90aaa1c..000000000 --- a/web/charts/lib/bar_chart/simple.dart +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SimpleBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SimpleBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory SimpleBarChart.withSampleData() { - return SimpleBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SimpleBarChart.withRandomData() { - return SimpleBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/spark_bar.dart b/web/charts/lib/bar_chart/spark_bar.dart deleted file mode 100644 index abac92cf5..000000000 --- a/web/charts/lib/bar_chart/spark_bar.dart +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Spark Bar Example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of a Spark Bar by hiding both axis, reducing the chart margins. -class SparkBar extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SparkBar(this.seriesList, {this.animate, Key? key}) : super(key: key); - - factory SparkBar.withSampleData() { - return SparkBar( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SparkBar.withRandomData() { - return SparkBar(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final globalSalesData = [ - OrdinalSales('2007', random.nextInt(100)), - OrdinalSales('2008', random.nextInt(100)), - OrdinalSales('2009', random.nextInt(100)), - OrdinalSales('2010', random.nextInt(100)), - OrdinalSales('2011', random.nextInt(100)), - OrdinalSales('2012', random.nextInt(100)), - OrdinalSales('2013', random.nextInt(100)), - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - - /// Assign a custom style for the measure axis. - /// - /// The NoneRenderSpec only draws an axis line (and even that can be hidden - /// with showAxisLine=false). - primaryMeasureAxis: - const charts.NumericAxisSpec(renderSpec: charts.NoneRenderSpec()), - - /// This is an OrdinalAxisSpec to match up with BarChart's default - /// ordinal domain axis (use NumericAxisSpec or DateTimeAxisSpec for - /// other charts). - domainAxis: const charts.OrdinalAxisSpec( - // Make sure that we draw the domain axis line. - showAxisLine: true, - // But don't draw anything else. - renderSpec: charts.NoneRenderSpec()), - - // With a spark chart we likely don't want large chart margins. - // 1px is the smallest we can make each margin. - layoutConfig: charts.LayoutConfig( - leftMarginSpec: charts.MarginSpec.fixedPixel(0), - topMarginSpec: charts.MarginSpec.fixedPixel(0), - rightMarginSpec: charts.MarginSpec.fixedPixel(0), - bottomMarginSpec: charts.MarginSpec.fixedPixel(0)), - ); - } - - /// Create series list with single series - static List> _createSampleData() { - final globalSalesData = [ - OrdinalSales('2007', 3100), - OrdinalSales('2008', 3500), - OrdinalSales('2009', 5000), - OrdinalSales('2010', 2500), - OrdinalSales('2011', 3200), - OrdinalSales('2012', 4500), - OrdinalSales('2013', 4400), - OrdinalSales('2014', 5000), - OrdinalSales('2015', 5000), - OrdinalSales('2016', 4500), - OrdinalSales('2017', 4300), - ]; - - return [ - charts.Series( - id: 'Global Revenue', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: globalSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/stacked.dart b/web/charts/lib/bar_chart/stacked.dart deleted file mode 100644 index 44ffb0394..000000000 --- a/web/charts/lib/bar_chart/stacked.dart +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class StackedBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const StackedBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a stacked [BarChart] with sample data and no transition. - factory StackedBarChart.withSampleData() { - return StackedBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory StackedBarChart.withRandomData() { - return StackedBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.stacked, - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/stacked_fill_color.dart b/web/charts/lib/bar_chart/stacked_fill_color.dart deleted file mode 100644 index 772221dfa..000000000 --- a/web/charts/lib/bar_chart/stacked_fill_color.dart +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example of a stacked bar chart with three series, each rendered with -/// different fill colors. -class StackedFillColorBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const StackedFillColorBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory StackedFillColorBarChart.withSampleData() { - return StackedFillColorBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory StackedFillColorBarChart.withRandomData() { - return StackedFillColorBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - // Blue bars with a lighter center color. - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - fillColorFn: (_, __) => - charts.MaterialPalette.blue.shadeDefault.lighter, - ), - // Solid red bars. Fill color will default to the series color if no - // fillColorFn is configured. - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - ), - // Hollow green bars. - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - fillColorFn: (_, __) => charts.MaterialPalette.transparent, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - // Configure a stroke width to enable borders on the bars. - defaultRenderer: charts.BarRendererConfig( - groupingType: charts.BarGroupingType.stacked, strokeWidthPx: 2.0), - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 50), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - // Blue bars with a lighter center color. - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - fillColorFn: (_, __) => - charts.MaterialPalette.blue.shadeDefault.lighter, - ), - // Solid red bars. Fill color will default to the series color if no - // fillColorFn is configured. - charts.Series( - id: 'Tablet', - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - ), - // Hollow green bars. - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - fillColorFn: (_, __) => charts.MaterialPalette.transparent, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/stacked_horizontal.dart b/web/charts/lib/bar_chart/stacked_horizontal.dart deleted file mode 100644 index 30c557e9c..000000000 --- a/web/charts/lib/bar_chart/stacked_horizontal.dart +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class StackedHorizontalBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const StackedHorizontalBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a stacked [BarChart] with sample data and no transition. - factory StackedHorizontalBarChart.withSampleData() { - return StackedHorizontalBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory StackedHorizontalBarChart.withRandomData() { - return StackedHorizontalBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // For horizontal bar charts, set the [vertical] flag to false. - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.stacked, - vertical: false, - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/bar_chart/stacked_target_line.dart b/web/charts/lib/bar_chart/stacked_target_line.dart deleted file mode 100644 index 832059cad..000000000 --- a/web/charts/lib/bar_chart/stacked_target_line.dart +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class StackedBarTargetLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const StackedBarTargetLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a stacked [BarChart] with sample data and no transition. - factory StackedBarTargetLineChart.withSampleData() { - return StackedBarTargetLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory StackedBarTargetLineChart.withRandomData() { - return StackedBarTargetLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final desktopTargetLineData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableTargetLineData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileTargetLineData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Desktop Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - charts.Series( - id: 'Tablet Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - charts.Series( - id: 'Mobile Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart(seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.stacked, - customSeriesRenderers: [ - charts.BarTargetLineRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customTargetLine', - groupingType: charts.BarGroupingType.stacked) - ]); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final desktopTargetLineData = [ - OrdinalSales('2014', 4), - OrdinalSales('2015', 20), - OrdinalSales('2016', 80), - OrdinalSales('2017', 65), - ]; - - final tableTargetLineData = [ - OrdinalSales('2014', 30), - OrdinalSales('2015', 55), - OrdinalSales('2016', 15), - OrdinalSales('2017', 25), - ]; - - final mobileTargetLineData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 5), - OrdinalSales('2016', 45), - OrdinalSales('2017', 35), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Desktop Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - charts.Series( - id: 'Tablet Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - charts.Series( - id: 'Mobile Target Line', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileTargetLineData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customTargetLine'), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/behaviors_gallery.dart b/web/charts/lib/behaviors/behaviors_gallery.dart deleted file mode 100644 index 94e3fc615..000000000 --- a/web/charts/lib/behaviors/behaviors_gallery.dart +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'chart_title.dart'; -import 'initial_hint_animation.dart'; -import 'initial_selection.dart'; -import 'percent_of_domain.dart'; -import 'percent_of_domain_by_category.dart'; -import 'percent_of_series.dart'; -import 'selection_bar_highlight.dart'; -import 'selection_line_highlight.dart'; -import 'selection_line_highlight_custom_shape.dart'; -import 'selection_callback_example.dart'; -import 'selection_scatter_plot_highlight.dart'; -import 'selection_user_managed.dart'; -import 'slider.dart'; -import 'sliding_viewport_on_selection.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'Selection Bar Highlight', - subtitle: 'Simple bar chart with tap activation', - childBuilder: () => SelectionBarHighlight.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'Selection Line Highlight', - subtitle: 'Line chart with tap and drag activation', - childBuilder: () => SelectionLineHighlight.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'Selection Line Highlight Custom Shape', - subtitle: 'Line chart with tap and drag activation and a custom shape', - childBuilder: () => SelectionLineHighlightCustomShape.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'Selection Scatter Plot Highlight', - subtitle: 'Scatter plot chart with tap and drag activation', - childBuilder: () => SelectionScatterPlotHighlight.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'Selection Callback Example', - subtitle: 'Timeseries that updates external components on selection', - childBuilder: () => SelectionCallbackExample.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'User managed selection', - subtitle: - 'Example where selection can be set and cleared programmatically', - childBuilder: () => SelectionUserManaged.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Bar Chart with initial selection', - subtitle: 'Single series with initial selection', - childBuilder: () => InitialSelection.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'Line Chart with Chart Titles', - subtitle: 'Line chart with four chart titles', - childBuilder: () => ChartTitleLine.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'Line Chart with Slider', - subtitle: 'Line chart with a slider behavior', - childBuilder: () => SliderLine.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Percent of Domain', - subtitle: - 'Stacked bar chart with measures calculated as percent of ' 'domain', - childBuilder: () => PercentOfDomainBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Percent of Domain by Category', - subtitle: 'Grouped stacked bar chart with measures calculated as ' - 'percent of domain and series category', - childBuilder: () => PercentOfDomainByCategoryBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Percent of Series', - subtitle: - 'Grouped bar chart with measures calculated as percent of ' 'series', - childBuilder: () => PercentOfSeriesBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Sliding viewport on domain selection', - subtitle: 'Center viewport on selected domain', - childBuilder: () => SlidingViewportOnSelection.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Initial hint animation ', - subtitle: 'Animate into final viewport', - childBuilder: () => InitialHintAnimation.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/behaviors/chart_title.dart b/web/charts/lib/behaviors/chart_title.dart deleted file mode 100644 index f1daa3faf..000000000 --- a/web/charts/lib/behaviors/chart_title.dart +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -/// This is a line chart with a title text in every margin. -/// -/// A series of [ChartTitle] behaviors are used to render titles, one per -/// margin. -class ChartTitleLine extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const ChartTitleLine(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory ChartTitleLine.withSampleData() { - return ChartTitleLine( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory ChartTitleLine.withRandomData() { - return ChartTitleLine(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart( - seriesList, - animate: animate, - // Configures four [ChartTitle] behaviors to render titles in each chart - // margin. The top title has a sub-title, and is aligned to the left edge - // of the chart. The other titles are aligned with the middle of the draw - // area. - behaviors: [ - charts.ChartTitle('Top title text', - subTitle: 'Top sub-title text', - behaviorPosition: charts.BehaviorPosition.top, - titleOutsideJustification: charts.OutsideJustification.start, - // Set a larger inner padding than the default (10) to avoid - // rendering the text too close to the top measure axis tick label. - // The top tick label may extend upwards into the top margin region - // if it is located at the top of the draw area. - innerPadding: 18), - charts.ChartTitle('Bottom title text', - behaviorPosition: charts.BehaviorPosition.bottom, - titleOutsideJustification: - charts.OutsideJustification.middleDrawArea), - charts.ChartTitle('Start title', - behaviorPosition: charts.BehaviorPosition.start, - titleOutsideJustification: - charts.OutsideJustification.middleDrawArea), - charts.ChartTitle('End title', - behaviorPosition: charts.BehaviorPosition.end, - titleOutsideJustification: - charts.OutsideJustification.middleDrawArea), - ], - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/initial_hint_animation.dart b/web/charts/lib/behaviors/initial_hint_animation.dart deleted file mode 100644 index 65827ae55..000000000 --- a/web/charts/lib/behaviors/initial_hint_animation.dart +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of initial hint animation behavior. -/// -/// To see the animation, please run the example app and select -/// "Initial hint animation". -/// -/// This behavior is intended to be used with charts that also have pan/zoom -/// behaviors added and/or the initial viewport set in [AxisSpec]. -/// -/// Adding this behavior will cause the chart to animate from a scale and/or -/// offset of the desired final viewport. If the user taps the widget prior -/// to the animation being completed, animation will stop. -/// -/// [maxHintScaleFactor] is the amount the domain axis will be scaled at the -/// start of te hint. By default, this is null, indicating that there will be -/// no scale factor hint. A value of 1.0 means the viewport is showing all -/// domains in the viewport. If a value is provided, it cannot be less than 1.0. -/// -/// [maxHintTranslate] is the amount of ordinal values to translate the viewport -/// from the desired initial viewport. Currently only works for ordinal axis. -/// -/// In this example, the series list has ordinal data from year 2014 to 2030, -/// and we have the initial viewport set to start at 2018 that shows 4 values by -/// specifying an [OrdinalViewport] in [OrdinalAxisSpec]. We can add the hint -/// animation by adding behavior [InitialHintBehavior] with [maxHintTranslate] -/// of 4. When the chart is drawn for the first time, the viewport will show -/// 2022 as the first value and the viewport will animate by panning values to -/// the right until 2018 is the first value in the viewport. - -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class InitialHintAnimation extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const InitialHintAnimation(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory InitialHintAnimation.withSampleData() { - return InitialHintAnimation( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory InitialHintAnimation.withRandomData() { - return InitialHintAnimation(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - OrdinalSales('2018', random.nextInt(100)), - OrdinalSales('2019', random.nextInt(100)), - OrdinalSales('2020', random.nextInt(100)), - OrdinalSales('2021', random.nextInt(100)), - OrdinalSales('2022', random.nextInt(100)), - OrdinalSales('2023', random.nextInt(100)), - OrdinalSales('2024', random.nextInt(100)), - OrdinalSales('2025', random.nextInt(100)), - OrdinalSales('2026', random.nextInt(100)), - OrdinalSales('2027', random.nextInt(100)), - OrdinalSales('2028', random.nextInt(100)), - OrdinalSales('2029', random.nextInt(100)), - OrdinalSales('2030', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - // Optionally turn off the animation that animates values up from the - // bottom of the domain axis. If animation is on, the bars will animate up - // and then animate to the final viewport. - animationDuration: Duration.zero, - // Set the initial viewport by providing a new AxisSpec with the - // desired viewport: a starting domain and the data size. - domainAxis: - charts.OrdinalAxisSpec(viewport: charts.OrdinalViewport('2018', 4)), - behaviors: [ - // Add this behavior to show initial hint animation that will pan to the - // final desired viewport. - // The duration of the animation can be adjusted by pass in - // [hintDuration]. By default this is 3000ms. - charts.InitialHintBehavior(maxHintTranslate: 4.0), - // Optionally add a pan or pan and zoom behavior. - // If pan/zoom is not added, the viewport specified remains the viewport - charts.PanAndZoomBehavior(), - ], - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - OrdinalSales('2018', 33), - OrdinalSales('2019', 80), - OrdinalSales('2020', 21), - OrdinalSales('2021', 77), - OrdinalSales('2022', 8), - OrdinalSales('2023', 12), - OrdinalSales('2024', 42), - OrdinalSales('2025', 70), - OrdinalSales('2026', 77), - OrdinalSales('2027', 55), - OrdinalSales('2028', 19), - OrdinalSales('2029', 66), - OrdinalSales('2030', 27), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/initial_selection.dart b/web/charts/lib/behaviors/initial_selection.dart deleted file mode 100644 index 4f3fed928..000000000 --- a/web/charts/lib/behaviors/initial_selection.dart +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of adding an initial selection behavior. -/// -/// This example adds initial selection to a bar chart, but any chart can use -/// the initial selection behavior. -/// -/// Initial selection is only set on the very first draw and will not be set -/// again in subsequent draws unless the behavior is reconfigured. -/// -/// The selection will remain on the chart unless another behavior is added -/// that updates the selection. - -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class InitialSelection extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const InitialSelection(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with initial selection behavior. - factory InitialSelection.withSampleData() { - return InitialSelection( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory InitialSelection.withRandomData() { - return InitialSelection(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - behaviors: [ - // Initial selection can be configured by passing in: - // - // A list of datum config, specified with series ID and domain value. - // A list of series config, which is a list of series ID(s). - // - // Initial selection can be applied to any chart type. - // - // [BarChart] by default includes behaviors [SelectNearest] and - // [DomainHighlighter]. So this behavior shows the initial selection - // highlighted and when another datum is tapped, the selection changes. - charts.InitialSelection(selectedDataConfig: [ - charts.SeriesDatumConfig('Sales', '2016') - ]) - ], - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/percent_of_domain.dart b/web/charts/lib/behaviors/percent_of_domain.dart deleted file mode 100644 index bdefa6292..000000000 --- a/web/charts/lib/behaviors/percent_of_domain.dart +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a percentage bar chart with stacked series oriented vertically. -/// -/// Each bar stack shows the percentage of each measure out of the total measure -/// value of the stack. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class PercentOfDomainBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const PercentOfDomainBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a stacked [BarChart] with sample data and no transition. - factory PercentOfDomainBarChart.withSampleData() { - return PercentOfDomainBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory PercentOfDomainBarChart.withRandomData() { - return PercentOfDomainBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.stacked, - // Configures a [PercentInjector] behavior that will calculate measure - // values as the percentage of the total of all data that shares a - // domain value. - behaviors: [ - charts.PercentInjector( - totalType: charts.PercentInjectorTotalType.domain) - ], - // Configure the axis spec to show percentage values. - primaryMeasureAxis: charts.PercentAxisSpec(), - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/percent_of_domain_by_category.dart b/web/charts/lib/behaviors/percent_of_domain_by_category.dart deleted file mode 100644 index 86a519d3e..000000000 --- a/web/charts/lib/behaviors/percent_of_domain_by_category.dart +++ /dev/null @@ -1,263 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a percentage bar chart with grouped, stacked series oriented -/// vertically. -/// -/// Each bar stack shows the percentage of each measure out of the total measure -/// value of the stack. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class PercentOfDomainByCategoryBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const PercentOfDomainByCategoryBarChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - factory PercentOfDomainByCategoryBarChart.withSampleData() { - return PercentOfDomainByCategoryBarChart( - createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory PercentOfDomainByCategoryBarChart.withRandomData() { - return PercentOfDomainByCategoryBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesDataA = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesDataA = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesDataA = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final desktopSalesDataB = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesDataB = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesDataB = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataA, - ), - charts.Series( - id: 'Tablet A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataA, - ), - charts.Series( - id: 'Mobile A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataA, - ), - charts.Series( - id: 'Desktop B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataB, - ), - charts.Series( - id: 'Tablet B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataB, - ), - charts.Series( - id: 'Mobile B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataB, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.groupedStacked, - // Configures a [PercentInjector] behavior that will calculate measure - // values as the percentage of the total of all data that shares both a - // domain and a series category. - // - // We use this option on a grouped stacked bar chart to ensure that the - // total value for each bar stack is 100%. A stacked bar chart that does - // not group by series category would use the "domain" option. - behaviors: [ - charts.PercentInjector( - totalType: charts.PercentInjectorTotalType.domainBySeriesCategory) - ], - // Configure the axis spec to show percentage values. - primaryMeasureAxis: charts.PercentAxisSpec(), - ); - } - - /// Create series list with multiple series - static List> createSampleData() { - final desktopSalesDataA = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesDataA = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesDataA = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final desktopSalesDataB = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesDataB = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesDataB = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - return [ - charts.Series( - id: 'Desktop A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataA, - ), - charts.Series( - id: 'Tablet A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataA, - ), - charts.Series( - id: 'Mobile A', - seriesCategory: 'A', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataA, - ), - charts.Series( - id: 'Desktop B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesDataB, - ), - charts.Series( - id: 'Tablet B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesDataB, - ), - charts.Series( - id: 'Mobile B', - seriesCategory: 'B', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesDataB, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/percent_of_series.dart b/web/charts/lib/behaviors/percent_of_series.dart deleted file mode 100644 index 70dd79cb0..000000000 --- a/web/charts/lib/behaviors/percent_of_series.dart +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a percentage bar chart which shows each bar as the percentage of -/// the total series measure value. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class PercentOfSeriesBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const PercentOfSeriesBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a stacked [BarChart] with sample data and no transition. - factory PercentOfSeriesBarChart.withSampleData() { - return PercentOfSeriesBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory PercentOfSeriesBarChart.withRandomData() { - return PercentOfSeriesBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - // Configures a [PercentInjector] behavior that will calculate measure - // values as the percentage of the total of all data in its series. - behaviors: [ - charts.PercentInjector( - totalType: charts.PercentInjectorTotalType.series) - ], - // Configure the axis spec to show percentage values. - primaryMeasureAxis: charts.PercentAxisSpec(), - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2011', 5), - OrdinalSales('2012', 25), - OrdinalSales('2013', 50), - OrdinalSales('2014', 75), - OrdinalSales('2015', 100), - OrdinalSales('2016', 125), - OrdinalSales('2017', 200), - OrdinalSales('2018', 150), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/selection_bar_highlight.dart b/web/charts/lib/behaviors/selection_bar_highlight.dart deleted file mode 100644 index ed6abc14b..000000000 --- a/web/charts/lib/behaviors/selection_bar_highlight.dart +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SelectionBarHighlight extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SelectionBarHighlight(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory SelectionBarHighlight.withSampleData() { - return SelectionBarHighlight( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SelectionBarHighlight.withRandomData() { - return SelectionBarHighlight(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // This is just a simple bar chart with optional property - // [defaultInteractions] set to true to include the default - // interactions/behaviors when building the chart. - // This includes bar highlighting. - // - // Note: defaultInteractions defaults to true. - // - // [defaultInteractions] can be set to false to avoid the default - // interactions. - return charts.BarChart( - seriesList, - animate: animate, - defaultInteractions: true, - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/selection_callback_example.dart b/web/charts/lib/behaviors/selection_callback_example.dart deleted file mode 100644 index 886a49de8..000000000 --- a/web/charts/lib/behaviors/selection_callback_example.dart +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Timeseries chart with example of updating external state based on selection. -/// -/// A SelectionModelConfig can be provided for each of the different -/// [SelectionModel] (currently info and action). -/// -/// [SelectionModelType.info] is the default selection chart exploration type -/// initiated by some tap event. This is a different model from -/// [SelectionModelType.action] which is typically used to select some value as -/// an input to some other UI component. This allows dual state of exploring -/// and selecting data via different touch events. -/// -/// See [SelectNearest] behavior on setting the different ways of triggering -/// [SelectionModel] updates from hover & click events. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SelectionCallbackExample extends StatefulWidget { - final List> seriesList; - final bool? animate; - - const SelectionCallbackExample(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [charts.TimeSeriesChart] with sample data and no transition. - factory SelectionCallbackExample.withSampleData() { - return SelectionCallbackExample( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SelectionCallbackExample.withRandomData() { - return SelectionCallbackExample(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final usData = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)), - ]; - - final ukData = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'US Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: usData, - ), - charts.Series( - id: 'UK Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: ukData, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - // We need a Stateful widget to build the selection details with the current - // selection as the state. - @override - State createState() => _SelectionCallbackState(); - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final usData = [ - TimeSeriesSales(DateTime(2017, 9, 19), 5), - TimeSeriesSales(DateTime(2017, 9, 26), 25), - TimeSeriesSales(DateTime(2017, 10, 3), 78), - TimeSeriesSales(DateTime(2017, 10, 10), 54), - ]; - - final ukData = [ - TimeSeriesSales(DateTime(2017, 9, 19), 15), - TimeSeriesSales(DateTime(2017, 9, 26), 33), - TimeSeriesSales(DateTime(2017, 10, 3), 68), - TimeSeriesSales(DateTime(2017, 10, 10), 48), - ]; - - return [ - charts.Series( - id: 'US Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: usData, - ), - charts.Series( - id: 'UK Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: ukData, - ) - ]; - } -} - -class _SelectionCallbackState extends State { - DateTime? _time; - Map? _measures; - - // Listens to the underlying selection changes, and updates the information - // relevant to building the primitive legend like information under the - // chart. - _onSelectionChanged(charts.SelectionModel model) { - final selectedDatum = model.selectedDatum; - - DateTime? time; - final measures = {}; - - // We get the model that updated with a list of [SeriesDatum] which is - // simply a pair of series & datum. - // - // Walk the selection updating the measures map, storing off the sales and - // series name for each selection point. - if (selectedDatum.isNotEmpty) { - time = selectedDatum.first.datum.time; - for (var datumPair in selectedDatum) { - measures[datumPair.series.displayName] = datumPair.datum.sales; - } - } - - // Request a build. - setState(() { - _time = time; - _measures = measures; - }); - } - - @override - Widget build(BuildContext context) { - // The children consist of a Chart and Text widgets below to hold the info. - final children = [ - SizedBox( - height: 150.0, - child: charts.TimeSeriesChart( - widget.seriesList, - animate: widget.animate, - selectionModels: [ - charts.SelectionModelConfig( - type: charts.SelectionModelType.info, - changedListener: _onSelectionChanged, - ) - ], - )), - ]; - - // If there is a selection, then include the details. - if (_time != null) { - children.add(Padding( - padding: const EdgeInsets.only(top: 5.0), - child: Text(_time.toString()))); - } - _measures?.forEach((String? series, num? value) { - children.add(Text('$series: $value')); - }); - - return Column(children: children); - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - - TimeSeriesSales(this.time, this.sales); -} diff --git a/web/charts/lib/behaviors/selection_line_highlight.dart b/web/charts/lib/behaviors/selection_line_highlight.dart deleted file mode 100644 index b80e71b4f..000000000 --- a/web/charts/lib/behaviors/selection_line_highlight.dart +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SelectionLineHighlight extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SelectionLineHighlight(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory SelectionLineHighlight.withSampleData() { - return SelectionLineHighlight( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SelectionLineHighlight.withRandomData() { - return SelectionLineHighlight(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // This is just a simple line chart with a behavior that highlights the - // selected points along the lines. A point will be drawn at the selected - // datum's x,y coordinate, and a vertical follow line will be drawn through - // it. - // - // A [Charts.LinePointHighlighter] behavior is added manually to enable the - // highlighting effect. - // - // As an alternative, [defaultInteractions] can be set to true to include - // the default chart interactions, including a LinePointHighlighter. - return charts.LineChart(seriesList, animate: animate, behaviors: [ - // Optional - Configures a [LinePointHighlighter] behavior with a - // vertical follow line. A vertical follow line is included by - // default, but is shown here as an example configuration. - // - // By default, the line has default dash pattern of [1,3]. This can be - // set by providing a [dashPattern] or it can be turned off by passing in - // an empty list. An empty list is necessary because passing in a null - // value will be treated the same as not passing in a value at all. - charts.LinePointHighlighter( - showHorizontalFollowLine: - charts.LinePointHighlighterFollowLineType.none, - showVerticalFollowLine: - charts.LinePointHighlighterFollowLineType.nearest), - // Optional - By default, select nearest is configured to trigger - // with tap so that a user can have pan/zoom behavior and line point - // highlighter. Changing the trigger to tap and drag allows the - // highlighter to follow the dragging gesture but it is not - // recommended to be used when pan/zoom behavior is enabled. - charts.SelectNearest(eventTrigger: charts.SelectionTrigger.tapAndDrag) - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/selection_line_highlight_custom_shape.dart b/web/charts/lib/behaviors/selection_line_highlight_custom_shape.dart deleted file mode 100644 index e85e65f7f..000000000 --- a/web/charts/lib/behaviors/selection_line_highlight_custom_shape.dart +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SelectionLineHighlightCustomShape extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SelectionLineHighlightCustomShape(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory SelectionLineHighlightCustomShape.withSampleData() { - return SelectionLineHighlightCustomShape( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SelectionLineHighlightCustomShape.withRandomData() { - return SelectionLineHighlightCustomShape(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // This is a simple line chart with a behavior that highlights hovered - // lines. A hollow rectangular shape will be drawn at the hovered datum's - // x,y coordinate, and a vertical follow line will be drawn through it. - // - // A [Charts.LinePointHighlighter] behavior is added manually to enable the - // highlighting effect. - // - // As an alternative, [defaultInteractions] can be set to true to include - // the default chart interactions, including a LinePointHighlighter. - return charts.LineChart(seriesList, animate: animate, behaviors: [ - // Optional - Configures a [LinePointHighlighter] behavior with a - // vertical follow line. A vertical follow line is included by - // default, but is shown here as an example configuration. - // - // By default, the line has default dash pattern of [1,3]. This can be - // set by providing a [dashPattern] or it can be turned off by passing in - // an empty list. An empty list is necessary because passing in a null - // value will be treated the same as not passing in a value at all. - // - // The symbol renderer is configured to render a hollow shape, for - // demonstration. - charts.LinePointHighlighter( - showHorizontalFollowLine: - charts.LinePointHighlighterFollowLineType.none, - showVerticalFollowLine: - charts.LinePointHighlighterFollowLineType.nearest, - symbolRenderer: charts.RectSymbolRenderer(isSolid: false)), - // Optional - By default, select nearest is configured to trigger - // with tap so that a user can have pan/zoom behavior and line point - // highlighter. Changing the trigger to tap and drag allows the - // highlighter to follow the dragging gesture but it is not - // recommended to be used when pan/zoom behavior is enabled. - charts.SelectNearest(eventTrigger: charts.SelectionTrigger.tapAndDrag) - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/selection_scatter_plot_highlight.dart b/web/charts/lib/behaviors/selection_scatter_plot_highlight.dart deleted file mode 100644 index 5afe543a9..000000000 --- a/web/charts/lib/behaviors/selection_scatter_plot_highlight.dart +++ /dev/null @@ -1,234 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a scatter plot chart using custom symbols for the points and a -/// behavior that highlights selected points. -/// -/// An optional [charts.LinePointHighlighter] behavior has been added to enable -/// a highlighting effect. This behavior will draw a larger symbol on top of the -/// point nearest to the point where a user taps on the chart. It will also draw -/// follow lines. -/// -/// The series has been configured to draw each point as a square by default. -/// -/// Some data will be drawn as a circle, indicated by defining a custom "circle" -/// value referenced by [charts.pointSymbolRendererFnKey]. -/// -/// Some other data have will be drawn as a hollow circle. In addition to the -/// custom renderer key, these data also have stroke and fillColor values -/// defined. Configuring a separate fillColor will cause the center of the shape -/// to be filled in, with white in these examples. The border of the shape will -/// be color with the color of the data. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SelectionScatterPlotHighlight extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SelectionScatterPlotHighlight(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [ScatterPlotChart] with sample data and no transition. - factory SelectionScatterPlotHighlight.withSampleData() { - return SelectionScatterPlotHighlight( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SelectionScatterPlotHighlight.withRandomData() { - return SelectionScatterPlotHighlight(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - makeRadius(int value) => (random.nextInt(value) + 2).toDouble(); - - final data = [ - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), - 'circle', null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - // Render a hollow circle, filled in with white. - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(4) + 4, - 'circle', charts.MaterialPalette.white, 2.0), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), - 'circle', null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - // Render a hollow circle, filled in with white. - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(4) + 4, - 'circle', charts.MaterialPalette.white, 2.0), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - // Render a hollow square, filled in with white. - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(4) + 4, - null, charts.MaterialPalette.white, 2.0), - ]; - - const maxMeasure = 100; - - return [ - charts.Series( - id: 'Sales', - colorFn: (LinearSales sales, _) { - // Color bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - radiusPxFn: (LinearSales sales, _) => sales.radius, - fillColorFn: (LinearSales row, _) => row.fillColor, - strokeWidthPxFn: (LinearSales row, _) => row.strokeWidth, - data: data, - ) - // Accessor function that associates each datum with a symbol renderer. - ..setAttribute( - charts.pointSymbolRendererFnKey, (int index) => data[index].shape) - // Default symbol renderer ID for data that have no defined shape. - ..setAttribute(charts.pointSymbolRendererIdKey, 'rect') - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.ScatterPlotChart(seriesList, - animate: animate, - behaviors: [ - // Optional - Configures a [LinePointHighlighter] behavior with - // horizontal and vertical follow lines. The highlighter will increase - // the size of the selected points on the chart. - // - // By default, the line has default dash pattern of [1,3]. This can be - // set by providing a [dashPattern] or it can be turned off by passing - // in an empty list. An empty list is necessary because passing in a - // null value will be treated the same as not passing in a value at - // all. - charts.LinePointHighlighter( - showHorizontalFollowLine: - charts.LinePointHighlighterFollowLineType.nearest, - showVerticalFollowLine: - charts.LinePointHighlighterFollowLineType.nearest), - // Optional - By default, select nearest is configured to trigger - // with tap so that a user can have pan/zoom behavior and line point - // highlighter. Changing the trigger to tap and drag allows the - // highlighter to follow the dragging gesture but it is not - // recommended to be used when pan/zoom behavior is enabled. - charts.SelectNearest( - eventTrigger: charts.SelectionTrigger.tapAndDrag), - ], - // Configure the point renderer to have a map of custom symbol - // renderers. - defaultRenderer: - charts.PointRendererConfig(customSymbolRenderers: { - 'circle': charts.CircleSymbolRenderer(), - 'rect': charts.RectSymbolRenderer(), - })); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5, 3.0, 'circle', null, null), - LinearSales(10, 25, 5.0, null, null, null), - LinearSales(12, 75, 4.0, null, null, null), - // Render a hollow circle, filled in with white. - LinearSales(13, 225, 5.0, 'circle', charts.MaterialPalette.white, 2.0), - LinearSales(16, 50, 4.0, null, null, null), - LinearSales(24, 75, 3.0, null, null, null), - LinearSales(25, 100, 3.0, 'circle', null, null), - LinearSales(34, 150, 5.0, null, null, null), - LinearSales(37, 10, 4.5, null, null, null), - // Render a hollow circle, filled in with white. - LinearSales(45, 300, 8.0, 'circle', charts.MaterialPalette.white, 2.0), - LinearSales(52, 15, 4.0, null, null, null), - // Render a hollow square, filled in with white. - LinearSales(56, 200, 7.0, null, charts.MaterialPalette.white, 2.0), - ]; - - const maxMeasure = 300; - - return [ - charts.Series( - id: 'Sales', - // Providing a color function is optional. - colorFn: (LinearSales sales, _) { - // Bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - radiusPxFn: (LinearSales sales, _) => sales.radius, - fillColorFn: (LinearSales row, _) => row.fillColor, - strokeWidthPxFn: (LinearSales row, _) => row.strokeWidth, - data: data, - ) - // Accessor function that associates each datum with a symbol renderer. - ..setAttribute( - charts.pointSymbolRendererFnKey, (int index) => data[index].shape) - // Default symbol renderer ID for data that have no defined shape. - ..setAttribute(charts.pointSymbolRendererIdKey, 'rect') - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - final double radius; - final String? shape; - final charts.Color? fillColor; - final double? strokeWidth; - - LinearSales(this.year, this.sales, this.radius, this.shape, this.fillColor, - this.strokeWidth); -} diff --git a/web/charts/lib/behaviors/selection_user_managed.dart b/web/charts/lib/behaviors/selection_user_managed.dart deleted file mode 100644 index 855a47679..000000000 --- a/web/charts/lib/behaviors/selection_user_managed.dart +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of using user managed state to programmatically set selection. -/// -/// In this example, clicking the "clear selection" button sets the selection -/// to an empty selection. This example also shows that initial selection -/// behavior can still be used with user managed state. -/// -/// Note that the picture in this example is not interactive, please run the -/// gallery app to try out using the button to clear selection. -/// -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SelectionUserManaged extends StatefulWidget { - final List> seriesList; - final bool? animate; - - const SelectionUserManaged(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory SelectionUserManaged.withSampleData() { - return SelectionUserManaged( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SelectionUserManaged.withRandomData() { - return SelectionUserManaged(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - - @override - SelectionUserManagedState createState() { - return SelectionUserManagedState(); - } -} - -class SelectionUserManagedState extends State { - final _myState = charts.UserManagedState(); - - @override - Widget build(BuildContext context) { - final chart = charts.BarChart( - widget.seriesList, - animate: false, //widget.animate, - selectionModels: [ - charts.SelectionModelConfig( - type: charts.SelectionModelType.info, - updatedListener: _infoSelectionModelUpdated) - ], - // Pass in the state you manage to the chart. This will be used to - // override the internal chart state. - userManagedState: _myState, - // The initial selection can still be optionally added by adding the - // initial selection behavior. - behaviors: [ - charts.InitialSelection(selectedDataConfig: [ - charts.SeriesDatumConfig('Sales', '2016') - ]) - ], - ); - - final clearSelection = MaterialButton( - onPressed: _handleClearSelection, child: const Text('Clear Selection')); - - return Column( - children: [SizedBox(height: 150.0, child: chart), clearSelection]); - } - - void _infoSelectionModelUpdated(charts.SelectionModel model) { - // If you want to allow the chart to continue to respond to select events - // that update the selection, add an updatedListener that saves off the - // selection model each time the selection model is updated, regardless of - // if there are changes. - // - // This also allows you to listen to the selection model update events and - // alter the selection. - _myState.selectionModels[charts.SelectionModelType.info] = - charts.UserManagedSelectionModel(model: model); - } - - void _handleClearSelection() { - // Call set state to request a rebuild, to pass in the modified selection. - // In this case, passing in an empty [UserManagedSelectionModel] creates a - // no selection model to clear all selection when rebuilt. - setState(() { - _myState.selectionModels[charts.SelectionModelType.info] = - charts.UserManagedSelectionModel(); - }); - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/slider.dart b/web/charts/lib/behaviors/slider.dart deleted file mode 100644 index b4f5d4ad1..000000000 --- a/web/charts/lib/behaviors/slider.dart +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; -import 'package:flutter/scheduler.dart'; - -/// This is just a simple line chart with a behavior that adds slider controls. -/// -/// A [Slider] behavior is added manually to enable slider controls, with an -/// initial position at 1 along the domain axis. -/// -/// An onChange event handler has been configured to demonstrate updating a div -/// with data from the slider's current position. An "initial" drag state event -/// will be fired when the chart is drawn because an initial domain value is -/// set. -/// -/// [Slider.moveSliderToDomain] can be called to programmatically position the -/// slider. This is useful for synchronizing the slider with external elements. -class SliderLine extends StatefulWidget { - final List> seriesList; - final bool? animate; - - const SliderLine(this.seriesList, {this.animate, Key? key}) : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory SliderLine.withSampleData() { - return SliderLine( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SliderLine.withRandomData() { - return SliderLine(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - // We need a Stateful widget to build the selection details with the current - // selection as the state. - @override - State createState() => _SliderCallbackState(); - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -class _SliderCallbackState extends State { - num? _sliderDomainValue; - String? _sliderDragState; - Point? _sliderPosition; - - // Handles callbacks when the user drags the slider. - _onSliderChange(Point point, dynamic domain, String roleId, - charts.SliderListenerDragState dragState) { - // Request a build. - void rebuild(_) { - setState(() { - _sliderDomainValue = (domain * 10).round() / 10; - _sliderDragState = dragState.toString(); - _sliderPosition = point; - }); - } - - SchedulerBinding.instance.addPostFrameCallback(rebuild); - } - - @override - Widget build(BuildContext context) { - // The children consist of a Chart and Text widgets below to hold the info. - final children = [ - SizedBox( - height: 150.0, - child: charts.LineChart( - widget.seriesList, - animate: widget.animate, - // Configures a [Slider] behavior. - // - // Available options include: - // - // [eventTrigger] configures the type of mouse gesture that controls - // the slider. - // - // [handleRenderer] draws a handle for the slider. Defaults to a - // rectangle. - // - // [initialDomainValue] sets the initial position of the slider in - // domain units. The default is the center of the chart. - // - // [onChangeCallback] will be called when the position of the slider - // changes during a drag event. - // - // [roleId] optional custom role ID for the slider. This can be used to - // allow multiple [Slider] behaviors on the same chart. Normally, there can - // only be one slider (per event trigger type) on a chart. This setting - // allows for configuring multiple independent sliders. - // - // [snapToDatum] configures the slider to snap snap onto the nearest - // datum (by domain distance) when dragged. By default, the slider - // can be positioned anywhere along the domain axis. - // - // [style] takes in a [SliderStyle] configuration object, and - // configures the color and sizing of the slider line and handle. - behaviors: [ - charts.Slider( - initialDomainValue: 1.0, onChangeCallback: _onSliderChange), - ], - )), - ]; - - // If there is a slider change event, then include the details. - if (_sliderDomainValue != null) { - children.add(Padding( - padding: const EdgeInsets.only(top: 5.0), - child: Text('Slider domain value: $_sliderDomainValue'))); - } - if (_sliderPosition != null) { - children.add(Padding( - padding: const EdgeInsets.only(top: 5.0), - child: Text( - 'Slider position: ${_sliderPosition!.x}, ${_sliderPosition!.y}'))); - } - if (_sliderDragState != null) { - children.add(Padding( - padding: const EdgeInsets.only(top: 5.0), - child: Text('Slider drag state: $_sliderDragState'))); - } - - return Column(children: children); - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/behaviors/sliding_viewport_on_selection.dart b/web/charts/lib/behaviors/sliding_viewport_on_selection.dart deleted file mode 100644 index 585400b50..000000000 --- a/web/charts/lib/behaviors/sliding_viewport_on_selection.dart +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of the chart behavior that centers the viewport on domain selection. - -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SlidingViewportOnSelection extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SlidingViewportOnSelection(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory SlidingViewportOnSelection.withSampleData() { - return SlidingViewportOnSelection( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SlidingViewportOnSelection.withRandomData() { - return SlidingViewportOnSelection(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - OrdinalSales('2018', random.nextInt(100)), - OrdinalSales('2019', random.nextInt(100)), - OrdinalSales('2020', random.nextInt(100)), - OrdinalSales('2021', random.nextInt(100)), - OrdinalSales('2022', random.nextInt(100)), - OrdinalSales('2023', random.nextInt(100)), - OrdinalSales('2024', random.nextInt(100)), - OrdinalSales('2025', random.nextInt(100)), - OrdinalSales('2026', random.nextInt(100)), - OrdinalSales('2027', random.nextInt(100)), - OrdinalSales('2028', random.nextInt(100)), - OrdinalSales('2029', random.nextInt(100)), - OrdinalSales('2030', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - behaviors: [ - // Add the sliding viewport behavior to have the viewport center on the - // domain that is currently selected. - charts.SlidingViewport(), - // A pan and zoom behavior helps demonstrate the sliding viewport - // behavior by allowing the data visible in the viewport to be adjusted - // dynamically. - charts.PanAndZoomBehavior(), - ], - // Set an initial viewport to demonstrate the sliding viewport behavior on - // initial chart load. - domainAxis: - charts.OrdinalAxisSpec(viewport: charts.OrdinalViewport('2018', 4)), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - OrdinalSales('2018', 33), - OrdinalSales('2019', 80), - OrdinalSales('2020', 21), - OrdinalSales('2021', 77), - OrdinalSales('2022', 8), - OrdinalSales('2023', 12), - OrdinalSales('2024', 42), - OrdinalSales('2025', 70), - OrdinalSales('2026', 77), - OrdinalSales('2027', 55), - OrdinalSales('2028', 19), - OrdinalSales('2029', 66), - OrdinalSales('2030', 27), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/combo_chart/combo_gallery.dart b/web/charts/lib/combo_chart/combo_gallery.dart deleted file mode 100644 index d5348dc94..000000000 --- a/web/charts/lib/combo_chart/combo_gallery.dart +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'date_time_line_point.dart'; -import 'numeric_line_bar.dart'; -import 'numeric_line_point.dart'; -import 'ordinal_bar_line.dart'; -import 'scatter_plot_line.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Ordinal Combo Chart', - subtitle: 'Ordinal combo chart with bars and lines', - childBuilder: () => OrdinalComboBarLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Numeric Line Bar Combo Chart', - subtitle: 'Numeric combo chart with lines and bars', - childBuilder: () => NumericComboLineBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Numeric Line Points Combo Chart', - subtitle: 'Numeric combo chart with lines and points', - childBuilder: () => NumericComboLinePointChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Time Series Combo Chart', - subtitle: 'Time series combo chart with lines and points', - childBuilder: () => DateTimeComboLinePointChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.scatter_plot), - title: 'Scatter Plot Combo Chart', - subtitle: 'Scatter plot combo chart with a line', - childBuilder: () => ScatterPlotComboLineChart.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/combo_chart/date_time_line_point.dart b/web/charts/lib/combo_chart/date_time_line_point.dart deleted file mode 100644 index 87f76e1e2..000000000 --- a/web/charts/lib/combo_chart/date_time_line_point.dart +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a combo time series chart with two series rendered as lines, and -/// a third rendered as points along the top line with a different color. -/// -/// This example demonstrates a method for drawing points along a line using a -/// different color from the main series color. The line renderer supports -/// drawing points with the "includePoints" option, but those points will share -/// the same color as the line. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class DateTimeComboLinePointChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const DateTimeComboLinePointChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory DateTimeComboLinePointChart.withSampleData() { - return DateTimeComboLinePointChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory DateTimeComboLinePointChart.withRandomData() { - return DateTimeComboLinePointChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)), - ]; - - final tableSalesData = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)), - ]; - - final mobileSalesData = [ - TimeSeriesSales(DateTime(2017, 9, 19), tableSalesData[0].sales), - TimeSeriesSales(DateTime(2017, 9, 26), tableSalesData[1].sales), - TimeSeriesSales(DateTime(2017, 10, 3), tableSalesData[2].sales), - TimeSeriesSales(DateTime(2017, 10, 10), tableSalesData[3].sales), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: mobileSalesData) - // Configure our custom point renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customPoint'), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart( - seriesList, - animate: animate, - // Configure the default renderer as a line renderer. This will be used - // for any series that does not define a rendererIdKey. - // - // This is the default configuration, but is shown here for illustration. - defaultRenderer: charts.LineRendererConfig(), - // Custom renderer configuration for the point series. - customSeriesRenderers: [ - charts.PointRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customPoint') - ], - // Optionally pass in a [DateTimeFactory] used by the chart. The factory - // should create the same type of [DateTime] as the data provided. If none - // specified, the default creates local date time. - dateTimeFactory: const charts.LocalDateTimeFactory(), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final desktopSalesData = [ - TimeSeriesSales(DateTime(2017, 9, 19), 5), - TimeSeriesSales(DateTime(2017, 9, 26), 25), - TimeSeriesSales(DateTime(2017, 10, 3), 100), - TimeSeriesSales(DateTime(2017, 10, 10), 75), - ]; - - final tableSalesData = [ - TimeSeriesSales(DateTime(2017, 9, 19), 10), - TimeSeriesSales(DateTime(2017, 9, 26), 50), - TimeSeriesSales(DateTime(2017, 10, 3), 200), - TimeSeriesSales(DateTime(2017, 10, 10), 150), - ]; - - final mobileSalesData = [ - TimeSeriesSales(DateTime(2017, 9, 19), 10), - TimeSeriesSales(DateTime(2017, 9, 26), 50), - TimeSeriesSales(DateTime(2017, 10, 3), 200), - TimeSeriesSales(DateTime(2017, 10, 10), 150), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: mobileSalesData) - // Configure our custom point renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customPoint'), - ]; - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - - TimeSeriesSales(this.time, this.sales); -} diff --git a/web/charts/lib/combo_chart/numeric_line_bar.dart b/web/charts/lib/combo_chart/numeric_line_bar.dart deleted file mode 100644 index 4739bafed..000000000 --- a/web/charts/lib/combo_chart/numeric_line_bar.dart +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a numeric combo chart with two series rendered as bars, and a -/// third rendered as a line. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class NumericComboLineBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const NumericComboLineBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory NumericComboLineBarChart.withSampleData() { - return NumericComboLineBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory NumericComboLineBarChart.withRandomData() { - return NumericComboLineBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - final tableSalesData = [ - LinearSales(0, desktopSalesData[0].sales), - LinearSales(1, desktopSalesData[1].sales), - LinearSales(2, desktopSalesData[2].sales), - LinearSales(3, desktopSalesData[3].sales), - ]; - - final mobileSalesData = [ - LinearSales(0, tableSalesData[0].sales * 2), - LinearSales(1, tableSalesData[1].sales * 2), - LinearSales(2, tableSalesData[2].sales * 2), - LinearSales(3, tableSalesData[3].sales * 2), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: desktopSalesData, - ) - // Configure our custom bar renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customBar'), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: tableSalesData, - ) - // Configure our custom bar renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customBar'), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: mobileSalesData), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.NumericComboChart(seriesList, - animate: animate, - // Configure the default renderer as a line renderer. This will be used - // for any series that does not define a rendererIdKey. - defaultRenderer: charts.LineRendererConfig(), - // Custom renderer configuration for the bar series. - customSeriesRenderers: [ - charts.BarRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customBar') - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final desktopSalesData = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - final tableSalesData = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - final mobileSalesData = [ - LinearSales(0, 10), - LinearSales(1, 50), - LinearSales(2, 200), - LinearSales(3, 150), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: desktopSalesData, - ) - // Configure our custom bar renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customBar'), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: tableSalesData, - ) - // Configure our custom bar renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customBar'), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: mobileSalesData), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/combo_chart/numeric_line_point.dart b/web/charts/lib/combo_chart/numeric_line_point.dart deleted file mode 100644 index 184631b4b..000000000 --- a/web/charts/lib/combo_chart/numeric_line_point.dart +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a numeric combo chart with two series rendered as lines, and a -/// third rendered as points along the top line with a different color. -/// -/// This example demonstrates a method for drawing points along a line using a -/// different color from the main series color. The line renderer supports -/// drawing points with the "includePoints" option, but those points will share -/// the same color as the line. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class NumericComboLinePointChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const NumericComboLinePointChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory NumericComboLinePointChart.withSampleData() { - return NumericComboLinePointChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory NumericComboLinePointChart.withRandomData() { - return NumericComboLinePointChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - final tableSalesData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - final mobileSalesData = [ - LinearSales(0, tableSalesData[0].sales), - LinearSales(1, tableSalesData[1].sales), - LinearSales(2, tableSalesData[2].sales), - LinearSales(3, tableSalesData[3].sales), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: mobileSalesData) - // Configure our custom point renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customPoint'), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.NumericComboChart(seriesList, - animate: animate, - // Configure the default renderer as a line renderer. This will be used - // for any series that does not define a rendererIdKey. - defaultRenderer: charts.LineRendererConfig(), - // Custom renderer configuration for the point series. - customSeriesRenderers: [ - charts.PointRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customPoint') - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final desktopSalesData = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - final tableSalesData = [ - LinearSales(0, 10), - LinearSales(1, 50), - LinearSales(2, 200), - LinearSales(3, 150), - ]; - - final mobileSalesData = [ - LinearSales(0, 10), - LinearSales(1, 50), - LinearSales(2, 200), - LinearSales(3, 150), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: tableSalesData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: mobileSalesData) - // Configure our custom point renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customPoint'), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/combo_chart/ordinal_bar_line.dart b/web/charts/lib/combo_chart/ordinal_bar_line.dart deleted file mode 100644 index 9263dd9b1..000000000 --- a/web/charts/lib/combo_chart/ordinal_bar_line.dart +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of an ordinal combo chart with two series rendered as bars, and a -/// third rendered as a line. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class OrdinalComboBarLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const OrdinalComboBarLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory OrdinalComboBarLineChart.withSampleData() { - return OrdinalComboBarLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory OrdinalComboBarLineChart.withRandomData() { - return OrdinalComboBarLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tableSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData) - // Configure our custom line renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customLine'), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.OrdinalComboChart(seriesList, - animate: animate, - // Configure the default renderer as a bar renderer. - defaultRenderer: charts.BarRendererConfig( - groupingType: charts.BarGroupingType.grouped), - // Custom renderer configuration for the line series. This will be used for - // any series that does not define a rendererIdKey. - customSeriesRenderers: [ - charts.LineRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customLine') - ]); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tableSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 50), - OrdinalSales('2016', 200), - OrdinalSales('2017', 150), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tableSalesData), - charts.Series( - id: 'Mobile ', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData) - // Configure our custom line renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customLine'), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/combo_chart/scatter_plot_line.dart b/web/charts/lib/combo_chart/scatter_plot_line.dart deleted file mode 100644 index 48b63e9e1..000000000 --- a/web/charts/lib/combo_chart/scatter_plot_line.dart +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a combo scatter plot chart with a second series rendered as a -/// line. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class ScatterPlotComboLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const ScatterPlotComboLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [ScatterPlotChart] with sample data and no transition. - factory ScatterPlotComboLineChart.withSampleData() { - return ScatterPlotComboLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory ScatterPlotComboLineChart.withRandomData() { - return ScatterPlotComboLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - makeRadius(int value) => (random.nextInt(value) + 2).toDouble(); - - final desktopSalesData = [ - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - ]; - - var myRegressionData = [ - LinearSales(0, desktopSalesData[0].sales, 3.5), - LinearSales( - 100, desktopSalesData[desktopSalesData.length - 1].sales, 7.5), - ]; - - const maxMeasure = 100; - - return [ - charts.Series( - id: 'Sales', - // Providing a color function is optional. - colorFn: (LinearSales sales, _) { - // Bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - // Providing a radius function is optional. - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: desktopSalesData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.purple.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myRegressionData) - // Configure our custom line renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customLine'), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.ScatterPlotChart(seriesList, - animate: animate, - // Configure the default renderer as a point renderer. This will be used - // for any series that does not define a rendererIdKey. - // - // This is the default configuration, but is shown here for - // illustration. - defaultRenderer: charts.PointRendererConfig(), - // Custom renderer configuration for the line series. - customSeriesRenderers: [ - charts.LineRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customLine', - // Configure the regression line to be painted above the points. - // - // By default, series drawn by the point renderer are painted on - // top of those drawn by a line renderer. - layoutPaintOrder: charts.LayoutViewPaintOrder.point + 1) - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final desktopSalesData = [ - LinearSales(0, 5, 3.0), - LinearSales(10, 25, 5.0), - LinearSales(12, 75, 4.0), - LinearSales(13, 225, 5.0), - LinearSales(16, 50, 4.0), - LinearSales(24, 75, 3.0), - LinearSales(25, 100, 3.0), - LinearSales(34, 150, 5.0), - LinearSales(37, 10, 4.5), - LinearSales(45, 300, 8.0), - LinearSales(52, 15, 4.0), - LinearSales(56, 200, 7.0), - ]; - - var myRegressionData = [ - LinearSales(0, 5, 3.5), - LinearSales(56, 240, 3.5), - ]; - - const maxMeasure = 300; - - return [ - charts.Series( - id: 'Sales', - // Providing a color function is optional. - colorFn: (LinearSales sales, _) { - // Bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - // Providing a radius function is optional. - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: desktopSalesData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.purple.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myRegressionData) - // Configure our custom line renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customLine'), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - final double radius; - - LinearSales(this.year, this.sales, this.radius); -} diff --git a/web/charts/lib/drawer.dart b/web/charts/lib/drawer.dart deleted file mode 100644 index 6d9bd0d8b..000000000 --- a/web/charts/lib/drawer.dart +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; - -/// A menu drawer supporting toggling theme and performance overlay. -class GalleryDrawer extends StatelessWidget { - final bool showPerformanceOverlay; - final ValueChanged onShowPerformanceOverlayChanged; - - const GalleryDrawer( - {Key? key, - required this.showPerformanceOverlay, - required this.onShowPerformanceOverlayChanged}) - : super(key: key); - - @override - Widget build(BuildContext context) { - return Drawer( - child: ListView(children: [ - // Performance overlay toggle. - ListTile( - leading: const Icon(Icons.assessment), - title: const Text('Performance Overlay'), - onTap: () { - onShowPerformanceOverlayChanged(!showPerformanceOverlay); - }, - selected: showPerformanceOverlay, - trailing: Checkbox( - value: showPerformanceOverlay, - onChanged: (bool? value) { - onShowPerformanceOverlayChanged(!showPerformanceOverlay); - }, - ), - ), - ]), - ); - } -} diff --git a/web/charts/lib/gallery_scaffold.dart b/web/charts/lib/gallery_scaffold.dart deleted file mode 100644 index 8acaf2e75..000000000 --- a/web/charts/lib/gallery_scaffold.dart +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; - -typedef GalleryWidgetBuilder = Widget Function(); - -/// Helper to build gallery. -class GalleryScaffold extends StatefulWidget { - /// The widget used for leading in a [ListTile]. - final Widget? listTileIcon; - final String title; - final String subtitle; - final GalleryWidgetBuilder childBuilder; - - const GalleryScaffold( - {this.listTileIcon, - required this.title, - required this.subtitle, - required this.childBuilder, - Key? key}) - : super(key: key); - - /// Gets the gallery - Widget buildGalleryListTile(BuildContext context) => ListTile( - leading: listTileIcon, - title: Text(title), - subtitle: Text(subtitle), - onTap: () { - Navigator.push(context, MaterialPageRoute(builder: (_) => this)); - }); - - @override - State createState() => _GalleryScaffoldState(); -} - -class _GalleryScaffoldState extends State { - void _handleButtonPress() { - setState(() {}); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar(title: Text(widget.title)), - body: Padding( - padding: const EdgeInsets.all(8.0), - child: Column(children: [ - SizedBox(height: 250.0, child: widget.childBuilder()), - ])), - floatingActionButton: FloatingActionButton( - onPressed: _handleButtonPress, child: const Icon(Icons.refresh)), - ); - } -} diff --git a/web/charts/lib/home.dart b/web/charts/lib/home.dart deleted file mode 100644 index 377c286cb..000000000 --- a/web/charts/lib/home.dart +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; -import 'dart:developer'; -import 'app_config.dart'; -import 'drawer.dart'; -import 'a11y/a11y_gallery.dart' as a11y show buildGallery; -import 'bar_chart/bar_gallery.dart' as bar show buildGallery; -import 'time_series_chart/time_series_gallery.dart' as time_series - show buildGallery; -import 'line_chart/line_gallery.dart' as line show buildGallery; -import 'scatter_plot_chart/scatter_plot_gallery.dart' as scatter_plot - show buildGallery; -import 'combo_chart/combo_gallery.dart' as combo show buildGallery; -import 'pie_chart/pie_gallery.dart' as pie show buildGallery; -import 'axes/axes_gallery.dart' as axes show buildGallery; -import 'behaviors/behaviors_gallery.dart' as behaviors show buildGallery; -import 'i18n/i18n_gallery.dart' as i18n show buildGallery; -import 'legends/legends_gallery.dart' as legends show buildGallery; - -/// Main entry point of the gallery app. -/// -/// This renders a list of all available demos. -class Home extends StatelessWidget { - final bool showPerformanceOverlay; - final ValueChanged onShowPerformanceOverlayChanged; - final a11yGalleries = a11y.buildGallery(); - final barGalleries = bar.buildGallery(); - final timeSeriesGalleries = time_series.buildGallery(); - final lineGalleries = line.buildGallery(); - final scatterPlotGalleries = scatter_plot.buildGallery(); - final comboGalleries = combo.buildGallery(); - final pieGalleries = pie.buildGallery(); - final axesGalleries = axes.buildGallery(); - final behaviorsGalleries = behaviors.buildGallery(); - final i18nGalleries = i18n.buildGallery(); - final legendsGalleries = legends.buildGallery(); - - Home( - {Key? key, - required this.showPerformanceOverlay, - required this.onShowPerformanceOverlayChanged}) - : super(key: key); - - @override - Widget build(BuildContext context) { - var galleries = []; - - galleries.addAll( - a11yGalleries.map((gallery) => gallery.buildGalleryListTile(context))); - - // Add example bar charts. - galleries.addAll( - barGalleries.map((gallery) => gallery.buildGalleryListTile(context))); - - // Add example time series charts. - galleries.addAll(timeSeriesGalleries - .map((gallery) => gallery.buildGalleryListTile(context))); - - // Add example line charts. - galleries.addAll( - lineGalleries.map((gallery) => gallery.buildGalleryListTile(context))); - - // Add example scatter plot charts. - galleries.addAll(scatterPlotGalleries - .map((gallery) => gallery.buildGalleryListTile(context))); - - // Add example pie charts. - galleries.addAll( - comboGalleries.map((gallery) => gallery.buildGalleryListTile(context))); - - // Add example pie charts. - galleries.addAll( - pieGalleries.map((gallery) => gallery.buildGalleryListTile(context))); - - // Add example custom axis. - galleries.addAll( - axesGalleries.map((gallery) => gallery.buildGalleryListTile(context))); - - galleries.addAll(behaviorsGalleries - .map((gallery) => gallery.buildGalleryListTile(context))); - - // Add legends examples - galleries.addAll(legendsGalleries - .map((gallery) => gallery.buildGalleryListTile(context))); - - // Add examples for i18n. - galleries.addAll( - i18nGalleries.map((gallery) => gallery.buildGalleryListTile(context))); - - _setupPerformance(); - - return Scaffold( - drawer: GalleryDrawer( - showPerformanceOverlay: showPerformanceOverlay, - onShowPerformanceOverlayChanged: onShowPerformanceOverlayChanged), - appBar: AppBar(title: Text(defaultConfig.appName)), - body: ListView(padding: kMaterialListPadding, children: galleries), - ); - } - - void _setupPerformance() { - // Change [printPerformance] to true and set the app to release mode to - // print performance numbers to console. By default, Flutter builds in debug - // mode and this mode is slow. To build in release mode, specify the flag - // blaze-run flag "--define flutter_build_mode=release". - // The build target must also be an actual device and not the emulator. - charts.Performance.time = (String tag) => Timeline.startSync(tag); - charts.Performance.timeEnd = (_) => Timeline.finishSync(); - } -} diff --git a/web/charts/lib/i18n/i18n_gallery.dart b/web/charts/lib/i18n/i18n_gallery.dart deleted file mode 100644 index e63a4d1ce..000000000 --- a/web/charts/lib/i18n/i18n_gallery.dart +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'rtl_bar_chart.dart'; -import 'rtl_line_chart.dart'; -import 'rtl_line_segments.dart'; -import 'rtl_series_legend.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'RTL Bar Chart', - subtitle: 'Simple bar chart in RTL', - childBuilder: () => RTLBarChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'RTL Line Chart', - subtitle: 'Simple line chart in RTL', - childBuilder: () => RTLLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'RTL Line Segments', - subtitle: 'Stacked area chart with style segments in RTL', - childBuilder: () => RTLLineSegments.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.flag), - title: 'RTL Series Legend', - subtitle: 'Series legend in RTL', - childBuilder: () => RTLSeriesLegend.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/i18n/rtl_bar_chart.dart b/web/charts/lib/i18n/rtl_bar_chart.dart deleted file mode 100644 index 7f7a1f807..000000000 --- a/web/charts/lib/i18n/rtl_bar_chart.dart +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// RTL Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class RTLBarChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const RTLBarChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory RTLBarChart.withSampleData() { - return RTLBarChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory RTLBarChart.withRandomData() { - return RTLBarChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // Charts will determine if RTL is enabled by checking the directionality by - // requesting Directionality.of(context). This returns the text direction - // from the closest instance of that encloses the context passed to build - // the chart. A [TextDirection.rtl] will be treated as a RTL chart. This - // means that the directionality widget does not have to directly wrap each - // chart. It is show here as an example only. - // - // By default, when a chart detects RTL: - // Measure axis positions are flipped. Primary measure axis is on the right - // and the secondary measure axis is on the left (when used). - // Domain axis' first domain starts on the right and grows left. - // - // Optionally, [RTLSpec] can be passed in when creating the chart to specify - // chart display settings in RTL mode. - return Directionality( - textDirection: TextDirection.rtl, - child: charts.BarChart( - seriesList, - animate: animate, - vertical: false, - )); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/i18n/rtl_line_chart.dart b/web/charts/lib/i18n/rtl_line_chart.dart deleted file mode 100644 index 9385f5dd3..000000000 --- a/web/charts/lib/i18n/rtl_line_chart.dart +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// RTL Line chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class RTLLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const RTLLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory RTLLineChart.withSampleData() { - return RTLLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory RTLLineChart.withRandomData() { - return RTLLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // Charts will determine if RTL is enabled by checking the directionality by - // requesting Directionality.of(context). This returns the text direction - // from the closest instance of that encloses the context passed to build - // the chart. A [TextDirection.rtl] will be treated as a RTL chart. This - // means that the directionality widget does not have to directly wrap each - // chart. It is show here as an example only. - // - // By default, when a chart detects RTL: - // Measure axis positions are flipped. Primary measure axis is on the right - // and the secondary measure axis is on the left (when used). - // Domain axis' first domain starts on the right and grows left. - return Directionality( - textDirection: TextDirection.rtl, - child: charts.LineChart( - seriesList, - animate: animate, - )); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/i18n/rtl_line_segments.dart b/web/charts/lib/i18n/rtl_line_segments.dart deleted file mode 100644 index ac5a00af1..000000000 --- a/web/charts/lib/i18n/rtl_line_segments.dart +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a RTL stacked area chart with changing styles within each line. -/// -/// Each series of data in this example contains different values for color, -/// dashPattern, or strokeWidthPx between each datum. The line and area skirt -/// will be rendered in segments, with the styling of the series changing when -/// these data attributes change. -/// -/// Note that if a dashPattern or strokeWidth value is not found for a -/// particular datum, then the chart will fall back to use the value defined in -/// the [charts.LineRendererConfig]. This could be used, for example, to define -/// a default dash pattern for the series, with only a specific datum called out -/// with a different pattern. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class RTLLineSegments extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const RTLLineSegments(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory RTLLineSegments.withSampleData() { - return RTLLineSegments( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory RTLLineSegments.withRandomData() { - return RTLLineSegments(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - // Series of data with static dash pattern and stroke width. The colorFn - // accessor will colorize each datum (for all three series). - final colorChangeData = [ - LinearSales(0, random.nextInt(100), null, 2.0), - LinearSales(1, random.nextInt(100), null, 2.0), - LinearSales(2, random.nextInt(100), null, 2.0), - LinearSales(3, random.nextInt(100), null, 2.0), - LinearSales(4, random.nextInt(100), null, 2.0), - LinearSales(5, random.nextInt(100), null, 2.0), - LinearSales(6, random.nextInt(100), null, 2.0), - ]; - - // Series of data with changing color and dash pattern. - final dashPatternChangeData = [ - LinearSales(0, random.nextInt(100), [2, 2], 2.0), - LinearSales(1, random.nextInt(100), [2, 2], 2.0), - LinearSales(2, random.nextInt(100), [4, 4], 2.0), - LinearSales(3, random.nextInt(100), [4, 4], 2.0), - LinearSales(4, random.nextInt(100), [4, 4], 2.0), - LinearSales(5, random.nextInt(100), [8, 3, 2, 3], 2.0), - LinearSales(6, random.nextInt(100), [8, 3, 2, 3], 2.0), - ]; - - // Series of data with changing color and stroke width. - final strokeWidthChangeData = [ - LinearSales(0, random.nextInt(100), null, 2.0), - LinearSales(1, random.nextInt(100), null, 2.0), - LinearSales(2, random.nextInt(100), null, 4.0), - LinearSales(3, random.nextInt(100), null, 4.0), - LinearSales(4, random.nextInt(100), null, 4.0), - LinearSales(5, random.nextInt(100), null, 6.0), - LinearSales(6, random.nextInt(100), null, 6.0), - ]; - - // Generate 2 shades of each color so that we can style the line segments. - final blue = charts.MaterialPalette.blue.makeShades(2); - final red = charts.MaterialPalette.red.makeShades(2); - final green = charts.MaterialPalette.green.makeShades(2); - - return [ - charts.Series( - id: 'Color Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? blue[1] : blue[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: colorChangeData, - ), - charts.Series( - id: 'Dash Pattern Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? red[1] : red[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: dashPatternChangeData, - ), - charts.Series( - id: 'Stroke Width Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? green[1] : green[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: strokeWidthChangeData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // Charts will determine if RTL is enabled by checking the directionality by - // requesting Directionality.of(context). This returns the text direction - // from the closest instance of that encloses the context passed to build - // the chart. A [TextDirection.rtl] will be treated as a RTL chart. This - // means that the directionality widget does not have to directly wrap each - // chart. It is show here as an example only. - // - // By default, when a chart detects RTL: - // Measure axis positions are flipped. Primary measure axis is on the right - // and the secondary measure axis is on the left (when used). - // Domain axis' first domain starts on the right and grows left. - return Directionality( - textDirection: TextDirection.rtl, - child: charts.LineChart( - seriesList, - defaultRenderer: - charts.LineRendererConfig(includeArea: true, stacked: true), - animate: animate, - )); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - // Series of data with static dash pattern and stroke width. The colorFn - // accessor will colorize each datum (for all three series). - final colorChangeData = [ - LinearSales(0, 5, null, 2.0), - LinearSales(1, 15, null, 2.0), - LinearSales(2, 25, null, 2.0), - LinearSales(3, 75, null, 2.0), - LinearSales(4, 100, null, 2.0), - LinearSales(5, 90, null, 2.0), - LinearSales(6, 75, null, 2.0), - ]; - - // Series of data with changing color and dash pattern. - final dashPatternChangeData = [ - LinearSales(0, 5, [2, 2], 2.0), - LinearSales(1, 15, [2, 2], 2.0), - LinearSales(2, 25, [4, 4], 2.0), - LinearSales(3, 75, [4, 4], 2.0), - LinearSales(4, 100, [4, 4], 2.0), - LinearSales(5, 90, [8, 3, 2, 3], 2.0), - LinearSales(6, 75, [8, 3, 2, 3], 2.0), - ]; - - // Series of data with changing color and stroke width. - final strokeWidthChangeData = [ - LinearSales(0, 5, null, 2.0), - LinearSales(1, 15, null, 2.0), - LinearSales(2, 25, null, 4.0), - LinearSales(3, 75, null, 4.0), - LinearSales(4, 100, null, 4.0), - LinearSales(5, 90, null, 6.0), - LinearSales(6, 75, null, 6.0), - ]; - - // Generate 2 shades of each color so that we can style the line segments. - final blue = charts.MaterialPalette.blue.makeShades(2); - final red = charts.MaterialPalette.red.makeShades(2); - final green = charts.MaterialPalette.green.makeShades(2); - - return [ - charts.Series( - id: 'Color Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? blue[1] : blue[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: colorChangeData, - ), - charts.Series( - id: 'Dash Pattern Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? red[1] : red[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: dashPatternChangeData, - ), - charts.Series( - id: 'Stroke Width Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? green[1] : green[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: strokeWidthChangeData, - ), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - final List? dashPattern; - final double strokeWidthPx; - - LinearSales(this.year, this.sales, this.dashPattern, this.strokeWidthPx); -} diff --git a/web/charts/lib/i18n/rtl_series_legend.dart b/web/charts/lib/i18n/rtl_series_legend.dart deleted file mode 100644 index 419d7a110..000000000 --- a/web/charts/lib/i18n/rtl_series_legend.dart +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// RTL Bar chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class RTLSeriesLegend extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const RTLSeriesLegend(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [BarChart] with sample data and no transition. - factory RTLSeriesLegend.withSampleData() { - return RTLSeriesLegend( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory RTLSeriesLegend.withRandomData() { - return RTLSeriesLegend(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final otherSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // Charts will determine if RTL is enabled by checking the directionality by - // requesting Directionality.of(context). This returns the text direction - // from the closest instance of that encloses the context passed to build - // the chart. A [TextDirection.rtl] will be treated as a RTL chart. This - // means that the directionality widget does not have to directly wrap each - // chart. It is show here as an example only. - // - // When the legend behavior detects RTL: - // [BehaviorPosition.start] is to the right of the chart. - // [BehaviorPosition.end] is to the left of the chart. - // - // If the [BehaviorPosition] is top or bottom, the start justification - // is to the right, and the end justification is to the left. - // - // The legend's tabular layout will also layout rows and columns from right - // to left. - // - // The below example changes the position to 'start' and max rows of 2 in - // order to show these effects, but are not required for SeriesLegend to - // work with the correct directionality. - return Directionality( - textDirection: TextDirection.rtl, - child: charts.BarChart( - seriesList, - animate: animate, - behaviors: [ - charts.SeriesLegend( - position: charts.BehaviorPosition.end, desiredMaxRows: 2) - ], - )); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final otherSalesData = [ - OrdinalSales('2014', 20), - OrdinalSales('2015', 35), - OrdinalSales('2016', 15), - OrdinalSales('2017', 10), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/legends/datum_legend_options.dart b/web/charts/lib/legends/datum_legend_options.dart deleted file mode 100644 index e2184beed..000000000 --- a/web/charts/lib/legends/datum_legend_options.dart +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Pie chart with example of a legend with customized position, justification, -/// desired max rows, padding, and entry text styles. These options are shown as -/// an example of how to use the customizations, they do not necessary have to -/// be used together in this way. Choosing [end] as the position does not -/// require the justification to also be [endDrawArea]. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class DatumLegendOptions extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const DatumLegendOptions(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory DatumLegendOptions.withSampleData() { - return DatumLegendOptions( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory DatumLegendOptions.withRandomData() { - return DatumLegendOptions(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.PieChart( - seriesList, - animate: animate, - // Add the legend behavior to the chart to turn on legends. - // This example shows how to change the position and justification of - // the legend, in addition to altering the max rows and padding. - behaviors: [ - charts.DatumLegend( - // Positions for "start" and "end" will be left and right respectively - // for widgets with a build context that has directionality ltr. - // For rtl, "start" and "end" will be right and left respectively. - // Since this example has directionality of ltr, the legend is - // positioned on the right side of the chart. - position: charts.BehaviorPosition.end, - // For a legend that is positioned on the left or right of the chart, - // setting the justification for [endDrawArea] is aligned to the - // bottom of the chart draw area. - outsideJustification: charts.OutsideJustification.endDrawArea, - // By default, if the position of the chart is on the left or right of - // the chart, [horizontalFirst] is set to false. This means that the - // legend entries will grow as new rows first instead of a new column. - horizontalFirst: false, - // By setting this value to 2, the legend entries will grow up to two - // rows before adding a new column. - desiredMaxRows: 2, - // This defines the padding around each legend entry. - cellPadding: const EdgeInsets.only(right: 4.0, bottom: 4.0), - // Render the legend entry text with custom styles. - entryTextStyle: charts.TextStyleSpec( - color: charts.MaterialPalette.purple.shadeDefault, - fontFamily: 'Georgia', - fontSize: 11), - ) - ], - ); - } - - /// Create series list with one series - static List> _createSampleData() { - final data = [ - LinearSales(0, 100), - LinearSales(1, 75), - LinearSales(2, 25), - LinearSales(3, 5), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/legends/datum_legend_with_measures.dart b/web/charts/lib/legends/datum_legend_with_measures.dart deleted file mode 100644 index c36716291..000000000 --- a/web/charts/lib/legends/datum_legend_with_measures.dart +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart with example of a legend with customized position, justification, -/// desired max rows, and padding. These options are shown as an example of how -/// to use the customizations, they do not necessary have to be used together in -/// this way. Choosing [end] as the position does not require the justification -/// to also be [endDrawArea]. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example that shows how to build a datum legend that shows measure values. -/// -/// Also shows the option to provide a custom measure formatter. -class DatumLegendWithMeasures extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const DatumLegendWithMeasures(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory DatumLegendWithMeasures.withSampleData() { - return DatumLegendWithMeasures( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory DatumLegendWithMeasures.withRandomData() { - return DatumLegendWithMeasures(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(2014, random.nextInt(100)), - LinearSales(2015, random.nextInt(100)), - LinearSales(2016, random.nextInt(100)), - LinearSales(2017, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.PieChart( - seriesList, - animate: animate, - // Add the legend behavior to the chart to turn on legends. - // This example shows how to optionally show measure and provide a custom - // formatter. - behaviors: [ - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // This is added in order to generate the image for the gallery to show - // an initial selection so that measure values are shown in the gallery. - charts.InitialSelection( - selectedDataConfig: [ - charts.SeriesDatumConfig('Sales', 0), - ], - ), - // EXCLUDE_FROM_GALLERY_DOCS_END - charts.DatumLegend( - // Positions for "start" and "end" will be left and right respectively - // for widgets with a build context that has directionality ltr. - // For rtl, "start" and "end" will be right and left respectively. - // Since this example has directionality of ltr, the legend is - // positioned on the right side of the chart. - position: charts.BehaviorPosition.end, - // By default, if the position of the chart is on the left or right of - // the chart, [horizontalFirst] is set to false. This means that the - // legend entries will grow as new rows first instead of a new column. - horizontalFirst: false, - // This defines the padding around each legend entry. - cellPadding: const EdgeInsets.only(right: 4.0, bottom: 4.0), - // Set [showMeasures] to true to display measures in series legend. - showMeasures: true, - // Configure the measure value to be shown by default in the legend. - legendDefaultMeasure: charts.LegendDefaultMeasure.firstValue, - // Optionally provide a measure formatter to format the measure value. - // If none is specified the value is formatted as a decimal. - measureFormatter: (num? value) { - return value == null ? '-' : '${value}k'; - }, - ), - ], - ); - } - - /// Create series list with one series - static List> _createSampleData() { - final data = [ - LinearSales(2014, 100), - LinearSales(2015, 75), - LinearSales(2016, 25), - LinearSales(2017, 5), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/legends/default_hidden_series_legend.dart b/web/charts/lib/legends/default_hidden_series_legend.dart deleted file mode 100644 index 8ddb3991c..000000000 --- a/web/charts/lib/legends/default_hidden_series_legend.dart +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart with default hidden series legend example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class DefaultHiddenSeriesLegend extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const DefaultHiddenSeriesLegend(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory DefaultHiddenSeriesLegend.withSampleData() { - return DefaultHiddenSeriesLegend( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory DefaultHiddenSeriesLegend.withRandomData() { - return DefaultHiddenSeriesLegend(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final otherSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - // Add the series legend behavior to the chart to turn on series legends. - // By default the legend will display above the chart. - behaviors: [ - charts.SeriesLegend( - // Configures the "Other" series to be hidden on first chart draw. - defaultHiddenSeries: const ['Other'], - ) - ], - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final otherSalesData = [ - OrdinalSales('2014', 20), - OrdinalSales('2015', 35), - OrdinalSales('2016', 15), - OrdinalSales('2017', 10), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/legends/legend_custom_symbol.dart b/web/charts/lib/legends/legend_custom_symbol.dart deleted file mode 100644 index 67a52cf50..000000000 --- a/web/charts/lib/legends/legend_custom_symbol.dart +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart with custom symbol in legend example. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example custom renderer that renders [IconData]. -/// -/// This is used to show that legend symbols can be assigned a custom symbol. -class IconRenderer extends charts.CustomSymbolRenderer { - final IconData iconData; - - IconRenderer(this.iconData); - - @override - Widget build(BuildContext context, - {Size? size, Color? color, bool enabled = true}) { - // Lighten the color if the symbol is not enabled - // Example: If user has tapped on a Series deselecting it. - if (!enabled) { - color = color!.withOpacity(0.26); - } - - return SizedBox.fromSize( - size: size, child: Icon(iconData, color: color, size: 12.0)); - } -} - -class LegendWithCustomSymbol extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const LegendWithCustomSymbol(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory LegendWithCustomSymbol.withSampleData() { - return LegendWithCustomSymbol( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory LegendWithCustomSymbol.withRandomData() { - return LegendWithCustomSymbol(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final otherSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - // Add the legend behavior to the chart to turn on legends. - // By default the legend will display above the chart. - // - // To change the symbol used in the legend, set the renderer attribute of - // symbolRendererKey to a SymbolRenderer. - behaviors: [charts.SeriesLegend()], - defaultRenderer: - charts.BarRendererConfig(symbolRenderer: IconRenderer(Icons.cloud)), - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final otherSalesData = [ - OrdinalSales('2014', 20), - OrdinalSales('2015', 35), - OrdinalSales('2016', 15), - OrdinalSales('2017', 10), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ) - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/legends/legends_gallery.dart b/web/charts/lib/legends/legends_gallery.dart deleted file mode 100644 index 7b87716eb..000000000 --- a/web/charts/lib/legends/legends_gallery.dart +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'datum_legend_options.dart'; -import 'datum_legend_with_measures.dart'; -import 'default_hidden_series_legend.dart'; -import 'legend_custom_symbol.dart'; -import 'series_legend_options.dart'; -import 'series_legend_with_measures.dart'; -import 'simple_datum_legend.dart'; -import 'simple_series_legend.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Series Legend', - subtitle: 'A series legend for a bar chart with default settings', - childBuilder: () => SimpleSeriesLegend.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Series Legend Options', - subtitle: - 'A series legend with custom positioning and spacing for a bar chart', - childBuilder: () => LegendOptions.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Series Legend Custom Symbol', - subtitle: 'A series legend using a custom symbol renderer', - childBuilder: () => LegendWithCustomSymbol.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Default Hidden Series Legend', - subtitle: 'A series legend showing a series hidden by default', - childBuilder: () => DefaultHiddenSeriesLegend.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.insert_chart), - title: 'Series legend with measures', - subtitle: 'Series legend with measures and measure formatting', - childBuilder: () => LegendWithMeasures.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.pie_chart), - title: 'Datum Legend', - subtitle: 'A datum legend for a pie chart with default settings', - childBuilder: () => SimpleDatumLegend.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.pie_chart), - title: 'Datum Legend Options', - subtitle: - 'A datum legend with custom positioning and spacing for a pie chart', - childBuilder: () => DatumLegendOptions.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.pie_chart), - title: 'Datum legend with measures', - subtitle: 'Datum legend with measures and measure formatting', - childBuilder: () => DatumLegendWithMeasures.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/legends/series_legend_options.dart b/web/charts/lib/legends/series_legend_options.dart deleted file mode 100644 index b44fcf80d..000000000 --- a/web/charts/lib/legends/series_legend_options.dart +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart with example of a legend with customized position, justification, -/// desired max rows, padding, and entry text styles. These options are shown as -/// an example of how to use the customizations, they do not necessary have to -/// be used together in this way. Choosing [end] as the position does not -/// require the justification to also be [endDrawArea]. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class LegendOptions extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const LegendOptions(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory LegendOptions.withSampleData() { - return LegendOptions( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory LegendOptions.withRandomData() { - return LegendOptions(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final otherSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - // Add the legend behavior to the chart to turn on legends. - // This example shows how to change the position and justification of - // the legend, in addition to altering the max rows and padding. - behaviors: [ - charts.SeriesLegend( - // Positions for "start" and "end" will be left and right respectively - // for widgets with a build context that has directionality ltr. - // For rtl, "start" and "end" will be right and left respectively. - // Since this example has directionality of ltr, the legend is - // positioned on the right side of the chart. - position: charts.BehaviorPosition.end, - // For a legend that is positioned on the left or right of the chart, - // setting the justification for [endDrawArea] is aligned to the - // bottom of the chart draw area. - outsideJustification: charts.OutsideJustification.endDrawArea, - // By default, if the position of the chart is on the left or right of - // the chart, [horizontalFirst] is set to false. This means that the - // legend entries will grow as new rows first instead of a new column. - horizontalFirst: false, - // By setting this value to 2, the legend entries will grow up to two - // rows before adding a new column. - desiredMaxRows: 2, - // This defines the padding around each legend entry. - cellPadding: const EdgeInsets.only(right: 4.0, bottom: 4.0), - // Render the legend entry text with custom styles. - entryTextStyle: charts.TextStyleSpec( - color: charts.MaterialPalette.purple.shadeDefault, - fontFamily: 'Georgia', - fontSize: 11), - ) - ], - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final otherSalesData = [ - OrdinalSales('2014', 20), - OrdinalSales('2015', 35), - OrdinalSales('2016', 15), - OrdinalSales('2017', 10), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/legends/series_legend_with_measures.dart b/web/charts/lib/legends/series_legend_with_measures.dart deleted file mode 100644 index c132bdac6..000000000 --- a/web/charts/lib/legends/series_legend_with_measures.dart +++ /dev/null @@ -1,229 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart with example of a legend with customized position, justification, -/// desired max rows, and padding. These options are shown as an example of how -/// to use the customizations, they do not necessary have to be used together in -/// this way. Choosing [end] as the position does not require the justification -/// to also be [endDrawArea]. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -/// Example that shows how to build a series legend that shows measure values -/// when a datum is selected. -/// -/// Also shows the option to provide a custom measure formatter. -class LegendWithMeasures extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const LegendWithMeasures(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory LegendWithMeasures.withSampleData() { - return LegendWithMeasures( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory LegendWithMeasures.withRandomData() { - return LegendWithMeasures(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final otherSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - // Add the legend behavior to the chart to turn on legends. - // This example shows how to optionally show measure and provide a custom - // formatter. - behaviors: [ - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // This is added in order to generate the image for the gallery to show - // an initial selection so that measure values are shown in the gallery. - charts.InitialSelection( - selectedDataConfig: [ - charts.SeriesDatumConfig('Desktop', '2016'), - charts.SeriesDatumConfig('Tablet', '2016'), - charts.SeriesDatumConfig('Mobile', '2016'), - charts.SeriesDatumConfig('Other', '2016'), - ], - ), - // EXCLUDE_FROM_GALLERY_DOCS_END - charts.SeriesLegend( - // Positions for "start" and "end" will be left and right respectively - // for widgets with a build context that has directionality ltr. - // For rtl, "start" and "end" will be right and left respectively. - // Since this example has directionality of ltr, the legend is - // positioned on the right side of the chart. - position: charts.BehaviorPosition.end, - // By default, if the position of the chart is on the left or right of - // the chart, [horizontalFirst] is set to false. This means that the - // legend entries will grow as new rows first instead of a new column. - horizontalFirst: false, - // This defines the padding around each legend entry. - cellPadding: const EdgeInsets.only(right: 4.0, bottom: 4.0), - // Set show measures to true to display measures in series legend, - // when the datum is selected. - showMeasures: true, - // Optionally provide a measure formatter to format the measure value. - // If none is specified the value is formatted as a decimal. - measureFormatter: (num? value) { - return value == null ? '-' : '${value}k'; - }, - ), - ], - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - // Purposely have a missing datum for 2016 to show the null measure format - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final otherSalesData = [ - OrdinalSales('2014', 20), - OrdinalSales('2015', 35), - OrdinalSales('2016', 15), - OrdinalSales('2017', 10), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/legends/simple_datum_legend.dart b/web/charts/lib/legends/simple_datum_legend.dart deleted file mode 100644 index c5b2edec2..000000000 --- a/web/charts/lib/legends/simple_datum_legend.dart +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart with series legend example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class SimpleDatumLegend extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SimpleDatumLegend(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory SimpleDatumLegend.withSampleData() { - return SimpleDatumLegend( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SimpleDatumLegend.withRandomData() { - return SimpleDatumLegend(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.PieChart( - seriesList, - animate: animate, - // Add the series legend behavior to the chart to turn on series legends. - // By default the legend will display above the chart. - behaviors: [charts.DatumLegend()], - ); - } - - /// Create series list with one series - static List> _createSampleData() { - final data = [ - LinearSales(0, 100), - LinearSales(1, 75), - LinearSales(2, 25), - LinearSales(3, 5), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/legends/simple_series_legend.dart b/web/charts/lib/legends/simple_series_legend.dart deleted file mode 100644 index 41f8c3936..000000000 --- a/web/charts/lib/legends/simple_series_legend.dart +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Bar chart with series legend example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:flutter/material.dart'; -import 'package:charts_flutter/flutter.dart' as charts; - -class SimpleSeriesLegend extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SimpleSeriesLegend(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - factory SimpleSeriesLegend.withSampleData() { - return SimpleSeriesLegend( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SimpleSeriesLegend.withRandomData() { - return SimpleSeriesLegend(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final desktopSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - final otherSalesData = [ - OrdinalSales('2014', random.nextInt(100)), - OrdinalSales('2015', random.nextInt(100)), - OrdinalSales('2016', random.nextInt(100)), - OrdinalSales('2017', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.BarChart( - seriesList, - animate: animate, - barGroupingType: charts.BarGroupingType.grouped, - // Add the series legend behavior to the chart to turn on series legends. - // By default the legend will display above the chart. - behaviors: [charts.SeriesLegend()], - ); - } - - /// Create series list with multiple series - static List> _createSampleData() { - final desktopSalesData = [ - OrdinalSales('2014', 5), - OrdinalSales('2015', 25), - OrdinalSales('2016', 100), - OrdinalSales('2017', 75), - ]; - - final tabletSalesData = [ - OrdinalSales('2014', 25), - OrdinalSales('2015', 50), - OrdinalSales('2016', 10), - OrdinalSales('2017', 20), - ]; - - final mobileSalesData = [ - OrdinalSales('2014', 10), - OrdinalSales('2015', 15), - OrdinalSales('2016', 50), - OrdinalSales('2017', 45), - ]; - - final otherSalesData = [ - OrdinalSales('2014', 20), - OrdinalSales('2015', 35), - OrdinalSales('2016', 15), - OrdinalSales('2017', 10), - ]; - - return [ - charts.Series( - id: 'Desktop', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: desktopSalesData, - ), - charts.Series( - id: 'Tablet', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: tabletSalesData, - ), - charts.Series( - id: 'Mobile', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: mobileSalesData, - ), - charts.Series( - id: 'Other', - domainFn: (OrdinalSales sales, _) => sales.year, - measureFn: (OrdinalSales sales, _) => sales.sales, - data: otherSalesData, - ), - ]; - } -} - -/// Sample ordinal data type. -class OrdinalSales { - final String year; - final int sales; - - OrdinalSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/animation_zoom.dart b/web/charts/lib/line_chart/animation_zoom.dart deleted file mode 100644 index c58189d2a..000000000 --- a/web/charts/lib/line_chart/animation_zoom.dart +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a line chart with pan and zoom enabled via -/// [Charts.PanAndZoomBehavior]. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class LineAnimationZoomChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const LineAnimationZoomChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory LineAnimationZoomChart.withSampleData() { - return LineAnimationZoomChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory LineAnimationZoomChart.withRandomData() { - return LineAnimationZoomChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = []; - - for (var i = 0; i < 100; i++) { - data.add(LinearSales(i, random.nextInt(100))); - } - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, animate: animate, behaviors: [ - charts.PanAndZoomBehavior(), - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/area_and_line.dart b/web/charts/lib/line_chart/area_and_line.dart deleted file mode 100644 index cf4d0d210..000000000 --- a/web/charts/lib/line_chart/area_and_line.dart +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Line chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class AreaAndLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const AreaAndLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory AreaAndLineChart.withSampleData() { - return AreaAndLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory AreaAndLineChart.withRandomData() { - return AreaAndLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final myFakeDesktopData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - var myFakeTabletData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customArea'), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, - animate: animate, - customSeriesRenderers: [ - charts.LineRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customArea', - includeArea: true, - stacked: true), - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final myFakeDesktopData = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - var myFakeTabletData = [ - LinearSales(0, 10), - LinearSales(1, 50), - LinearSales(2, 200), - LinearSales(3, 150), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ) - // Configure our custom bar target renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customArea'), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/dash_pattern.dart b/web/charts/lib/line_chart/dash_pattern.dart deleted file mode 100644 index cc9e86b7d..000000000 --- a/web/charts/lib/line_chart/dash_pattern.dart +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Dash pattern line chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -/// Example of a line chart rendered with dash patterns. -class DashPatternLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const DashPatternLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory DashPatternLineChart.withSampleData() { - return DashPatternLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory DashPatternLineChart.withRandomData() { - return DashPatternLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final myFakeDesktopData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - var myFakeTabletData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - var myFakeMobileData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - dashPatternFn: (_, __) => [2, 2], - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - dashPatternFn: (_, __) => [8, 3, 2, 3], - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, animate: animate); - } - - /// Create three series with sample hard coded data. - static List> _createSampleData() { - final myFakeDesktopData = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - var myFakeTabletData = [ - LinearSales(0, 10), - LinearSales(1, 50), - LinearSales(2, 200), - LinearSales(3, 150), - ]; - - var myFakeMobileData = [ - LinearSales(0, 15), - LinearSales(1, 75), - LinearSales(2, 300), - LinearSales(3, 225), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - dashPatternFn: (_, __) => [2, 2], - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - dashPatternFn: (_, __) => [8, 3, 2, 3], - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/line_annotation.dart b/web/charts/lib/line_chart/line_annotation.dart deleted file mode 100644 index 107537d5f..000000000 --- a/web/charts/lib/line_chart/line_annotation.dart +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Line chart with line annotations example. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class LineLineAnnotationChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const LineLineAnnotationChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and line annotations. - /// - /// The second annotation extends beyond the range of the series data, - /// demonstrating the effect of the [Charts.RangeAnnotation.extendAxis] flag. - /// This can be set to false to disable range extension. - factory LineLineAnnotationChart.withSampleData() { - return LineLineAnnotationChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory LineLineAnnotationChart.withRandomData() { - return LineLineAnnotationChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - // Fix one of the points to 100 so that the annotations are consistently - // placed. - LinearSales(3, 100), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, animate: animate, behaviors: [ - charts.RangeAnnotation([ - charts.LineAnnotationSegment(1.0, charts.RangeAnnotationAxisType.domain, - startLabel: 'Domain 1'), - charts.LineAnnotationSegment(4, charts.RangeAnnotationAxisType.domain, - endLabel: 'Domain 2', color: charts.MaterialPalette.gray.shade200), - charts.LineAnnotationSegment(20, charts.RangeAnnotationAxisType.measure, - startLabel: 'Measure 1 Start', - endLabel: 'Measure 1 End', - color: charts.MaterialPalette.gray.shade300), - charts.LineAnnotationSegment(65, charts.RangeAnnotationAxisType.measure, - startLabel: 'Measure 2 Start', - endLabel: 'Measure 2 End', - color: charts.MaterialPalette.gray.shade400), - ]), - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/line_gallery.dart b/web/charts/lib/line_chart/line_gallery.dart deleted file mode 100644 index bcd9c9771..000000000 --- a/web/charts/lib/line_chart/line_gallery.dart +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'animation_zoom.dart'; -import 'area_and_line.dart'; -import 'dash_pattern.dart'; -import 'line_annotation.dart'; -import 'points.dart'; -import 'range_annotation.dart'; -import 'range_annotation_margin.dart'; -import 'segments.dart'; -import 'simple.dart'; -import 'simple_nulls.dart'; -import 'stacked_area.dart'; -import 'stacked_area_custom_color.dart'; -import 'stacked_area_nulls.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Simple Line Chart', - subtitle: 'With a single series and default line point highlighter', - childBuilder: () => SimpleLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Stacked Area Chart', - subtitle: 'Stacked area chart with three series', - childBuilder: () => StackedAreaLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Stacked Area Custom Color Chart', - subtitle: 'Stacked area chart with custom area skirt color', - childBuilder: () => StackedAreaCustomColorLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Area and Line Combo Chart', - subtitle: 'Combo chart with one line series and one area series', - childBuilder: () => AreaAndLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Points Line Chart', - subtitle: 'Line chart with points on a single series', - childBuilder: () => PointsLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Null Data Line Chart', - subtitle: 'With a single series and null measure values', - childBuilder: () => SimpleNullsLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Stacked Area with Nulls Chart', - subtitle: 'Stacked area chart with three series and null measure values', - childBuilder: () => StackedAreaNullsLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Dash Pattern Line Chart', - subtitle: 'Line chart with dash patterns', - childBuilder: () => DashPatternLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Segments Line Chart', - subtitle: 'Line chart with changes of style for each line', - childBuilder: () => SegmentsLineChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Line Annotation Line Chart', - subtitle: 'Line chart with line annotations', - childBuilder: () => LineLineAnnotationChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Range Annotation Line Chart', - subtitle: 'Line chart with range annotations', - childBuilder: () => LineRangeAnnotationChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Range Annotation Margin Labels Line Chart', - subtitle: 'Line chart with range annotations with labels in margins', - childBuilder: () => LineRangeAnnotationMarginChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Pan and Zoom Line Chart', - subtitle: 'Simple line chart pan and zoom behaviors enabled', - childBuilder: () => LineAnimationZoomChart.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/line_chart/points.dart b/web/charts/lib/line_chart/points.dart deleted file mode 100644 index d701569b2..000000000 --- a/web/charts/lib/line_chart/points.dart +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Line chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class PointsLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const PointsLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory PointsLineChart.withSampleData() { - return PointsLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory PointsLineChart.withRandomData() { - return PointsLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, - animate: animate, - defaultRenderer: charts.LineRendererConfig(includePoints: true)); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/range_annotation.dart b/web/charts/lib/line_chart/range_annotation.dart deleted file mode 100644 index 840234463..000000000 --- a/web/charts/lib/line_chart/range_annotation.dart +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Line chart with range annotations example. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class LineRangeAnnotationChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const LineRangeAnnotationChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and range annotations. - /// - /// The second annotation extends beyond the range of the series data, - /// demonstrating the effect of the [Charts.RangeAnnotation.extendAxis] flag. - /// This can be set to false to disable range extension. - factory LineRangeAnnotationChart.withSampleData() { - return LineRangeAnnotationChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory LineRangeAnnotationChart.withRandomData() { - return LineRangeAnnotationChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - // Fix one of the points to 100 so that the annotations are consistently - // placed. - LinearSales(3, 100), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, animate: animate, behaviors: [ - charts.RangeAnnotation([ - charts.RangeAnnotationSegment( - 0.5, 1.0, charts.RangeAnnotationAxisType.domain, - startLabel: 'Domain 1'), - charts.RangeAnnotationSegment( - 2, 4, charts.RangeAnnotationAxisType.domain, - endLabel: 'Domain 2', color: charts.MaterialPalette.gray.shade200), - charts.RangeAnnotationSegment( - 15, 20, charts.RangeAnnotationAxisType.measure, - startLabel: 'Measure 1 Start', - endLabel: 'Measure 1 End', - color: charts.MaterialPalette.gray.shade300), - charts.RangeAnnotationSegment( - 35, 65, charts.RangeAnnotationAxisType.measure, - startLabel: 'Measure 2 Start', - endLabel: 'Measure 2 End', - color: charts.MaterialPalette.gray.shade400), - ]), - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/range_annotation_margin.dart b/web/charts/lib/line_chart/range_annotation_margin.dart deleted file mode 100644 index 14f521b69..000000000 --- a/web/charts/lib/line_chart/range_annotation_margin.dart +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a line chart with range annotations configured to render labels -/// in the chart margin area. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class LineRangeAnnotationMarginChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const LineRangeAnnotationMarginChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and range annotations. - /// - /// The second annotation extends beyond the range of the series data, - /// demonstrating the effect of the [Charts.RangeAnnotation.extendAxis] flag. - /// This can be set to false to disable range extension. - factory LineRangeAnnotationMarginChart.withSampleData() { - return LineRangeAnnotationMarginChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory LineRangeAnnotationMarginChart.withRandomData() { - return LineRangeAnnotationMarginChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - // Fix one of the points to 100 so that the annotations are consistently - // placed. - LinearSales(3, 100), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, - animate: animate, - - // Allow enough space in the left and right chart margins for the - // annotations. - layoutConfig: charts.LayoutConfig( - leftMarginSpec: charts.MarginSpec.fixedPixel(60), - topMarginSpec: charts.MarginSpec.fixedPixel(20), - rightMarginSpec: charts.MarginSpec.fixedPixel(60), - bottomMarginSpec: charts.MarginSpec.fixedPixel(20)), - behaviors: [ - // Define one domain and two measure annotations configured to render - // labels in the chart margins. - charts.RangeAnnotation([ - charts.RangeAnnotationSegment( - 0.5, 1.0, charts.RangeAnnotationAxisType.domain, - startLabel: 'D1 Start', - endLabel: 'D1 End', - labelAnchor: charts.AnnotationLabelAnchor.end, - color: charts.MaterialPalette.gray.shade200, - // Override the default vertical direction for domain labels. - labelDirection: charts.AnnotationLabelDirection.horizontal), - charts.RangeAnnotationSegment( - 15, 20, charts.RangeAnnotationAxisType.measure, - startLabel: 'M1 Start', - endLabel: 'M1 End', - labelAnchor: charts.AnnotationLabelAnchor.end, - color: charts.MaterialPalette.gray.shade300), - charts.RangeAnnotationSegment( - 35, 65, charts.RangeAnnotationAxisType.measure, - startLabel: 'M2 Start', - endLabel: 'M2 End', - labelAnchor: charts.AnnotationLabelAnchor.start, - color: charts.MaterialPalette.gray.shade400), - ], defaultLabelPosition: charts.AnnotationLabelPosition.margin), - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/segments.dart b/web/charts/lib/line_chart/segments.dart deleted file mode 100644 index 1f0c81b08..000000000 --- a/web/charts/lib/line_chart/segments.dart +++ /dev/null @@ -1,234 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a stacked area chart with changing styles within each line. -/// -/// Each series of data in this example contains different values for color, -/// dashPattern, or strokeWidthPx between each datum. The line and area skirt -/// will be rendered in segments, with the styling of the series changing when -/// these data attributes change. -/// -/// Note that if a dashPattern or strokeWidth value is not found for a -/// particular datum, then the chart will fall back to use the value defined in -/// the [charts.LineRendererConfig]. This could be used, for example, to define -/// a default dash pattern for the series, with only a specific datum called out -/// with a different pattern. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SegmentsLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SegmentsLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory SegmentsLineChart.withSampleData() { - return SegmentsLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SegmentsLineChart.withRandomData() { - return SegmentsLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - // Series of data with static dash pattern and stroke width. The colorFn - // accessor will colorize each datum (for all three series). - final colorChangeData = [ - LinearSales(0, random.nextInt(100), null, 2.0), - LinearSales(1, random.nextInt(100), null, 2.0), - LinearSales(2, random.nextInt(100), null, 2.0), - LinearSales(3, random.nextInt(100), null, 2.0), - LinearSales(4, random.nextInt(100), null, 2.0), - LinearSales(5, random.nextInt(100), null, 2.0), - LinearSales(6, random.nextInt(100), null, 2.0), - ]; - - // Series of data with changing color and dash pattern. - final dashPatternChangeData = [ - LinearSales(0, random.nextInt(100), [2, 2], 2.0), - LinearSales(1, random.nextInt(100), [2, 2], 2.0), - LinearSales(2, random.nextInt(100), [4, 4], 2.0), - LinearSales(3, random.nextInt(100), [4, 4], 2.0), - LinearSales(4, random.nextInt(100), [4, 4], 2.0), - LinearSales(5, random.nextInt(100), [8, 3, 2, 3], 2.0), - LinearSales(6, random.nextInt(100), [8, 3, 2, 3], 2.0), - ]; - - // Series of data with changing color and stroke width. - final strokeWidthChangeData = [ - LinearSales(0, random.nextInt(100), null, 2.0), - LinearSales(1, random.nextInt(100), null, 2.0), - LinearSales(2, random.nextInt(100), null, 4.0), - LinearSales(3, random.nextInt(100), null, 4.0), - LinearSales(4, random.nextInt(100), null, 4.0), - LinearSales(5, random.nextInt(100), null, 6.0), - LinearSales(6, random.nextInt(100), null, 6.0), - ]; - - // Generate 2 shades of each color so that we can style the line segments. - final blue = charts.MaterialPalette.blue.makeShades(2); - final red = charts.MaterialPalette.red.makeShades(2); - final green = charts.MaterialPalette.green.makeShades(2); - - return [ - charts.Series( - id: 'Color Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? blue[1] : blue[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: colorChangeData, - ), - charts.Series( - id: 'Dash Pattern Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? red[1] : red[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: dashPatternChangeData, - ), - charts.Series( - id: 'Stroke Width Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? green[1] : green[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: strokeWidthChangeData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, - defaultRenderer: - charts.LineRendererConfig(includeArea: true, stacked: true), - animate: animate); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - // Series of data with static dash pattern and stroke width. The colorFn - // accessor will colorize each datum (for all three series). - final colorChangeData = [ - LinearSales(0, 5, null, 2.0), - LinearSales(1, 15, null, 2.0), - LinearSales(2, 25, null, 2.0), - LinearSales(3, 75, null, 2.0), - LinearSales(4, 100, null, 2.0), - LinearSales(5, 90, null, 2.0), - LinearSales(6, 75, null, 2.0), - ]; - - // Series of data with changing color and dash pattern. - final dashPatternChangeData = [ - LinearSales(0, 5, [2, 2], 2.0), - LinearSales(1, 15, [2, 2], 2.0), - LinearSales(2, 25, [4, 4], 2.0), - LinearSales(3, 75, [4, 4], 2.0), - LinearSales(4, 100, [4, 4], 2.0), - LinearSales(5, 90, [8, 3, 2, 3], 2.0), - LinearSales(6, 75, [8, 3, 2, 3], 2.0), - ]; - - // Series of data with changing color and stroke width. - final strokeWidthChangeData = [ - LinearSales(0, 5, null, 2.0), - LinearSales(1, 15, null, 2.0), - LinearSales(2, 25, null, 4.0), - LinearSales(3, 75, null, 4.0), - LinearSales(4, 100, null, 4.0), - LinearSales(5, 90, null, 6.0), - LinearSales(6, 75, null, 6.0), - ]; - - // Generate 2 shades of each color so that we can style the line segments. - final blue = charts.MaterialPalette.blue.makeShades(2); - final red = charts.MaterialPalette.red.makeShades(2); - final green = charts.MaterialPalette.green.makeShades(2); - - return [ - charts.Series( - id: 'Color Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? blue[1] : blue[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: colorChangeData, - ), - charts.Series( - id: 'Dash Pattern Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? red[1] : red[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: dashPatternChangeData, - ), - charts.Series( - id: 'Stroke Width Change', - // Light shade for even years, dark shade for odd. - colorFn: (LinearSales sales, _) => - sales.year % 2 == 0 ? green[1] : green[0], - dashPatternFn: (LinearSales sales, _) => sales.dashPattern, - strokeWidthPxFn: (LinearSales sales, _) => sales.strokeWidthPx, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: strokeWidthChangeData, - ), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - final List? dashPattern; - final double strokeWidthPx; - - LinearSales(this.year, this.sales, this.dashPattern, this.strokeWidthPx); -} diff --git a/web/charts/lib/line_chart/simple.dart b/web/charts/lib/line_chart/simple.dart deleted file mode 100644 index b8abd849d..000000000 --- a/web/charts/lib/line_chart/simple.dart +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a simple line chart. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SimpleLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SimpleLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory SimpleLineChart.withSampleData() { - return SimpleLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SimpleLineChart.withRandomData() { - return SimpleLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, animate: animate); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/simple_nulls.dart b/web/charts/lib/line_chart/simple_nulls.dart deleted file mode 100644 index 1a7046c6b..000000000 --- a/web/charts/lib/line_chart/simple_nulls.dart +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a line chart with null measure values. -/// -/// Null values will be visible as gaps in lines and area skirts. Any data -/// points that exist between two nulls in a line will be rendered as an -/// isolated point, as seen in the green series. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SimpleNullsLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SimpleNullsLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory SimpleNullsLineChart.withSampleData() { - return SimpleNullsLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SimpleNullsLineChart.withRandomData() { - return SimpleNullsLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final myFakeDesktopData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, null), - LinearSales(3, random.nextInt(100)), - LinearSales(4, random.nextInt(100)), - LinearSales(5, random.nextInt(100)), - LinearSales(6, random.nextInt(100)), - ]; - - var myFakeTabletData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - LinearSales(4, random.nextInt(100)), - LinearSales(5, random.nextInt(100)), - LinearSales(6, random.nextInt(100)), - ]; - - var myFakeMobileData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, null), - LinearSales(3, random.nextInt(100)), - LinearSales(4, null), - LinearSales(5, random.nextInt(100)), - LinearSales(6, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, animate: animate); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final myFakeDesktopData = [ - LinearSales(0, 5), - LinearSales(1, 15), - LinearSales(2, null), - LinearSales(3, 75), - LinearSales(4, 100), - LinearSales(5, 90), - LinearSales(6, 75), - ]; - - final myFakeTabletData = [ - LinearSales(0, 10), - LinearSales(1, 30), - LinearSales(2, 50), - LinearSales(3, 150), - LinearSales(4, 200), - LinearSales(5, 180), - LinearSales(6, 150), - ]; - - final myFakeMobileData = [ - LinearSales(0, 15), - LinearSales(1, 45), - LinearSales(2, null), - LinearSales(3, 225), - LinearSales(4, null), - LinearSales(5, 270), - LinearSales(6, 225), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int? sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/stacked_area.dart b/web/charts/lib/line_chart/stacked_area.dart deleted file mode 100644 index 6c6d06ac4..000000000 --- a/web/charts/lib/line_chart/stacked_area.dart +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a stacked area chart. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class StackedAreaLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const StackedAreaLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory StackedAreaLineChart.withSampleData() { - return StackedAreaLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory StackedAreaLineChart.withRandomData() { - return StackedAreaLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final myFakeDesktopData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - var myFakeTabletData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - var myFakeMobileData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, - defaultRenderer: - charts.LineRendererConfig(includeArea: true, stacked: true), - animate: animate); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final myFakeDesktopData = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - var myFakeTabletData = [ - LinearSales(0, 10), - LinearSales(1, 50), - LinearSales(2, 200), - LinearSales(3, 150), - ]; - - var myFakeMobileData = [ - LinearSales(0, 15), - LinearSales(1, 75), - LinearSales(2, 300), - LinearSales(3, 225), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/stacked_area_custom_color.dart b/web/charts/lib/line_chart/stacked_area_custom_color.dart deleted file mode 100644 index 04b83f120..000000000 --- a/web/charts/lib/line_chart/stacked_area_custom_color.dart +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a stacked area chart with custom area colors. -/// -/// By default, the area skirt for a chart will be drawn with the same color as -/// the line, but with a 10% opacity assigned to it. An area color function can -/// be provided to override this with any custom color. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class StackedAreaCustomColorLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const StackedAreaCustomColorLineChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory StackedAreaCustomColorLineChart.withSampleData() { - return StackedAreaCustomColorLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory StackedAreaCustomColorLineChart.withRandomData() { - return StackedAreaCustomColorLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final myFakeDesktopData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - var myFakeTabletData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - var myFakeMobileData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, - defaultRenderer: - charts.LineRendererConfig(includeArea: true, stacked: true), - animate: animate); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final myFakeDesktopData = [ - LinearSales(0, 5), - LinearSales(1, 25), - LinearSales(2, 100), - LinearSales(3, 75), - ]; - - var myFakeTabletData = [ - LinearSales(0, 10), - LinearSales(1, 50), - LinearSales(2, 200), - LinearSales(3, 150), - ]; - - var myFakeMobileData = [ - LinearSales(0, 15), - LinearSales(1, 75), - LinearSales(2, 300), - LinearSales(3, 225), - ]; - - return [ - charts.Series( - id: 'Desktop', - // colorFn specifies that the line will be blue. - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - // areaColorFn specifies that the area skirt will be light blue. - areaColorFn: (_, __) => - charts.MaterialPalette.blue.shadeDefault.lighter, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - // colorFn specifies that the line will be red. - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - // areaColorFn specifies that the area skirt will be light red. - areaColorFn: (_, __) => charts.MaterialPalette.red.shadeDefault.lighter, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - // colorFn specifies that the line will be green. - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - // areaColorFn specifies that the area skirt will be light green. - areaColorFn: (_, __) => - charts.MaterialPalette.green.shadeDefault.lighter, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/line_chart/stacked_area_nulls.dart b/web/charts/lib/line_chart/stacked_area_nulls.dart deleted file mode 100644 index 3343c06e8..000000000 --- a/web/charts/lib/line_chart/stacked_area_nulls.dart +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a stacked area chart with null measure values. -/// -/// Null values will be visible as gaps in lines and area skirts. Any data -/// points that exist between two nulls in a line will be rendered as an -/// isolated point, as seen in the green series. -/// -/// In a stacked area chart, no data above a null value in the stack will be -/// rendered. In this example, the null measure value at domain 2 in the Desktop -/// series will prevent any data from being rendered at domain 2 for every -/// series because it is at the bottom of the stack. -/// -/// This will also result in an isolated point being rendered for the domain -/// value 3 in the Mobile series, because that series also contains a null at -/// domain 4. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class StackedAreaNullsLineChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const StackedAreaNullsLineChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [LineChart] with sample data and no transition. - factory StackedAreaNullsLineChart.withSampleData() { - return StackedAreaNullsLineChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory StackedAreaNullsLineChart.withRandomData() { - return StackedAreaNullsLineChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final myFakeDesktopData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, null), - LinearSales(3, random.nextInt(100)), - LinearSales(4, random.nextInt(100)), - LinearSales(5, random.nextInt(100)), - LinearSales(6, random.nextInt(100)), - ]; - - var myFakeTabletData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - LinearSales(4, random.nextInt(100)), - LinearSales(5, random.nextInt(100)), - LinearSales(6, random.nextInt(100)), - ]; - - var myFakeMobileData = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - LinearSales(4, null), - LinearSales(5, random.nextInt(100)), - LinearSales(6, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.LineChart(seriesList, - defaultRenderer: - charts.LineRendererConfig(includeArea: true, stacked: true), - animate: animate); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final myFakeDesktopData = [ - LinearSales(0, 5), - LinearSales(1, 15), - LinearSales(2, null), - LinearSales(3, 75), - LinearSales(4, 100), - LinearSales(5, 90), - LinearSales(6, 75), - ]; - - final myFakeTabletData = [ - LinearSales(0, 5), - LinearSales(1, 15), - LinearSales(2, 25), - LinearSales(3, 75), - LinearSales(4, 100), - LinearSales(5, 90), - LinearSales(6, 75), - ]; - - final myFakeMobileData = [ - LinearSales(0, 5), - LinearSales(1, 15), - LinearSales(2, 25), - LinearSales(3, 75), - LinearSales(4, null), - LinearSales(5, 90), - LinearSales(6, 75), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeTabletData, - ), - charts.Series( - id: 'Mobile', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: myFakeMobileData, - ), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int? sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/main.dart b/web/charts/lib/main.dart deleted file mode 100644 index 64aa979c3..000000000 --- a/web/charts/lib/main.dart +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import 'app_config.dart'; -import 'home.dart'; - -/// The main gallery app widget. -class GalleryApp extends StatefulWidget { - const GalleryApp({Key? key}) : super(key: key); - - @override - State createState() => _GalleryAppState(); -} - -/// The main gallery app state. -/// -/// Controls performance overlay, and instantiates a [Home] widget. -class _GalleryAppState extends State { - // Initialize app settings from the default configuration. - bool _showPerformanceOverlay = defaultConfig.showPerformanceOverlay; - - @override - Widget build(BuildContext context) { - return MaterialApp( - title: defaultConfig.appName, - theme: defaultConfig.theme, - showPerformanceOverlay: _showPerformanceOverlay, - home: Home( - showPerformanceOverlay: _showPerformanceOverlay, - onShowPerformanceOverlayChanged: (bool value) { - setState(() { - _showPerformanceOverlay = value; - }); - }, - )); - } -} - -void main() { - runApp(const GalleryApp()); -} diff --git a/web/charts/lib/pie_chart/auto_label.dart b/web/charts/lib/pie_chart/auto_label.dart deleted file mode 100644 index 93d03d1df..000000000 --- a/web/charts/lib/pie_chart/auto_label.dart +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Donut chart with labels example. This is a simple pie chart with a hole in -/// the middle. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class DonutAutoLabelChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const DonutAutoLabelChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [PieChart] with sample data and no transition. - factory DonutAutoLabelChart.withSampleData() { - return DonutAutoLabelChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory DonutAutoLabelChart.withRandomData() { - return DonutAutoLabelChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - // Set a label accessor to control the text of the arc label. - labelAccessorFn: (LinearSales row, _) => '${row.year}: ${row.sales}', - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.PieChart(seriesList, - animate: animate, - // Configure the width of the pie slices to 60px. The remaining space in - // the chart will be left as a hole in the center. - // - // [ArcLabelDecorator] will automatically position the label inside the - // arc if the label will fit. If the label will not fit, it will draw - // outside of the arc with a leader line. Labels can always display - // inside or outside using [LabelPosition]. - // - // Text style for inside / outside can be controlled independently by - // setting [insideLabelStyleSpec] and [outsideLabelStyleSpec]. - // - // Example configuring different styles for inside/outside: - // new charts.ArcLabelDecorator( - // insideLabelStyleSpec: new charts.TextStyleSpec(...), - // outsideLabelStyleSpec: new charts.TextStyleSpec(...)), - defaultRenderer: charts.ArcRendererConfig( - arcWidth: 60, arcRendererDecorators: [charts.ArcLabelDecorator()])); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 100), - LinearSales(1, 75), - LinearSales(2, 25), - LinearSales(3, 5), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - // Set a label accessor to control the text of the arc label. - labelAccessorFn: (LinearSales row, _) => '${row.year}: ${row.sales}', - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/pie_chart/donut.dart b/web/charts/lib/pie_chart/donut.dart deleted file mode 100644 index 325a9903a..000000000 --- a/web/charts/lib/pie_chart/donut.dart +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Donut chart example. This is a simple pie chart with a hole in the middle. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class DonutPieChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const DonutPieChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [PieChart] with sample data and no transition. - factory DonutPieChart.withSampleData() { - return DonutPieChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory DonutPieChart.withRandomData() { - return DonutPieChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.PieChart(seriesList, - animate: animate, - // Configure the width of the pie slices to 60px. The remaining space in - // the chart will be left as a hole in the center. - defaultRenderer: charts.ArcRendererConfig(arcWidth: 60)); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 100), - LinearSales(1, 75), - LinearSales(2, 25), - LinearSales(3, 5), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/pie_chart/gauge.dart b/web/charts/lib/pie_chart/gauge.dart deleted file mode 100644 index 10e0a21cd..000000000 --- a/web/charts/lib/pie_chart/gauge.dart +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Gauge chart example, where the data does not cover a full revolution in the -/// chart. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class GaugeChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const GaugeChart(this.seriesList, {this.animate, Key? key}) : super(key: key); - - /// Creates a [PieChart] with sample data and no transition. - factory GaugeChart.withSampleData() { - return GaugeChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory GaugeChart.withRandomData() { - return GaugeChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - GaugeSegment('Low', random.nextInt(100)), - GaugeSegment('Acceptable', random.nextInt(100)), - GaugeSegment('High', random.nextInt(100)), - GaugeSegment('Highly Unusual', random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Segments', - domainFn: (GaugeSegment segment, _) => segment.segment, - measureFn: (GaugeSegment segment, _) => segment.size, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.PieChart(seriesList, - animate: animate, - // Configure the width of the pie slices to 30px. The remaining space in - // the chart will be left as a hole in the center. Adjust the start - // angle and the arc length of the pie so it resembles a gauge. - defaultRenderer: charts.ArcRendererConfig( - arcWidth: 30, startAngle: 4 / 5 * pi, arcLength: 7 / 5 * pi)); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - GaugeSegment('Low', 75), - GaugeSegment('Acceptable', 100), - GaugeSegment('High', 50), - GaugeSegment('Highly Unusual', 5), - ]; - - return [ - charts.Series( - id: 'Segments', - domainFn: (GaugeSegment segment, _) => segment.segment, - measureFn: (GaugeSegment segment, _) => segment.size, - data: data, - ) - ]; - } -} - -/// Sample data type. -class GaugeSegment { - final String segment; - final int size; - - GaugeSegment(this.segment, this.size); -} diff --git a/web/charts/lib/pie_chart/outside_label.dart b/web/charts/lib/pie_chart/outside_label.dart deleted file mode 100644 index 0897149bb..000000000 --- a/web/charts/lib/pie_chart/outside_label.dart +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Simple pie chart with outside labels example. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class PieOutsideLabelChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const PieOutsideLabelChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [PieChart] with sample data and no transition. - factory PieOutsideLabelChart.withSampleData() { - return PieOutsideLabelChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory PieOutsideLabelChart.withRandomData() { - return PieOutsideLabelChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - // Set a label accessor to control the text of the arc label. - labelAccessorFn: (LinearSales row, _) => '${row.year}: ${row.sales}', - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.PieChart(seriesList, - animate: animate, - // Add an [ArcLabelDecorator] configured to render labels outside of the - // arc with a leader line. - // - // Text style for inside / outside can be controlled independently by - // setting [insideLabelStyleSpec] and [outsideLabelStyleSpec]. - // - // Example configuring different styles for inside/outside: - // new charts.ArcLabelDecorator( - // insideLabelStyleSpec: new charts.TextStyleSpec(...), - // outsideLabelStyleSpec: new charts.TextStyleSpec(...)), - defaultRenderer: charts.ArcRendererConfig(arcRendererDecorators: [ - charts.ArcLabelDecorator( - labelPosition: charts.ArcLabelPosition.outside) - ])); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 100), - LinearSales(1, 75), - LinearSales(2, 25), - LinearSales(3, 5), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - // Set a label accessor to control the text of the arc label. - labelAccessorFn: (LinearSales row, _) => '${row.year}: ${row.sales}', - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/pie_chart/partial_pie.dart b/web/charts/lib/pie_chart/partial_pie.dart deleted file mode 100644 index e7be30b65..000000000 --- a/web/charts/lib/pie_chart/partial_pie.dart +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Partial pie chart example, where the data does not cover a full revolution -/// in the chart. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class PartialPieChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const PartialPieChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [PieChart] with sample data and no transition. - factory PartialPieChart.withSampleData() { - return PartialPieChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory PartialPieChart.withRandomData() { - return PartialPieChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - // Configure the pie to display the data across only 3/4 instead of the full - // revolution. - return charts.PieChart(seriesList, - animate: animate, - defaultRenderer: charts.ArcRendererConfig(arcLength: 3 / 2 * pi)); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 100), - LinearSales(1, 75), - LinearSales(2, 25), - LinearSales(3, 5), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/pie_chart/pie_gallery.dart b/web/charts/lib/pie_chart/pie_gallery.dart deleted file mode 100644 index f43a9ee0e..000000000 --- a/web/charts/lib/pie_chart/pie_gallery.dart +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'auto_label.dart'; -import 'donut.dart'; -import 'gauge.dart'; -import 'simple.dart'; -import 'outside_label.dart'; -import 'partial_pie.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.pie_chart), - title: 'Simple Pie Chart', - subtitle: 'With a single series', - childBuilder: () => SimplePieChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.pie_chart), - title: 'Outside Label Pie Chart', - subtitle: 'With a single series and labels outside the arcs', - childBuilder: () => PieOutsideLabelChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.pie_chart), - title: 'Partial Pie Chart', - subtitle: 'That doesn\'t cover a full revolution', - childBuilder: () => PartialPieChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.pie_chart), - title: 'Simple Donut Chart', - subtitle: 'With a single series and a hole in the middle', - childBuilder: () => DonutPieChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.pie_chart), - title: 'Auto Label Donut Chart', - subtitle: - 'With a single series, a hole in the middle, and auto-positioned labels', - childBuilder: () => DonutAutoLabelChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.pie_chart), - title: 'Gauge Chart', - subtitle: 'That doesn\'t cover a full revolution', - childBuilder: () => GaugeChart.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/pie_chart/simple.dart b/web/charts/lib/pie_chart/simple.dart deleted file mode 100644 index fd95084c4..000000000 --- a/web/charts/lib/pie_chart/simple.dart +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Simple pie chart example. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SimplePieChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SimplePieChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [PieChart] with sample data and no transition. - factory SimplePieChart.withSampleData() { - return SimplePieChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SimplePieChart.withRandomData() { - return SimplePieChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - LinearSales(0, random.nextInt(100)), - LinearSales(1, random.nextInt(100)), - LinearSales(2, random.nextInt(100)), - LinearSales(3, random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.PieChart(seriesList, animate: animate); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 100), - LinearSales(1, 75), - LinearSales(2, 25), - LinearSales(3, 5), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} diff --git a/web/charts/lib/scatter_plot_chart/animation_zoom.dart b/web/charts/lib/scatter_plot_chart/animation_zoom.dart deleted file mode 100644 index 8a42573c9..000000000 --- a/web/charts/lib/scatter_plot_chart/animation_zoom.dart +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a line chart with pan and zoom enabled via -/// [Charts.PanAndZoomBehavior]. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class ScatterPlotAnimationZoomChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const ScatterPlotAnimationZoomChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [ScatterPlotChart] with sample data and no transition. - factory ScatterPlotAnimationZoomChart.withSampleData() { - return ScatterPlotAnimationZoomChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory ScatterPlotAnimationZoomChart.withRandomData() { - return ScatterPlotAnimationZoomChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = []; - - makeRadius(int value) => (random.nextInt(value) + 2).toDouble(); - - for (var i = 0; i < 100; i++) { - data.add(LinearSales(i, random.nextInt(100), makeRadius(4))); - } - - const maxMeasure = 100; - - return [ - charts.Series( - id: 'Sales', - colorFn: (LinearSales sales, _) { - // Color bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.ScatterPlotChart(seriesList, animate: animate, behaviors: [ - charts.PanAndZoomBehavior(), - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5, 3.0), - LinearSales(10, 25, 5.0), - LinearSales(12, 75, 4.0), - LinearSales(13, 225, 5.0), - LinearSales(16, 50, 4.0), - LinearSales(24, 75, 3.0), - LinearSales(25, 100, 3.0), - LinearSales(34, 150, 5.0), - LinearSales(37, 10, 4.5), - LinearSales(45, 300, 8.0), - LinearSales(52, 15, 4.0), - LinearSales(56, 200, 7.0), - ]; - - const maxMeasure = 300; - - return [ - charts.Series( - id: 'Sales', - colorFn: (LinearSales sales, _) { - // Color bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - final double radius; - - LinearSales(this.year, this.sales, this.radius); -} diff --git a/web/charts/lib/scatter_plot_chart/bucketing_axis.dart b/web/charts/lib/scatter_plot_chart/bucketing_axis.dart deleted file mode 100644 index d7a9fdd46..000000000 --- a/web/charts/lib/scatter_plot_chart/bucketing_axis.dart +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a scatter plot chart with a bucketing measure axis and a legend. -/// -/// A bucketing measure axis positions all values beneath a certain threshold -/// into a reserved space on the axis range. The label for the bucket line will -/// be drawn in the middle of the bucket range, rather than aligned with the -/// gridline for that value's position on the scale. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class BucketingAxisScatterPlotChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const BucketingAxisScatterPlotChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [ScatterPlotChart] with sample data and no transition. - factory BucketingAxisScatterPlotChart.withSampleData() { - return BucketingAxisScatterPlotChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory BucketingAxisScatterPlotChart.withRandomData() { - return BucketingAxisScatterPlotChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - makeRadius(int value) => (random.nextInt(value) + 6).toDouble(); - - // Make sure that the measure values for the first five series are well - // above the threshold. This simulates the grouping of the small values into - // the "Other" series. - final myFakeDesktopData = [ - LinearSales( - random.nextInt(100), (random.nextInt(50) + 50) / 100, makeRadius(6)), - ]; - - final myFakeTabletData = [ - LinearSales( - random.nextInt(100), (random.nextInt(50) + 50) / 100, makeRadius(6)), - ]; - - final myFakeMobileData = [ - LinearSales( - random.nextInt(100), (random.nextInt(50) + 50) / 100, makeRadius(6)), - ]; - - final myFakeChromebookData = [ - LinearSales( - random.nextInt(100), (random.nextInt(50) + 50) / 100, makeRadius(6)), - ]; - - final myFakeHomeData = [ - LinearSales( - random.nextInt(100), (random.nextInt(50) + 50) / 100, makeRadius(6)), - ]; - - // Make sure that the "Other" series values are smaller. - final myFakeOtherData = [ - LinearSales(random.nextInt(100), random.nextInt(50) / 100, makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(50) / 100, makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(50) / 100, makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(50) / 100, makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(50) / 100, makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(50) / 100, makeRadius(6)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeDesktopData), - charts.Series( - id: 'Tablet', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeTabletData), - charts.Series( - id: 'Mobile', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeMobileData), - charts.Series( - id: 'Chromebook', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.purple.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeChromebookData), - charts.Series( - id: 'Home', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.indigo.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeHomeData), - charts.Series( - id: 'Other', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.gray.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeOtherData), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.ScatterPlotChart(seriesList, - // Set up a bucketing axis that will place all values below 0.1 (10%) - // into a bucket at the bottom of the chart. - // - // Configure a tick count of 3 so that we get 100%, 50%, and the - // threshold. - primaryMeasureAxis: charts.BucketingAxisSpec( - threshold: 0.1, - tickProviderSpec: const charts.BucketingNumericTickProviderSpec( - desiredTickCount: 3)), - // Add a series legend to display the series names. - behaviors: [ - charts.SeriesLegend(position: charts.BehaviorPosition.end), - ], - animate: animate); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final myFakeDesktopData = [ - LinearSales(52, 0.75, 14.0), - ]; - - final myFakeTabletData = [ - LinearSales(45, 0.3, 18.0), - ]; - - final myFakeMobileData = [ - LinearSales(56, 0.8, 17.0), - ]; - - final myFakeChromebookData = [ - LinearSales(25, 0.6, 13.0), - ]; - - final myFakeHomeData = [ - LinearSales(34, 0.5, 15.0), - ]; - - final myFakeOtherData = [ - LinearSales(10, 0.25, 15.0), - LinearSales(12, 0.075, 14.0), - LinearSales(13, 0.225, 15.0), - LinearSales(16, 0.03, 14.0), - LinearSales(24, 0.04, 13.0), - LinearSales(37, 0.1, 14.5), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.blue.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeDesktopData), - charts.Series( - id: 'Tablet', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.red.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeTabletData), - charts.Series( - id: 'Mobile', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.green.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeMobileData), - charts.Series( - id: 'Chromebook', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.purple.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeChromebookData), - charts.Series( - id: 'Home', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.indigo.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeHomeData), - charts.Series( - id: 'Other', - colorFn: (LinearSales sales, _) => - charts.MaterialPalette.gray.shadeDefault, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.revenueShare, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: myFakeOtherData), - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final double revenueShare; - final double radius; - - LinearSales(this.year, this.revenueShare, this.radius); -} diff --git a/web/charts/lib/scatter_plot_chart/comparison_points.dart b/web/charts/lib/scatter_plot_chart/comparison_points.dart deleted file mode 100644 index 04f00fa43..000000000 --- a/web/charts/lib/scatter_plot_chart/comparison_points.dart +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Line chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class ComparisonPointsScatterPlotChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const ComparisonPointsScatterPlotChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - /// Creates a [ScatterPlotChart] with sample data and no transition. - factory ComparisonPointsScatterPlotChart.withSampleData() { - return ComparisonPointsScatterPlotChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory ComparisonPointsScatterPlotChart.withRandomData() { - return ComparisonPointsScatterPlotChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - const maxMeasure = 100; - - final data = [ - _makeRandomDatum(maxMeasure, random), - _makeRandomDatum(maxMeasure, random), - _makeRandomDatum(maxMeasure, random), - _makeRandomDatum(maxMeasure, random), - _makeRandomDatum(maxMeasure, random), - _makeRandomDatum(maxMeasure, random), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (LinearSales sales, _) { - // Color bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - domainLowerBoundFn: (LinearSales sales, _) => sales.yearLower, - domainUpperBoundFn: (LinearSales sales, _) => sales.yearUpper, - measureFn: (LinearSales sales, _) => sales.sales, - measureLowerBoundFn: (LinearSales sales, _) => sales.salesLower, - measureUpperBoundFn: (LinearSales sales, _) => sales.salesUpper, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: data, - ) - ]; - } - - static LinearSales _makeRandomDatum(int max, Random random) { - makeRadius(int value) => (random.nextInt(value) + 6).toDouble(); - - final year = random.nextInt(max); - final yearLower = (year * 0.8).round(); - final yearUpper = year; - final sales = random.nextInt(max); - final salesLower = (sales * 0.8).round(); - final salesUpper = sales; - - return LinearSales(year, yearLower, yearUpper, sales, salesLower, - salesUpper, makeRadius(4)); - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.ScatterPlotChart(seriesList, - animate: animate, - defaultRenderer: charts.PointRendererConfig(pointRendererDecorators: [ - charts.ComparisonPointsDecorator( - symbolRenderer: charts.CylinderSymbolRenderer()) - ])); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(10, 7, 10, 25, 20, 25, 5.0), - LinearSales(13, 11, 13, 225, 205, 225, 5.0), - LinearSales(34, 34, 24, 150, 150, 130, 5.0), - LinearSales(37, 37, 57, 10, 10, 12, 6.5), - LinearSales(45, 35, 45, 260, 300, 260, 8.0), - LinearSales(56, 46, 56, 200, 170, 200, 7.0), - ]; - - const maxMeasure = 300; - - return [ - charts.Series( - id: 'Sales', - // Providing a color function is optional. - colorFn: (LinearSales sales, _) { - // Bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - domainLowerBoundFn: (LinearSales sales, _) => sales.yearLower, - domainUpperBoundFn: (LinearSales sales, _) => sales.yearUpper, - measureFn: (LinearSales sales, _) => sales.sales, - measureLowerBoundFn: (LinearSales sales, _) => sales.salesLower, - measureUpperBoundFn: (LinearSales sales, _) => sales.salesUpper, - // Providing a radius function is optional. - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int yearLower; - final int yearUpper; - final int sales; - final int salesLower; - final int salesUpper; - final double radius; - - LinearSales(this.year, this.yearLower, this.yearUpper, this.sales, - this.salesLower, this.salesUpper, this.radius); -} diff --git a/web/charts/lib/scatter_plot_chart/scatter_plot_gallery.dart b/web/charts/lib/scatter_plot_chart/scatter_plot_gallery.dart deleted file mode 100644 index 432812e6c..000000000 --- a/web/charts/lib/scatter_plot_chart/scatter_plot_gallery.dart +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'animation_zoom.dart'; -import 'bucketing_axis.dart'; -import 'comparison_points.dart'; -import 'shapes.dart'; -import 'simple.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.scatter_plot), - title: 'Simple Scatter Plot Chart', - subtitle: 'With a single series', - childBuilder: () => SimpleScatterPlotChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.scatter_plot), - title: 'Shapes Scatter Plot Chart', - subtitle: 'With custom shapes', - childBuilder: () => ShapesScatterPlotChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.scatter_plot), - title: 'Comparison Points Scatter Plot Chart', - subtitle: 'Scatter plot chart with comparison points', - childBuilder: () => ComparisonPointsScatterPlotChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.scatter_plot), - title: 'Pan and Zoom Scatter Plot Chart', - subtitle: 'Simple scatter plot chart pan and zoom behaviors enabled', - childBuilder: () => ScatterPlotAnimationZoomChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.scatter_plot), - title: 'Bucketing Axis Scatter Plot Chart', - subtitle: 'Scatter plot with a measure axis that buckets values less ' - 'than 10% into a single region below the draw area', - childBuilder: () => BucketingAxisScatterPlotChart.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/scatter_plot_chart/shapes.dart b/web/charts/lib/scatter_plot_chart/shapes.dart deleted file mode 100644 index be93d7003..000000000 --- a/web/charts/lib/scatter_plot_chart/shapes.dart +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a scatter plot chart using custom symbols for the points. -/// -/// The series has been configured to draw each point as a square by default. -/// -/// Some data will be drawn as a circle, indicated by defining a custom "circle" -/// value referenced by [pointSymbolRendererFnKey]. -/// -/// Some other data have will be drawn as a hollow circle. In addition to the -/// custom renderer key, these data also have stroke and fillColor values -/// defined. Configuring a separate fillColor will cause the center of the shape -/// to be filled in, with white in these examples. The border of the shape will -/// be color with the color of the data. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class ShapesScatterPlotChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const ShapesScatterPlotChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [ScatterPlotChart] with sample data and no transition. - factory ShapesScatterPlotChart.withSampleData() { - return ShapesScatterPlotChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory ShapesScatterPlotChart.withRandomData() { - return ShapesScatterPlotChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - makeRadius(int value) => (random.nextInt(value) + 2).toDouble(); - - final data = [ - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), - 'circle', null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - // Render a hollow circle, filled in with white. - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(4) + 4, - 'circle', charts.MaterialPalette.white, 2.0), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), - 'circle', null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - // Render a hollow circle, filled in with white. - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(4) + 4, - 'circle', charts.MaterialPalette.white, 2.0), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6), null, - null, null), - // Render a hollow square, filled in with white. - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(4) + 4, - null, charts.MaterialPalette.white, 2.0), - ]; - - const maxMeasure = 100; - - return [ - charts.Series( - id: 'Sales', - colorFn: (LinearSales sales, _) { - // Color bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - radiusPxFn: (LinearSales sales, _) => sales.radius, - fillColorFn: (LinearSales row, _) => row.fillColor, - strokeWidthPxFn: (LinearSales row, _) => row.strokeWidth, - data: data, - ) - // Accessor function that associates each datum with a symbol renderer. - ..setAttribute( - charts.pointSymbolRendererFnKey, (int index) => data[index].shape) - // Default symbol renderer ID for data that have no defined shape. - ..setAttribute(charts.pointSymbolRendererIdKey, 'rect') - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.ScatterPlotChart(seriesList, - animate: animate, - // Configure the point renderer to have a map of custom symbol - // renderers. - defaultRenderer: - charts.PointRendererConfig(customSymbolRenderers: { - 'circle': charts.CircleSymbolRenderer(), - 'rect': charts.RectSymbolRenderer(), - })); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5, 3.0, 'circle', null, null), - LinearSales(10, 25, 5.0, null, null, null), - LinearSales(12, 75, 4.0, null, null, null), - // Render a hollow circle, filled in with white. - LinearSales(13, 225, 5.0, 'circle', charts.MaterialPalette.white, 2.0), - LinearSales(16, 50, 4.0, null, null, null), - LinearSales(24, 75, 3.0, null, null, null), - LinearSales(25, 100, 3.0, 'circle', null, null), - LinearSales(34, 150, 5.0, null, null, null), - LinearSales(37, 10, 4.5, null, null, null), - // Render a hollow circle, filled in with white. - LinearSales(45, 300, 8.0, 'circle', charts.MaterialPalette.white, 2.0), - LinearSales(52, 15, 4.0, null, null, null), - // Render a hollow square, filled in with white. - LinearSales(56, 200, 7.0, null, charts.MaterialPalette.white, 2.0), - ]; - - const maxMeasure = 300; - - return [ - charts.Series( - id: 'Sales', - // Providing a color function is optional. - colorFn: (LinearSales sales, _) { - // Bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - radiusPxFn: (LinearSales sales, _) => sales.radius, - fillColorFn: (LinearSales row, _) => row.fillColor, - strokeWidthPxFn: (LinearSales row, _) => row.strokeWidth, - data: data, - ) - // Accessor function that associates each datum with a symbol renderer. - ..setAttribute( - charts.pointSymbolRendererFnKey, (int index) => data[index].shape) - // Default symbol renderer ID for data that have no defined shape. - ..setAttribute(charts.pointSymbolRendererIdKey, 'rect') - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - final double radius; - final String? shape; - final charts.Color? fillColor; - final double? strokeWidth; - - LinearSales(this.year, this.sales, this.radius, this.shape, this.fillColor, - this.strokeWidth); -} diff --git a/web/charts/lib/scatter_plot_chart/simple.dart b/web/charts/lib/scatter_plot_chart/simple.dart deleted file mode 100644 index 4a033fbdd..000000000 --- a/web/charts/lib/scatter_plot_chart/simple.dart +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Scatter plot chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SimpleScatterPlotChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SimpleScatterPlotChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [ScatterPlotChart] with sample data and no transition. - factory SimpleScatterPlotChart.withSampleData() { - return SimpleScatterPlotChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SimpleScatterPlotChart.withRandomData() { - return SimpleScatterPlotChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - makeRadius(int value) => (random.nextInt(value) + 2).toDouble(); - - final data = [ - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - LinearSales(random.nextInt(100), random.nextInt(100), makeRadius(6)), - ]; - - const maxMeasure = 100; - - return [ - charts.Series( - id: 'Sales', - colorFn: (LinearSales sales, _) { - // Color bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.ScatterPlotChart(seriesList, animate: animate); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - LinearSales(0, 5, 3.0), - LinearSales(10, 25, 5.0), - LinearSales(12, 75, 4.0), - LinearSales(13, 225, 5.0), - LinearSales(16, 50, 4.0), - LinearSales(24, 75, 3.0), - LinearSales(25, 100, 3.0), - LinearSales(34, 150, 5.0), - LinearSales(37, 10, 4.5), - LinearSales(45, 300, 8.0), - LinearSales(52, 15, 4.0), - LinearSales(56, 200, 7.0), - ]; - - const maxMeasure = 300; - - return [ - charts.Series( - id: 'Sales', - // Providing a color function is optional. - colorFn: (LinearSales sales, _) { - // Bucket the measure column value into 3 distinct colors. - final bucket = sales.sales / maxMeasure; - - if (bucket < 1 / 3) { - return charts.MaterialPalette.blue.shadeDefault; - } else if (bucket < 2 / 3) { - return charts.MaterialPalette.red.shadeDefault; - } else { - return charts.MaterialPalette.green.shadeDefault; - } - }, - domainFn: (LinearSales sales, _) => sales.year, - measureFn: (LinearSales sales, _) => sales.sales, - // Providing a radius function is optional. - radiusPxFn: (LinearSales sales, _) => sales.radius, - data: data, - ) - ]; - } -} - -/// Sample linear data type. -class LinearSales { - final int year; - final int sales; - final double radius; - - LinearSales(this.year, this.sales, this.radius); -} diff --git a/web/charts/lib/time_series_chart/confidence_interval.dart b/web/charts/lib/time_series_chart/confidence_interval.dart deleted file mode 100644 index 914d462ba..000000000 --- a/web/charts/lib/time_series_chart/confidence_interval.dart +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a time series chart with a confidence interval. -/// -/// Confidence interval is defined by specifying the upper and lower measure -/// bounds in the series. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class TimeSeriesConfidenceInterval extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const TimeSeriesConfidenceInterval(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory TimeSeriesConfidenceInterval.withSampleData() { - return TimeSeriesConfidenceInterval( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory TimeSeriesConfidenceInterval.withRandomData() { - return TimeSeriesConfidenceInterval(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - // When the measureLowerBoundFn and measureUpperBoundFn is defined, - // the line renderer will render the area around the bounds. - measureLowerBoundFn: (TimeSeriesSales sales, _) => sales.sales - 5, - measureUpperBoundFn: (TimeSeriesSales sales, _) => sales.sales + 5, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart( - seriesList, - animate: animate, - // Optionally pass in a [DateTimeFactory] used by the chart. The factory - // should create the same type of [DateTime] as the data provided. If none - // specified, the default creates local date time. - dateTimeFactory: const charts.LocalDateTimeFactory(), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), 5), - TimeSeriesSales(DateTime(2017, 9, 26), 25), - TimeSeriesSales(DateTime(2017, 10, 3), 100), - TimeSeriesSales(DateTime(2017, 10, 10), 75), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - // When the measureLowerBoundFn and measureUpperBoundFn is defined, - // the line renderer will render the area around the bounds. - measureLowerBoundFn: (TimeSeriesSales sales, _) => sales.sales - 5, - measureUpperBoundFn: (TimeSeriesSales sales, _) => sales.sales + 5, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - - TimeSeriesSales(this.time, this.sales); -} diff --git a/web/charts/lib/time_series_chart/end_points_axis.dart b/web/charts/lib/time_series_chart/end_points_axis.dart deleted file mode 100644 index e0b312ee4..000000000 --- a/web/charts/lib/time_series_chart/end_points_axis.dart +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a time series chart with an end points domain axis. -/// -/// An end points axis generates two ticks, one at each end of the axis range. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class EndPointsAxisTimeSeriesChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const EndPointsAxisTimeSeriesChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory EndPointsAxisTimeSeriesChart.withSampleData() { - return EndPointsAxisTimeSeriesChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory EndPointsAxisTimeSeriesChart.withRandomData() { - return EndPointsAxisTimeSeriesChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart( - seriesList, - animate: animate, - // Configures an axis spec that is configured to render one tick at each - // end of the axis range, anchored "inside" the axis. The start tick label - // will be left-aligned with its tick mark, and the end tick label will be - // right-aligned with its tick mark. - domainAxis: const charts.EndPointsTimeAxisSpec(), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), 5), - TimeSeriesSales(DateTime(2017, 9, 26), 25), - TimeSeriesSales(DateTime(2017, 10, 3), 100), - TimeSeriesSales(DateTime(2017, 10, 10), 75), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - - TimeSeriesSales(this.time, this.sales); -} diff --git a/web/charts/lib/time_series_chart/line_annotation.dart b/web/charts/lib/time_series_chart/line_annotation.dart deleted file mode 100644 index 726cecff8..000000000 --- a/web/charts/lib/time_series_chart/line_annotation.dart +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Time series chart with line annotation example -/// -/// The example future range annotation extends beyond the range of the series -/// data, demonstrating the effect of the [Charts.RangeAnnotation.extendAxis] -/// flag. This can be set to false to disable range extension. -/// -/// Additional annotations may be added simply by adding additional -/// [Charts.RangeAnnotationSegment] items to the list. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class TimeSeriesLineAnnotationChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const TimeSeriesLineAnnotationChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory TimeSeriesLineAnnotationChart.withSampleData() { - return TimeSeriesLineAnnotationChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory TimeSeriesLineAnnotationChart.withRandomData() { - return TimeSeriesLineAnnotationChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart(seriesList, animate: animate, behaviors: [ - charts.RangeAnnotation([ - charts.LineAnnotationSegment( - DateTime(2017, 10, 4), charts.RangeAnnotationAxisType.domain, - startLabel: 'Oct 4'), - charts.LineAnnotationSegment( - DateTime(2017, 10, 15), charts.RangeAnnotationAxisType.domain, - endLabel: 'Oct 15'), - ]), - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), 5), - TimeSeriesSales(DateTime(2017, 9, 26), 25), - TimeSeriesSales(DateTime(2017, 10, 3), 100), - TimeSeriesSales(DateTime(2017, 10, 10), 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - - TimeSeriesSales(this.time, this.sales); -} diff --git a/web/charts/lib/time_series_chart/range_annotation.dart b/web/charts/lib/time_series_chart/range_annotation.dart deleted file mode 100644 index b6a077f71..000000000 --- a/web/charts/lib/time_series_chart/range_annotation.dart +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Time series chart with range annotation example -/// -/// The example future range annotation extends beyond the range of the series -/// data, demonstrating the effect of the [Charts.RangeAnnotation.extendAxis] -/// flag. This can be set to false to disable range extension. -/// -/// Additional annotations may be added simply by adding additional -/// [Charts.RangeAnnotationSegment] items to the list. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class TimeSeriesRangeAnnotationChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const TimeSeriesRangeAnnotationChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory TimeSeriesRangeAnnotationChart.withSampleData() { - return TimeSeriesRangeAnnotationChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory TimeSeriesRangeAnnotationChart.withRandomData() { - return TimeSeriesRangeAnnotationChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart(seriesList, animate: animate, behaviors: [ - charts.RangeAnnotation([ - charts.RangeAnnotationSegment(DateTime(2017, 10, 4), - DateTime(2017, 10, 15), charts.RangeAnnotationAxisType.domain), - ]), - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), 5), - TimeSeriesSales(DateTime(2017, 9, 26), 25), - TimeSeriesSales(DateTime(2017, 10, 3), 100), - TimeSeriesSales(DateTime(2017, 10, 10), 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - - TimeSeriesSales(this.time, this.sales); -} diff --git a/web/charts/lib/time_series_chart/range_annotation_margin.dart b/web/charts/lib/time_series_chart/range_annotation_margin.dart deleted file mode 100644 index c0b2f4cdf..000000000 --- a/web/charts/lib/time_series_chart/range_annotation_margin.dart +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a time series chart with range annotations configured to render -/// labels in the chart margin area. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class TimeSeriesRangeAnnotationMarginChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const TimeSeriesRangeAnnotationMarginChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory TimeSeriesRangeAnnotationMarginChart.withSampleData() { - return TimeSeriesRangeAnnotationMarginChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory TimeSeriesRangeAnnotationMarginChart.withRandomData() { - return TimeSeriesRangeAnnotationMarginChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - // Fix one of the points to 100 so that the annotations are consistently - // placed. - TimeSeriesSales(DateTime(2017, 10, 10), 100), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart(seriesList, - animate: animate, - - // Allow enough space in the left and right chart margins for the - // annotations. - layoutConfig: charts.LayoutConfig( - leftMarginSpec: charts.MarginSpec.fixedPixel(60), - topMarginSpec: charts.MarginSpec.fixedPixel(20), - rightMarginSpec: charts.MarginSpec.fixedPixel(60), - bottomMarginSpec: charts.MarginSpec.fixedPixel(20)), - behaviors: [ - // Define one domain and two measure annotations configured to render - // labels in the chart margins. - charts.RangeAnnotation([ - charts.RangeAnnotationSegment(DateTime(2017, 10, 4), - DateTime(2017, 10, 15), charts.RangeAnnotationAxisType.domain, - startLabel: 'D1 Start', - endLabel: 'D1 End', - labelAnchor: charts.AnnotationLabelAnchor.end, - color: charts.MaterialPalette.gray.shade200, - // Override the default vertical direction for domain labels. - labelDirection: charts.AnnotationLabelDirection.horizontal), - charts.RangeAnnotationSegment( - 15, 20, charts.RangeAnnotationAxisType.measure, - startLabel: 'M1 Start', - endLabel: 'M1 End', - labelAnchor: charts.AnnotationLabelAnchor.end, - color: charts.MaterialPalette.gray.shade300), - charts.RangeAnnotationSegment( - 35, 65, charts.RangeAnnotationAxisType.measure, - startLabel: 'M2 Start', - endLabel: 'M2 End', - labelAnchor: charts.AnnotationLabelAnchor.start, - color: charts.MaterialPalette.gray.shade300), - ], defaultLabelPosition: charts.AnnotationLabelPosition.margin), - ]); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), 5), - TimeSeriesSales(DateTime(2017, 9, 26), 25), - TimeSeriesSales(DateTime(2017, 10, 3), 100), - TimeSeriesSales(DateTime(2017, 10, 10), 75), - ]; - - return [ - charts.Series( - id: 'Sales', - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - - TimeSeriesSales(this.time, this.sales); -} diff --git a/web/charts/lib/time_series_chart/simple.dart b/web/charts/lib/time_series_chart/simple.dart deleted file mode 100644 index a2db3e033..000000000 --- a/web/charts/lib/time_series_chart/simple.dart +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Timeseries chart example -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class SimpleTimeSeriesChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const SimpleTimeSeriesChart(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory SimpleTimeSeriesChart.withSampleData() { - return SimpleTimeSeriesChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory SimpleTimeSeriesChart.withRandomData() { - return SimpleTimeSeriesChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart( - seriesList, - animate: animate, - // Optionally pass in a [DateTimeFactory] used by the chart. The factory - // should create the same type of [DateTime] as the data provided. If none - // specified, the default creates local date time. - dateTimeFactory: const charts.LocalDateTimeFactory(), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - TimeSeriesSales(DateTime(2017, 9, 19), 5), - TimeSeriesSales(DateTime(2017, 9, 26), 25), - TimeSeriesSales(DateTime(2017, 10, 3), 100), - TimeSeriesSales(DateTime(2017, 10, 10), 75), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - - TimeSeriesSales(this.time, this.sales); -} diff --git a/web/charts/lib/time_series_chart/symbol_annotation.dart b/web/charts/lib/time_series_chart/symbol_annotation.dart deleted file mode 100644 index 1222eb9a1..000000000 --- a/web/charts/lib/time_series_chart/symbol_annotation.dart +++ /dev/null @@ -1,300 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of timeseries chart with annotation rows between the chart draw area -/// and the domain axis. -/// -/// The symbol annotation renderer draws a row of symbols for each series below -/// the drawArea but above the bottom axis. -/// -/// This renderer can draw point annotations and range annotations. Point -/// annotations are drawn at the location of the domain along the chart's domain -/// axis, in the row for its series. Range annotations are drawn as a range -/// shape between the domainLowerBound and domainUpperBound positions along the -/// chart's domain axis. Point annotations are drawn on top of range -/// annotations. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class TimeSeriesSymbolAnnotationChart extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const TimeSeriesSymbolAnnotationChart(this.seriesList, - {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory TimeSeriesSymbolAnnotationChart.withSampleData() { - return TimeSeriesSymbolAnnotationChart( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory TimeSeriesSymbolAnnotationChart.withRandomData() { - return TimeSeriesSymbolAnnotationChart(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final myDesktopData = [ - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 19), sales: random.nextInt(100)), - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 26), sales: random.nextInt(100)), - TimeSeriesSales( - timeCurrent: DateTime(2017, 10, 3), sales: random.nextInt(100)), - TimeSeriesSales( - timeCurrent: DateTime(2017, 10, 10), sales: random.nextInt(100)), - ]; - - final myTabletData = [ - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 19), sales: random.nextInt(100)), - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 26), sales: random.nextInt(100)), - TimeSeriesSales( - timeCurrent: DateTime(2017, 10, 3), sales: random.nextInt(100)), - TimeSeriesSales( - timeCurrent: DateTime(2017, 10, 10), sales: random.nextInt(100)), - ]; - - // Example of a series with two range annotations. A regular point shape - // will be drawn at the current domain value, and a range shape will be - // drawn between the previous and target domain values. - // - // Note that these series do not contain any measure values. They are - // positioned automatically in rows. - final myAnnotationDataTop = [ - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 24), - timePrevious: DateTime(2017, 9, 19), - timeTarget: DateTime(2017, 9, 24), - ), - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 29), - timePrevious: DateTime(2017, 9, 29), - timeTarget: DateTime(2017, 10, 4), - ), - ]; - - // Example of a series with one range annotation and two single point - // annotations. Omitting the previous and target domain values causes that - // datum to be drawn as a single point. - final myAnnotationDataBottom = [ - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 25), - timePrevious: DateTime(2017, 9, 21), - timeTarget: DateTime(2017, 9, 25), - ), - TimeSeriesSales(timeCurrent: DateTime(2017, 9, 31)), - TimeSeriesSales(timeCurrent: DateTime(2017, 10, 5)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: myDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: myTabletData, - ), - charts.Series( - id: 'Annotation Series 1', - colorFn: (_, __) => charts.MaterialPalette.gray.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent, - domainLowerBoundFn: (TimeSeriesSales row, _) => row.timePrevious, - domainUpperBoundFn: (TimeSeriesSales row, _) => row.timeTarget, - // No measure values are needed for symbol annotations. - measureFn: (_, __) => null, - data: myAnnotationDataTop, - ) - // Configure our custom symbol annotation renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customSymbolAnnotation') - // Optional radius for the annotation shape. If not specified, this will - // default to the same radius as the points. - ..setAttribute(charts.boundsLineRadiusPxKey, 3.5), - charts.Series( - id: 'Annotation Series 2', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent, - domainLowerBoundFn: (TimeSeriesSales row, _) => row.timePrevious, - domainUpperBoundFn: (TimeSeriesSales row, _) => row.timeTarget, - // No measure values are needed for symbol annotations. - measureFn: (_, __) => null, - data: myAnnotationDataBottom, - ) - // Configure our custom symbol annotation renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customSymbolAnnotation') - // Optional radius for the annotation shape. If not specified, this will - // default to the same radius as the points. - ..setAttribute(charts.boundsLineRadiusPxKey, 3.5), - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart( - seriesList, - animate: animate, - // Custom renderer configuration for the point series. - customSeriesRenderers: [ - charts.SymbolAnnotationRendererConfig( - // ID used to link series to this renderer. - customRendererId: 'customSymbolAnnotation') - ], - // Optionally pass in a [DateTimeFactory] used by the chart. The factory - // should create the same type of [DateTime] as the data provided. If none - // specified, the default creates local date time. - dateTimeFactory: const charts.LocalDateTimeFactory(), - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final myDesktopData = [ - TimeSeriesSales(timeCurrent: DateTime(2017, 9, 19), sales: 5), - TimeSeriesSales(timeCurrent: DateTime(2017, 9, 26), sales: 25), - TimeSeriesSales(timeCurrent: DateTime(2017, 10, 3), sales: 100), - TimeSeriesSales(timeCurrent: DateTime(2017, 10, 10), sales: 75), - ]; - - final myTabletData = [ - TimeSeriesSales(timeCurrent: DateTime(2017, 9, 19), sales: 10), - TimeSeriesSales(timeCurrent: DateTime(2017, 9, 26), sales: 50), - TimeSeriesSales(timeCurrent: DateTime(2017, 10, 3), sales: 200), - TimeSeriesSales(timeCurrent: DateTime(2017, 10, 10), sales: 150), - ]; - - // Example of a series with two range annotations. A regular point shape - // will be drawn at the current domain value, and a range shape will be - // drawn between the previous and target domain values. - // - // Note that these series do not contain any measure values. They are - // positioned automatically in rows. - final myAnnotationDataTop = [ - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 24), - timePrevious: DateTime(2017, 9, 19), - timeTarget: DateTime(2017, 9, 24), - ), - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 29), - timePrevious: DateTime(2017, 9, 29), - timeTarget: DateTime(2017, 10, 4), - ), - ]; - - // Example of a series with one range annotation and two single point - // annotations. Omitting the previous and target domain values causes that - // datum to be drawn as a single point. - final myAnnotationDataBottom = [ - TimeSeriesSales( - timeCurrent: DateTime(2017, 9, 25), - timePrevious: DateTime(2017, 9, 21), - timeTarget: DateTime(2017, 9, 25), - ), - TimeSeriesSales(timeCurrent: DateTime(2017, 9, 31)), - TimeSeriesSales(timeCurrent: DateTime(2017, 10, 5)), - ]; - - return [ - charts.Series( - id: 'Desktop', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: myDesktopData, - ), - charts.Series( - id: 'Tablet', - colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: myTabletData, - ), - charts.Series( - id: 'Annotation Series 1', - colorFn: (_, __) => charts.MaterialPalette.gray.shadeDefault, - // A point shape will be drawn at the location of the domain. - domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent, - // A range shape will be drawn between the lower and upper domain - // bounds. The range will be drawn underneath the domain point. - domainLowerBoundFn: (TimeSeriesSales row, _) => row.timePrevious, - domainUpperBoundFn: (TimeSeriesSales row, _) => row.timeTarget, - // No measure values are needed for symbol annotations. - measureFn: (_, __) => null, - data: myAnnotationDataTop, - ) - // Configure our custom symbol annotation renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customSymbolAnnotation') - // Optional radius for the annotation range. If not specified, this will - // default to the same radius as the domain point. - ..setAttribute(charts.boundsLineRadiusPxKey, 3.5), - charts.Series( - id: 'Annotation Series 2', - colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, - // A point shape will be drawn at the location of the domain. - domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent, - // A range shape will be drawn between the lower and upper domain - // bounds. The range will be drawn underneath the domain point. - domainLowerBoundFn: (TimeSeriesSales row, _) => row.timePrevious, - domainUpperBoundFn: (TimeSeriesSales row, _) => row.timeTarget, - // No measure values are needed for symbol annotations. - measureFn: (_, __) => null, - data: myAnnotationDataBottom, - ) - // Configure our custom symbol annotation renderer for this series. - ..setAttribute(charts.rendererIdKey, 'customSymbolAnnotation') - // Optional radius for the annotation range. If not specified, this will - // default to the same radius as the domain point. - ..setAttribute(charts.boundsLineRadiusPxKey, 3.5), - ]; - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime timeCurrent; - final DateTime? timePrevious; - final DateTime? timeTarget; - final int? sales; - - TimeSeriesSales({ - required this.timeCurrent, - this.timePrevious, - this.timeTarget, - this.sales, - }); -} diff --git a/web/charts/lib/time_series_chart/time_series_gallery.dart b/web/charts/lib/time_series_chart/time_series_gallery.dart deleted file mode 100644 index dcaaac6b7..000000000 --- a/web/charts/lib/time_series_chart/time_series_gallery.dart +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import 'package:flutter/material.dart'; -import '../gallery_scaffold.dart'; -import 'confidence_interval.dart'; -import 'end_points_axis.dart'; -import 'line_annotation.dart'; -import 'range_annotation.dart'; -import 'range_annotation_margin.dart'; -import 'simple.dart'; -import 'symbol_annotation.dart'; -import 'with_bar_renderer.dart'; - -List buildGallery() { - return [ - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Time Series Chart', - subtitle: 'Simple single time series chart', - childBuilder: () => SimpleTimeSeriesChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'End Points Axis Time Series Chart', - subtitle: 'Time series chart with an end points axis', - childBuilder: () => EndPointsAxisTimeSeriesChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Line Annotation on Time Series Chart', - subtitle: 'Time series chart with future line annotation', - childBuilder: () => TimeSeriesLineAnnotationChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Range Annotation on Time Series Chart', - subtitle: 'Time series chart with future range annotation', - childBuilder: () => TimeSeriesRangeAnnotationChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Range Annotation Margin Labels on Time Series Chart', - subtitle: - 'Time series chart with range annotations with labels in margins', - childBuilder: () => TimeSeriesRangeAnnotationMarginChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Symbol Annotation Time Series Chart', - subtitle: 'Time series chart with annotation data below the draw area', - childBuilder: () => TimeSeriesSymbolAnnotationChart.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Time Series Chart with Bars', - subtitle: 'Time series chart using the bar renderer', - childBuilder: () => TimeSeriesBar.withRandomData(), - ), - GalleryScaffold( - listTileIcon: const Icon(Icons.show_chart), - title: 'Time Series Chart with Confidence Interval', - subtitle: 'Draws area around the confidence interval', - childBuilder: () => TimeSeriesConfidenceInterval.withRandomData(), - ), - ]; -} diff --git a/web/charts/lib/time_series_chart/with_bar_renderer.dart b/web/charts/lib/time_series_chart/with_bar_renderer.dart deleted file mode 100644 index df9e9fd5b..000000000 --- a/web/charts/lib/time_series_chart/with_bar_renderer.dart +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2018 the Charts project authors. Please see the AUTHORS file -// for details. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/// Example of a time series chart using a bar renderer. -// EXCLUDE_FROM_GALLERY_DOCS_START -import 'dart:math'; -// EXCLUDE_FROM_GALLERY_DOCS_END -import 'package:charts_flutter/flutter.dart' as charts; -import 'package:flutter/material.dart'; - -class TimeSeriesBar extends StatelessWidget { - final List> seriesList; - final bool? animate; - - const TimeSeriesBar(this.seriesList, {this.animate, Key? key}) - : super(key: key); - - /// Creates a [TimeSeriesChart] with sample data and no transition. - factory TimeSeriesBar.withSampleData() { - return TimeSeriesBar( - _createSampleData(), - // Disable animations for image tests. - animate: false, - ); - } - - // EXCLUDE_FROM_GALLERY_DOCS_START - // This section is excluded from being copied to the gallery. - // It is used for creating random series data to demonstrate animation in - // the example app only. - factory TimeSeriesBar.withRandomData() { - return TimeSeriesBar(_createRandomData()); - } - - /// Create random data. - static List> _createRandomData() { - final random = Random(); - - final data = [ - TimeSeriesSales(DateTime(2017, 9, 1), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 2), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 3), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 4), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 5), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 6), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 7), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 8), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 9), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 10), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 11), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 12), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 13), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 14), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 15), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 16), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 17), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 18), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 20), random.nextInt(100)), - TimeSeriesSales(DateTime(2017, 9, 21), random.nextInt(100)), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } - // EXCLUDE_FROM_GALLERY_DOCS_END - - @override - Widget build(BuildContext context) { - return charts.TimeSeriesChart( - seriesList, - animate: animate, - // Set the default renderer to a bar renderer. - // This can also be one of the custom renderers of the time series chart. - defaultRenderer: charts.BarRendererConfig(), - // It is recommended that default interactions be turned off if using bar - // renderer, because the line point highlighter is the default for time - // series chart. - defaultInteractions: false, - // If default interactions were removed, optionally add select nearest - // and the domain highlighter that are typical for bar charts. - behaviors: [charts.SelectNearest(), charts.DomainHighlighter()], - ); - } - - /// Create one series with sample hard coded data. - static List> _createSampleData() { - final data = [ - TimeSeriesSales(DateTime(2017, 9, 1), 5), - TimeSeriesSales(DateTime(2017, 9, 2), 5), - TimeSeriesSales(DateTime(2017, 9, 3), 25), - TimeSeriesSales(DateTime(2017, 9, 4), 100), - TimeSeriesSales(DateTime(2017, 9, 5), 75), - TimeSeriesSales(DateTime(2017, 9, 6), 88), - TimeSeriesSales(DateTime(2017, 9, 7), 65), - TimeSeriesSales(DateTime(2017, 9, 8), 91), - TimeSeriesSales(DateTime(2017, 9, 9), 100), - TimeSeriesSales(DateTime(2017, 9, 10), 111), - TimeSeriesSales(DateTime(2017, 9, 11), 90), - TimeSeriesSales(DateTime(2017, 9, 12), 50), - TimeSeriesSales(DateTime(2017, 9, 13), 40), - TimeSeriesSales(DateTime(2017, 9, 14), 30), - TimeSeriesSales(DateTime(2017, 9, 15), 40), - TimeSeriesSales(DateTime(2017, 9, 16), 50), - TimeSeriesSales(DateTime(2017, 9, 17), 30), - TimeSeriesSales(DateTime(2017, 9, 18), 35), - TimeSeriesSales(DateTime(2017, 9, 19), 40), - TimeSeriesSales(DateTime(2017, 9, 20), 32), - TimeSeriesSales(DateTime(2017, 9, 21), 31), - ]; - - return [ - charts.Series( - id: 'Sales', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (TimeSeriesSales sales, _) => sales.time, - measureFn: (TimeSeriesSales sales, _) => sales.sales, - data: data, - ) - ]; - } -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - - TimeSeriesSales(this.time, this.sales); -} diff --git a/web/charts/pubspec.yaml b/web/charts/pubspec.yaml deleted file mode 100644 index 3cd077396..000000000 --- a/web/charts/pubspec.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: example -description: Charts-Flutter Demo -publish_to: none - -environment: - sdk: ">=2.17.0-0 <3.0.0" - -dependencies: - flutter: - sdk: flutter - charts_flutter: ^0.12.0 - meta: ^1.1.1 - intl: ^0.17.0 - -dev_dependencies: - flutter_lints: ^2.0.1 - -flutter: - uses-material-design: true - assets: - - preview.png diff --git a/web/charts/web/index.html b/web/charts/web/index.html deleted file mode 100644 index 1785ebb8b..000000000 --- a/web/charts/web/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/web/samples_index/lib/src/samples.yaml b/web/samples_index/lib/src/samples.yaml index 7697f087b..7d74f8064 100644 --- a/web/samples_index/lib/src/samples.yaml +++ b/web/samples_index/lib/src/samples.yaml @@ -599,23 +599,6 @@ samples: type: demo web: web/game_template - - name: Charts - author: Flutter - screenshots: - - url: images/charts1.png - alt: Charts screenshot - source: https://github.com/google/charts - description: > - A general-purpose charting library. - difficulty: intermediate - widgets: [] - packages: [] - platforms: ['ios', 'android', 'web'] - links: [] - tags: ['demo', 'charts'] - web: web/charts - type: demo - - name: GitHub Dataviz author: Larva Labs screenshots: From 0bdb8f06ab27c3502ff641773e48e6fada21c205 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Sat, 15 Oct 2022 17:39:31 -0400 Subject: [PATCH 023/134] Add `web/samples_index` to CI (#1454) --- tool/flutter_ci_script_beta.sh | 1 + tool/flutter_ci_script_master.sh | 1 + tool/flutter_ci_script_stable.sh | 1 + 3 files changed, 3 insertions(+) diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index 787a99705..ddf916a97 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -43,6 +43,7 @@ declare -ar PROJECT_NAMES=( # "simplistic_editor" "testing_app" "veggieseasons" + "web/samples_index" ) ci_projects "beta" "${PROJECT_NAMES[@]}" diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index 6a07361e3..27668ea28 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -44,6 +44,7 @@ declare -ar PROJECT_NAMES=( # "simplistic_editor" "testing_app" "veggieseasons" + "web/samples_index" ) ci_projects "master" "${PROJECT_NAMES[@]}" diff --git a/tool/flutter_ci_script_stable.sh b/tool/flutter_ci_script_stable.sh index 40ecf362f..9c5824c67 100755 --- a/tool/flutter_ci_script_stable.sh +++ b/tool/flutter_ci_script_stable.sh @@ -40,6 +40,7 @@ declare -ar PROJECT_NAMES=( "simplistic_editor" "testing_app" "veggieseasons" + "web/samples_index" ) ci_projects "stable" "${PROJECT_NAMES[@]}" From 0ff17c4c3a8c3d90e89a9e4e5fba3f071344c8db Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Sat, 15 Oct 2022 17:57:34 -0500 Subject: [PATCH 024/134] Switch to using dart run instead of base-VM command (#1476) --- .github/workflows/gh-pages.yml | 2 +- .github/workflows/verify-web-demos.yml | 2 +- web/readme.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 03165a32c..2daff8436 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -28,7 +28,7 @@ jobs: working-directory: web/_tool - name: Build - run: dart _tool/build_ci.dart + run: dart run _tool/build_ci.dart working-directory: web - name: Deploy diff --git a/.github/workflows/verify-web-demos.yml b/.github/workflows/verify-web-demos.yml index 948f97372..2a04a8fd3 100644 --- a/.github/workflows/verify-web-demos.yml +++ b/.github/workflows/verify-web-demos.yml @@ -32,5 +32,5 @@ jobs: run: dart pub get working-directory: web/_tool - name: Verify packages - run: dart _tool/verify_packages.dart + run: dart run _tool/verify_packages.dart working-directory: web diff --git a/web/readme.md b/web/readme.md index b0c6f207e..f6d678af1 100644 --- a/web/readme.md +++ b/web/readme.md @@ -32,7 +32,7 @@ $ flutter pub global activate peanut Verify `pub get` has been run on each demo: ```console -$ dart _tool/verify_packages.dart +$ dart run _tool/verify_packages.dart ``` Build all demos, along with the sample index: From 62d5d8d09537a59873154884817ed616f3f05665 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Oct 2022 20:42:37 -0400 Subject: [PATCH 025/134] Bump hive_generator from 1.1.3 to 2.0.0 in /experimental/linting_tool (#1477) --- experimental/linting_tool/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimental/linting_tool/pubspec.yaml b/experimental/linting_tool/pubspec.yaml index a73b84fda..59e83c2a3 100644 --- a/experimental/linting_tool/pubspec.yaml +++ b/experimental/linting_tool/pubspec.yaml @@ -36,7 +36,7 @@ dev_dependencies: sdk: flutter build_runner: ^2.0.6 flutter_lints: ^2.0.1 - hive_generator: ^1.1.0 + hive_generator: ^2.0.0 json_serializable: ^6.2.0 flutter: From d99fb974a098d28cd8d6d1af587d8830bb7bc098 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Tue, 18 Oct 2022 13:15:31 -0400 Subject: [PATCH 026/134] Re-add Craig Labenz's code sharing sample (#1466) * Revert "Revert "Add code sharing sample (#1444)" (#1464)" This reverts commit dc50c46ef13c08feb4e4b588101ca70acf840305. * Opting out failing tests on Windows for CI Co-authored-by: Craig Labenz --- code_sharing/Makefile | 24 + code_sharing/README.md | 191 ++++++ code_sharing/client/.gitignore | 44 ++ code_sharing/client/.metadata | 45 ++ code_sharing/client/README.md | 16 + code_sharing/client/analysis_options.yaml | 29 + code_sharing/client/android/.gitignore | 13 + code_sharing/client/android/app/build.gradle | 71 +++ .../android/app/src/debug/AndroidManifest.xml | 8 + .../android/app/src/main/AndroidManifest.xml | 34 ++ .../kotlin/com/example/client/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + .../app/src/main/res/values/styles.xml | 18 + .../app/src/profile/AndroidManifest.xml | 8 + code_sharing/client/android/build.gradle | 31 + code_sharing/client/android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + code_sharing/client/android/settings.gradle | 11 + code_sharing/client/ios/.gitignore | 34 ++ .../client/ios/Flutter/AppFrameworkInfo.plist | 26 + .../client/ios/Flutter/Debug.xcconfig | 1 + .../client/ios/Flutter/Release.xcconfig | 1 + .../ios/Runner.xcodeproj/project.pbxproj | 483 +++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../client/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 ++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ .../ios/Runner/Base.lproj/Main.storyboard | 26 + code_sharing/client/ios/Runner/Info.plist | 51 ++ .../ios/Runner/Runner-Bridging-Header.h | 1 + code_sharing/client/lib/main.dart | 141 +++++ code_sharing/client/linux/.gitignore | 1 + code_sharing/client/linux/CMakeLists.txt | 138 +++++ .../client/linux/flutter/CMakeLists.txt | 88 +++ .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + .../linux/flutter/generated_plugins.cmake | 23 + code_sharing/client/linux/main.cc | 6 + code_sharing/client/linux/my_application.cc | 104 ++++ code_sharing/client/linux/my_application.h | 18 + code_sharing/client/macos/.gitignore | 7 + .../macos/Flutter/Flutter-Debug.xcconfig | 1 + .../macos/Flutter/Flutter-Release.xcconfig | 1 + .../Flutter/GeneratedPluginRegistrant.swift | 10 + .../macos/Runner.xcodeproj/project.pbxproj | 573 ++++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../client/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 +++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 +++++++++++ .../macos/Runner/Configs/AppInfo.xcconfig | 14 + .../macos/Runner/Configs/Debug.xcconfig | 2 + .../macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 14 + code_sharing/client/macos/Runner/Info.plist | 32 + .../macos/Runner/MainFlutterWindow.swift | 15 + .../client/macos/Runner/Release.entitlements | 8 + code_sharing/client/pubspec.yaml | 23 + code_sharing/client/test/widget_test.dart | 15 + code_sharing/client/web/favicon.png | Bin 0 -> 917 bytes code_sharing/client/web/icons/Icon-192.png | Bin 0 -> 5292 bytes code_sharing/client/web/icons/Icon-512.png | Bin 0 -> 8252 bytes .../client/web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes .../client/web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes code_sharing/client/web/index.html | 59 ++ code_sharing/client/web/manifest.json | 35 ++ code_sharing/client/windows/.gitignore | 17 + code_sharing/client/windows/CMakeLists.txt | 101 +++ .../client/windows/flutter/CMakeLists.txt | 104 ++++ .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + .../windows/flutter/generated_plugins.cmake | 23 + .../client/windows/runner/CMakeLists.txt | 40 ++ code_sharing/client/windows/runner/Runner.rc | 121 ++++ .../client/windows/runner/flutter_window.cpp | 66 ++ .../client/windows/runner/flutter_window.h | 33 + code_sharing/client/windows/runner/main.cpp | 43 ++ code_sharing/client/windows/runner/resource.h | 16 + .../windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes .../client/windows/runner/runner.exe.manifest | 20 + code_sharing/client/windows/runner/utils.cpp | 64 ++ code_sharing/client/windows/runner/utils.h | 19 + .../client/windows/runner/win32_window.cpp | 288 +++++++++ .../client/windows/runner/win32_window.h | 102 ++++ code_sharing/docker-compose.yml | 11 + code_sharing/server/.dockerignore | 9 + code_sharing/server/.gitignore | 6 + code_sharing/server/CHANGELOG.md | 3 + code_sharing/server/Dockerfile | 20 + code_sharing/server/README.md | 49 ++ code_sharing/server/analysis_options.yaml | 30 + code_sharing/server/bin/server.dart | 36 ++ code_sharing/server/pubspec.yaml | 19 + code_sharing/server/shared/.gitignore | 10 + code_sharing/server/shared/CHANGELOG.md | 3 + code_sharing/server/shared/README.md | 39 ++ .../server/shared/analysis_options.yaml | 29 + code_sharing/server/shared/lib/shared.dart | 4 + .../server/shared/lib/src/models.dart | 19 + .../server/shared/lib/src/models.freezed.dart | 271 +++++++++ .../server/shared/lib/src/models.g.dart | 24 + code_sharing/server/shared/pubspec.yaml | 17 + .../server/shared/test/shared_test.dart | 17 + code_sharing/server/test/server_test.dart | 50 ++ tool/flutter_ci_script_beta.sh | 3 + tool/flutter_ci_script_master.sh | 4 +- tool/flutter_ci_script_stable.sh | 2 + web/samples_index/lib/src/samples.yaml | 18 + web/samples_index/web/images/code_sharing.jpg | Bin 0 -> 114647 bytes 152 files changed, 5229 insertions(+), 1 deletion(-) create mode 100644 code_sharing/Makefile create mode 100644 code_sharing/README.md create mode 100644 code_sharing/client/.gitignore create mode 100644 code_sharing/client/.metadata create mode 100644 code_sharing/client/README.md create mode 100644 code_sharing/client/analysis_options.yaml create mode 100644 code_sharing/client/android/.gitignore create mode 100644 code_sharing/client/android/app/build.gradle create mode 100644 code_sharing/client/android/app/src/debug/AndroidManifest.xml create mode 100644 code_sharing/client/android/app/src/main/AndroidManifest.xml create mode 100644 code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt create mode 100644 code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 code_sharing/client/android/app/src/main/res/drawable/launch_background.xml create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 code_sharing/client/android/app/src/main/res/values-night/styles.xml create mode 100644 code_sharing/client/android/app/src/main/res/values/styles.xml create mode 100644 code_sharing/client/android/app/src/profile/AndroidManifest.xml create mode 100644 code_sharing/client/android/build.gradle create mode 100644 code_sharing/client/android/gradle.properties create mode 100644 code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 code_sharing/client/android/settings.gradle create mode 100644 code_sharing/client/ios/.gitignore create mode 100644 code_sharing/client/ios/Flutter/AppFrameworkInfo.plist create mode 100644 code_sharing/client/ios/Flutter/Debug.xcconfig create mode 100644 code_sharing/client/ios/Flutter/Release.xcconfig create mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.pbxproj create mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 code_sharing/client/ios/Runner/AppDelegate.swift create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 code_sharing/client/ios/Runner/Base.lproj/Main.storyboard create mode 100644 code_sharing/client/ios/Runner/Info.plist create mode 100644 code_sharing/client/ios/Runner/Runner-Bridging-Header.h create mode 100644 code_sharing/client/lib/main.dart create mode 100644 code_sharing/client/linux/.gitignore create mode 100644 code_sharing/client/linux/CMakeLists.txt create mode 100644 code_sharing/client/linux/flutter/CMakeLists.txt create mode 100644 code_sharing/client/linux/flutter/generated_plugin_registrant.cc create mode 100644 code_sharing/client/linux/flutter/generated_plugin_registrant.h create mode 100644 code_sharing/client/linux/flutter/generated_plugins.cmake create mode 100644 code_sharing/client/linux/main.cc create mode 100644 code_sharing/client/linux/my_application.cc create mode 100644 code_sharing/client/linux/my_application.h create mode 100644 code_sharing/client/macos/.gitignore create mode 100644 code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 code_sharing/client/macos/Flutter/Flutter-Release.xcconfig create mode 100644 code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 code_sharing/client/macos/Runner.xcodeproj/project.pbxproj create mode 100644 code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 code_sharing/client/macos/Runner/AppDelegate.swift create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 code_sharing/client/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 code_sharing/client/macos/Runner/Configs/Debug.xcconfig create mode 100644 code_sharing/client/macos/Runner/Configs/Release.xcconfig create mode 100644 code_sharing/client/macos/Runner/Configs/Warnings.xcconfig create mode 100644 code_sharing/client/macos/Runner/DebugProfile.entitlements create mode 100644 code_sharing/client/macos/Runner/Info.plist create mode 100644 code_sharing/client/macos/Runner/MainFlutterWindow.swift create mode 100644 code_sharing/client/macos/Runner/Release.entitlements create mode 100644 code_sharing/client/pubspec.yaml create mode 100644 code_sharing/client/test/widget_test.dart create mode 100644 code_sharing/client/web/favicon.png create mode 100644 code_sharing/client/web/icons/Icon-192.png create mode 100644 code_sharing/client/web/icons/Icon-512.png create mode 100644 code_sharing/client/web/icons/Icon-maskable-192.png create mode 100644 code_sharing/client/web/icons/Icon-maskable-512.png create mode 100644 code_sharing/client/web/index.html create mode 100644 code_sharing/client/web/manifest.json create mode 100644 code_sharing/client/windows/.gitignore create mode 100644 code_sharing/client/windows/CMakeLists.txt create mode 100644 code_sharing/client/windows/flutter/CMakeLists.txt create mode 100644 code_sharing/client/windows/flutter/generated_plugin_registrant.cc create mode 100644 code_sharing/client/windows/flutter/generated_plugin_registrant.h create mode 100644 code_sharing/client/windows/flutter/generated_plugins.cmake create mode 100644 code_sharing/client/windows/runner/CMakeLists.txt create mode 100644 code_sharing/client/windows/runner/Runner.rc create mode 100644 code_sharing/client/windows/runner/flutter_window.cpp create mode 100644 code_sharing/client/windows/runner/flutter_window.h create mode 100644 code_sharing/client/windows/runner/main.cpp create mode 100644 code_sharing/client/windows/runner/resource.h create mode 100644 code_sharing/client/windows/runner/resources/app_icon.ico create mode 100644 code_sharing/client/windows/runner/runner.exe.manifest create mode 100644 code_sharing/client/windows/runner/utils.cpp create mode 100644 code_sharing/client/windows/runner/utils.h create mode 100644 code_sharing/client/windows/runner/win32_window.cpp create mode 100644 code_sharing/client/windows/runner/win32_window.h create mode 100644 code_sharing/docker-compose.yml create mode 100644 code_sharing/server/.dockerignore create mode 100644 code_sharing/server/.gitignore create mode 100644 code_sharing/server/CHANGELOG.md create mode 100644 code_sharing/server/Dockerfile create mode 100644 code_sharing/server/README.md create mode 100644 code_sharing/server/analysis_options.yaml create mode 100644 code_sharing/server/bin/server.dart create mode 100644 code_sharing/server/pubspec.yaml create mode 100644 code_sharing/server/shared/.gitignore create mode 100644 code_sharing/server/shared/CHANGELOG.md create mode 100644 code_sharing/server/shared/README.md create mode 100644 code_sharing/server/shared/analysis_options.yaml create mode 100644 code_sharing/server/shared/lib/shared.dart create mode 100644 code_sharing/server/shared/lib/src/models.dart create mode 100644 code_sharing/server/shared/lib/src/models.freezed.dart create mode 100644 code_sharing/server/shared/lib/src/models.g.dart create mode 100644 code_sharing/server/shared/pubspec.yaml create mode 100644 code_sharing/server/shared/test/shared_test.dart create mode 100644 code_sharing/server/test/server_test.dart create mode 100644 web/samples_index/web/images/code_sharing.jpg diff --git a/code_sharing/Makefile b/code_sharing/Makefile new file mode 100644 index 000000000..faf874bbe --- /dev/null +++ b/code_sharing/Makefile @@ -0,0 +1,24 @@ +# MacOS/Linux-only. Sadly, this is only helpful as documentation for Windows. + +# LOCAL / DOCKER +run-server: + # Depends on `make build` + docker-compose up -d + +stop-server: + docker-compose stop + +# Flutter +flutter-local: + cd client && flutter run -d macos + +test: + (cd shared && dart test) + (cd server && dart test) + (cd client && flutter test) + +# Docker +build: + (cd server && flutter pub get) + docker build ./server -t codesharingserver -f server/Dockerfile + diff --git a/code_sharing/README.md b/code_sharing/README.md new file mode 100644 index 000000000..5c7187357 --- /dev/null +++ b/code_sharing/README.md @@ -0,0 +1,191 @@ + +# Code Sharing + + + +A full-stack Dart application using Flutter on the client and +[`shelf`](https://pub.dev/packages/shelf) on the server. The Flutter app +itself is still the counter app, but the actual number is stored on the server +and incremented over HTTP using transport data classes understood by both the +Flutter client and shelf server. + +## Goals + +The goal of this sample is to demonstrate the mechanics of sharing business +logic between a Flutter client and a Dart server. The sample also includes a +slightly modified Dockerfile which is required to build a Docker image from +a Dart app containing nested packages. + +## Project Structure + +The sample's project structure is as follows: + +``` +code_sharing/ + # Flutter app + client/ + lib/ + ... + pubspec.yaml + ... + # Shelf + server/ + bin/ + server.dart + # Common business logic + shared/ + pubspec.yaml + lib/ + ... + pubspec.yaml + Dockerfile +``` + +## Recreating this on your own + +Recreating this introductory project for yourself can be done in several steps. + +1. Create a parent directory, likely sharing a name with your project or +product, which will contain everything. +2. Within that directory, run `flutter create client`. You may also name this +Flutter project `app`, `mobile`, `-app` or anything else that +seems appropriate. At this point, your folder structure should look like this: + ``` + my_project/ + client/ + lib/ + main.dart + pubspec.yaml + ... + ``` +3. From the same location where you ran `flutter create`, run +`dart create -t server-shelf server`. You may also name this Shelf project, +`backend`, `api`, `-server`, or anything else that seems +appropriate. At this point, your folder structure should look like this: + ``` + my_project/ + client/ + lib/ + main.dart + pubspec.yaml + ... + server/ + bin/ + server.dart + Dockerfile + pubspec.yaml + ... + ``` +4. Enter your server directory (`cd server`), and run `dart create -t package shared`. +You may also name this package `common`, `domain`, `-shared`, or +anything else that seems appropriate. At this point, your folder structure should +resemble the sample: + ``` + my_project/ + client/ + lib/ + main.dart + pubspec.yaml + ... + server/ + bin/ + server.dart + shared/ + lib/ + src/ + ... + shared.dart + pubspec.yaml + ... + Dockerfile + pubspec.yaml + ... + ``` +5. Next, begin granting access to your shared code by making the following +edits to your Flutter app's `pubspec.yaml` file. Open that file +(`client/pubspec.yaml`) and add the following dependency under the +`dependencies` block: + + ``` + dependencies: + # Add these two lines: + shared: + path: ../server/shared + ``` +6. Next, finish granting access to your shared code by making the following +edits to your server's `pubspec.yaml` file. Open that file +(`server/pubspec.yaml`) and add the following dependency under the +`dependencies` block: + + ``` + dependencies: + # Add these two lines: + shared: + path: ./shared + ``` +7. The final step is to adjust your `Dockerfile`, as it can no longer +successfully run `dart pub get` after only copying over the `pubspec.yaml` +file (that command now requires the entirety of your `shared` directory to be +present. + +- Find the line that says `COPY pubspec.* ./`, and change it to `COPY . .`. + +With that, you're ready to build and run the app. + +## Running the sample + +To run the sample, or an equivalent you've reconstructed yourself, choose a +runtime method below based on your needs. + +### From the CLI + +In one terminal window, run the following commands: + +```sh +cd my_project/server +dart run bin/server.dart +``` + +In a separate terminal window, run the following commands: + +```sh +cd my_project/client +flutter run +``` + +> Note: If you named your mobile client and backend servers something other +than `client` and `server`, you will need to substitute in those values above. + +### Build and run with Docker + +To build your server's Docker image, run the following commands in a terminal +window: + +```sh +cd my_project/server +docker build . -t my_project_server +``` + +To run that image as a Docker container, run the following commands in a +terminal window: + +```sh +docker run -it my_project_server +``` + +### Build and run with `docker-compose` + +If you have [`docker-compose`](https://docs.docker.com/compose/install/) +installed on your machine, you can run the following command to build and +launch your server: + +```sh +cd my_project +docker-compose up -d +``` + +And then later stop the server with: + +```sh +docker-compose stop +``` \ No newline at end of file diff --git a/code_sharing/client/.gitignore b/code_sharing/client/.gitignore new file mode 100644 index 000000000..24476c5d1 --- /dev/null +++ b/code_sharing/client/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/code_sharing/client/.metadata b/code_sharing/client/.metadata new file mode 100644 index 000000000..bf169f91c --- /dev/null +++ b/code_sharing/client/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + channel: main + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: android + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: ios + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: linux + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: macos + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: web + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + - platform: windows + create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/code_sharing/client/README.md b/code_sharing/client/README.md new file mode 100644 index 000000000..2a43b574c --- /dev/null +++ b/code_sharing/client/README.md @@ -0,0 +1,16 @@ +# client + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/code_sharing/client/analysis_options.yaml b/code_sharing/client/analysis_options.yaml new file mode 100644 index 000000000..61b6c4de1 --- /dev/null +++ b/code_sharing/client/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/code_sharing/client/android/.gitignore b/code_sharing/client/android/.gitignore new file mode 100644 index 000000000..6f568019d --- /dev/null +++ b/code_sharing/client/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/code_sharing/client/android/app/build.gradle b/code_sharing/client/android/app/build.gradle new file mode 100644 index 000000000..9f91be9f6 --- /dev/null +++ b/code_sharing/client/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.client" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/code_sharing/client/android/app/src/debug/AndroidManifest.xml b/code_sharing/client/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..3ddafc529 --- /dev/null +++ b/code_sharing/client/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/code_sharing/client/android/app/src/main/AndroidManifest.xml b/code_sharing/client/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..fc7c7bda5 --- /dev/null +++ b/code_sharing/client/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt b/code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt new file mode 100644 index 000000000..a467eb774 --- /dev/null +++ b/code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.client + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml b/code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/code_sharing/client/android/app/src/main/res/drawable/launch_background.xml b/code_sharing/client/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/code_sharing/client/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/code_sharing/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/code_sharing/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/code_sharing/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/code_sharing/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/code_sharing/client/android/app/src/main/res/values-night/styles.xml b/code_sharing/client/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/code_sharing/client/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/code_sharing/client/android/app/src/main/res/values/styles.xml b/code_sharing/client/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/code_sharing/client/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/code_sharing/client/android/app/src/profile/AndroidManifest.xml b/code_sharing/client/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..3ddafc529 --- /dev/null +++ b/code_sharing/client/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/code_sharing/client/android/build.gradle b/code_sharing/client/android/build.gradle new file mode 100644 index 000000000..58a8c74b1 --- /dev/null +++ b/code_sharing/client/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.7.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.2.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/code_sharing/client/android/gradle.properties b/code_sharing/client/android/gradle.properties new file mode 100644 index 000000000..94adc3a3f --- /dev/null +++ b/code_sharing/client/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties b/code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..3c472b99c --- /dev/null +++ b/code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/code_sharing/client/android/settings.gradle b/code_sharing/client/android/settings.gradle new file mode 100644 index 000000000..44e62bcf0 --- /dev/null +++ b/code_sharing/client/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/code_sharing/client/ios/.gitignore b/code_sharing/client/ios/.gitignore new file mode 100644 index 000000000..7a7f9873a --- /dev/null +++ b/code_sharing/client/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/code_sharing/client/ios/Flutter/AppFrameworkInfo.plist b/code_sharing/client/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..9625e105d --- /dev/null +++ b/code_sharing/client/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/code_sharing/client/ios/Flutter/Debug.xcconfig b/code_sharing/client/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/code_sharing/client/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/code_sharing/client/ios/Flutter/Release.xcconfig b/code_sharing/client/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/code_sharing/client/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.pbxproj b/code_sharing/client/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..42204d380 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,483 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.client; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.client; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.client; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..c87d15a33 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata b/code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/code_sharing/client/ios/Runner/AppDelegate.swift b/code_sharing/client/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..70693e4a8 --- /dev/null +++ b/code_sharing/client/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..0bedcf2fd --- /dev/null +++ b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard b/code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/ios/Runner/Base.lproj/Main.storyboard b/code_sharing/client/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/code_sharing/client/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/ios/Runner/Info.plist b/code_sharing/client/ios/Runner/Info.plist new file mode 100644 index 000000000..e68305132 --- /dev/null +++ b/code_sharing/client/ios/Runner/Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Client + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + client + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/code_sharing/client/ios/Runner/Runner-Bridging-Header.h b/code_sharing/client/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/code_sharing/client/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/code_sharing/client/lib/main.dart b/code_sharing/client/lib/main.dart new file mode 100644 index 000000000..e96b52fc9 --- /dev/null +++ b/code_sharing/client/lib/main.dart @@ -0,0 +1,141 @@ +import 'dart:convert'; +import 'dart:io'; +import 'package:http/http.dart' as http; +import 'package:shared/shared.dart'; +import 'package:flutter/material.dart'; + +final port = Platform.environment['PORT'] ?? '8080'; +final host = Platform.environment['SERVER_URL'] ?? '127.0.0.1'; +final scheme = Platform.environment['SERVER_SCHEME'] ?? 'http'; +final serverUrl = Uri.parse('$scheme://$host:$port/'); + +void main() { + runApp( + const MyApp( + getCount: getCount, + increment: increment, + ), + ); +} + +class MyApp extends StatelessWidget { + const MyApp({ + super.key, + required this.getCount, + required this.increment, + }); + + final Future Function() getCount; + final Future Function(int) increment; + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + primarySwatch: Colors.blue, + ), + home: MyHomePage( + title: 'Flutter Demo Home Page', + getCount: getCount, + increment: increment, + ), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({ + super.key, + required this.title, + required this.getCount, + required this.increment, + }); + + final String title; + final Future Function() getCount; + final Future Function(int) increment; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + int _counter = 0; + int localClicks = 0; + bool isWriting = false; + + @override + void initState() { + super.initState(); + widget.getCount().then((int val) => _counter = val); + } + + void _incrementCounter() { + localClicks += 1; + setState(() => isWriting = true); + widget.increment(localClicks).then( + (int val) => setState( + () { + _counter = val; + isWriting = true; + }, + ), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(widget.title), + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'You have pushed the button this many times:', + style: TextStyle(fontSize: 20), + ), + Text( + '$_counter', + style: Theme.of(context).textTheme.headlineMedium, + ), + if (isWriting) ...[ + const SizedBox(height: 10), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: const [ + Text( + 'Communicating with server...', + style: TextStyle(fontSize: 32, color: Colors.blue), + ), + SizedBox(width: 10), + CircularProgressIndicator.adaptive(), + ], + ), + ], + ], + ), + ), + floatingActionButton: FloatingActionButton( + onPressed: _incrementCounter, + tooltip: 'Increment', + child: const Icon(Icons.add), + ), + ); + } +} + +Future getCount() async { + return http + .get(serverUrl) + .then((resp) => Count.fromJson(json.decode(resp.body)).value); +} + +Future increment(int by) async { + return http + .post(serverUrl, body: json.encode(Increment(by: by).toJson())) + .then((resp) => Count.fromJson(json.decode(resp.body)).value); +} diff --git a/code_sharing/client/linux/.gitignore b/code_sharing/client/linux/.gitignore new file mode 100644 index 000000000..d3896c984 --- /dev/null +++ b/code_sharing/client/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/code_sharing/client/linux/CMakeLists.txt b/code_sharing/client/linux/CMakeLists.txt new file mode 100644 index 000000000..4d47043c4 --- /dev/null +++ b/code_sharing/client/linux/CMakeLists.txt @@ -0,0 +1,138 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "client") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.client") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/code_sharing/client/linux/flutter/CMakeLists.txt b/code_sharing/client/linux/flutter/CMakeLists.txt new file mode 100644 index 000000000..d5bd01648 --- /dev/null +++ b/code_sharing/client/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/code_sharing/client/linux/flutter/generated_plugin_registrant.cc b/code_sharing/client/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 000000000..e71a16d23 --- /dev/null +++ b/code_sharing/client/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void fl_register_plugins(FlPluginRegistry* registry) { +} diff --git a/code_sharing/client/linux/flutter/generated_plugin_registrant.h b/code_sharing/client/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 000000000..e0f0a47bc --- /dev/null +++ b/code_sharing/client/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/code_sharing/client/linux/flutter/generated_plugins.cmake b/code_sharing/client/linux/flutter/generated_plugins.cmake new file mode 100644 index 000000000..2e1de87a7 --- /dev/null +++ b/code_sharing/client/linux/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/code_sharing/client/linux/main.cc b/code_sharing/client/linux/main.cc new file mode 100644 index 000000000..e7c5c5437 --- /dev/null +++ b/code_sharing/client/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/code_sharing/client/linux/my_application.cc b/code_sharing/client/linux/my_application.cc new file mode 100644 index 000000000..2ba2836d2 --- /dev/null +++ b/code_sharing/client/linux/my_application.cc @@ -0,0 +1,104 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "client"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "client"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/code_sharing/client/linux/my_application.h b/code_sharing/client/linux/my_application.h new file mode 100644 index 000000000..72271d5e4 --- /dev/null +++ b/code_sharing/client/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/code_sharing/client/macos/.gitignore b/code_sharing/client/macos/.gitignore new file mode 100644 index 000000000..746adbb6b --- /dev/null +++ b/code_sharing/client/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig b/code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 000000000..c2efd0b60 --- /dev/null +++ b/code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/code_sharing/client/macos/Flutter/Flutter-Release.xcconfig b/code_sharing/client/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 000000000..c2efd0b60 --- /dev/null +++ b/code_sharing/client/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift b/code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 000000000..cccf817a5 --- /dev/null +++ b/code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,10 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { +} diff --git a/code_sharing/client/macos/Runner.xcodeproj/project.pbxproj b/code_sharing/client/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..85d410774 --- /dev/null +++ b/code_sharing/client/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,573 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "client.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* client.app */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* client.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..1f21100e6 --- /dev/null +++ b/code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata b/code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/code_sharing/client/macos/Runner/AppDelegate.swift b/code_sharing/client/macos/Runner/AppDelegate.swift new file mode 100644 index 000000000..d53ef6437 --- /dev/null +++ b/code_sharing/client/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..a2ec33f19 --- /dev/null +++ b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + +

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 Date: Fri, 7 Oct 2022 21:19:48 +1000 Subject: [PATCH 015/134] Bump github/codeql-action from 2.1.26 to 2.1.27 (#1465) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.26 to 2.1.27. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/e0e5ded33cabb451ae0a9768fc7b0410bad9ad44...807578363a7869ca324a79039e6db9c843e0e100) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index d1efa78c2..fe5aa872e 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@e0e5ded33cabb451ae0a9768fc7b0410bad9ad44 + uses: github/codeql-action/upload-sarif@807578363a7869ca324a79039e6db9c843e0e100 with: sarif_file: results.sarif From bfba783bc783bc637d88c345f74eeb900566d751 Mon Sep 17 00:00:00 2001 From: Filip Hracek Date: Fri, 7 Oct 2022 13:24:17 +0200 Subject: [PATCH 016/134] Upgrade audioplayers to latest (#1462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Upgrade audioplayers to latest There have been some important fixes recently. This fixes #1315. Also, a fly-by upgrade of two other dependencies. * Delete .gitignore “heading” --- game_template/.gitignore | 3 --- game_template/pubspec.yaml | 6 +++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/game_template/.gitignore b/game_template/.gitignore index a10187af6..cab51fb03 100644 --- a/game_template/.gitignore +++ b/game_template/.gitignore @@ -32,9 +32,6 @@ /build/ .fvm/ -# Web related -lib/generated_plugin_registrant.dart - # Symbolication related app.*.symbols diff --git a/game_template/pubspec.yaml b/game_template/pubspec.yaml index 096a96a1b..61966c7da 100644 --- a/game_template/pubspec.yaml +++ b/game_template/pubspec.yaml @@ -13,10 +13,10 @@ dependencies: flutter: sdk: flutter - audioplayers: ^1.0.1 + audioplayers: ^1.1.0 cupertino_icons: ^1.0.2 - go_router: ^4.4.1 - logging: ^1.0.2 + go_router: ^5.0.5 + logging: ^1.1.0 provider: ^6.0.2 shared_preferences: ^2.0.13 From dc50c46ef13c08feb4e4b588101ca70acf840305 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Sat, 8 Oct 2022 08:26:40 +1100 Subject: [PATCH 017/134] Revert "Add code sharing sample (#1444)" (#1464) This reverts commit fc6222ebc88ca7ae9598e7c2cb8062d81a54a110. --- code_sharing/Makefile | 24 - code_sharing/README.md | 191 ------ code_sharing/client/.gitignore | 44 -- code_sharing/client/.metadata | 45 -- code_sharing/client/README.md | 16 - code_sharing/client/analysis_options.yaml | 29 - code_sharing/client/android/.gitignore | 13 - code_sharing/client/android/app/build.gradle | 71 --- .../android/app/src/debug/AndroidManifest.xml | 8 - .../android/app/src/main/AndroidManifest.xml | 34 -- .../kotlin/com/example/client/MainActivity.kt | 6 - .../res/drawable-v21/launch_background.xml | 12 - .../main/res/drawable/launch_background.xml | 12 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 0 bytes .../app/src/main/res/values-night/styles.xml | 18 - .../app/src/main/res/values/styles.xml | 18 - .../app/src/profile/AndroidManifest.xml | 8 - code_sharing/client/android/build.gradle | 31 - code_sharing/client/android/gradle.properties | 3 - .../gradle/wrapper/gradle-wrapper.properties | 5 - code_sharing/client/android/settings.gradle | 11 - code_sharing/client/ios/.gitignore | 34 -- .../client/ios/Flutter/AppFrameworkInfo.plist | 26 - .../client/ios/Flutter/Debug.xcconfig | 1 - .../client/ios/Flutter/Release.xcconfig | 1 - .../ios/Runner.xcodeproj/project.pbxproj | 483 --------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../client/ios/Runner/AppDelegate.swift | 13 - .../AppIcon.appiconset/Contents.json | 122 ---- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 295 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 406 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 450 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 282 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 462 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 704 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 406 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 586 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 862 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 862 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 1674 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 762 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 1226 -> 0 bytes .../Icon-App-83.5x83.5@2x.png | Bin 1418 -> 0 bytes .../LaunchImage.imageset/Contents.json | 23 - .../LaunchImage.imageset/LaunchImage.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/README.md | 5 - .../Runner/Base.lproj/LaunchScreen.storyboard | 37 -- .../ios/Runner/Base.lproj/Main.storyboard | 26 - code_sharing/client/ios/Runner/Info.plist | 51 -- .../ios/Runner/Runner-Bridging-Header.h | 1 - code_sharing/client/lib/main.dart | 141 ----- code_sharing/client/linux/.gitignore | 1 - code_sharing/client/linux/CMakeLists.txt | 138 ----- .../client/linux/flutter/CMakeLists.txt | 88 --- .../flutter/generated_plugin_registrant.cc | 11 - .../flutter/generated_plugin_registrant.h | 15 - .../linux/flutter/generated_plugins.cmake | 23 - code_sharing/client/linux/main.cc | 6 - code_sharing/client/linux/my_application.cc | 104 ---- code_sharing/client/linux/my_application.h | 18 - code_sharing/client/macos/.gitignore | 7 - .../macos/Flutter/Flutter-Debug.xcconfig | 1 - .../macos/Flutter/Flutter-Release.xcconfig | 1 - .../Flutter/GeneratedPluginRegistrant.swift | 10 - .../macos/Runner.xcodeproj/project.pbxproj | 573 ------------------ .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../client/macos/Runner/AppDelegate.swift | 9 - .../AppIcon.appiconset/Contents.json | 68 --- .../AppIcon.appiconset/app_icon_1024.png | Bin 102994 -> 0 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 5680 -> 0 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 520 -> 0 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 14142 -> 0 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 1066 -> 0 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 36406 -> 0 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 2218 -> 0 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 ----------- .../macos/Runner/Configs/AppInfo.xcconfig | 14 - .../macos/Runner/Configs/Debug.xcconfig | 2 - .../macos/Runner/Configs/Release.xcconfig | 2 - .../macos/Runner/Configs/Warnings.xcconfig | 13 - .../macos/Runner/DebugProfile.entitlements | 14 - code_sharing/client/macos/Runner/Info.plist | 32 - .../macos/Runner/MainFlutterWindow.swift | 15 - .../client/macos/Runner/Release.entitlements | 8 - code_sharing/client/pubspec.yaml | 23 - code_sharing/client/test/widget_test.dart | 15 - code_sharing/client/web/favicon.png | Bin 917 -> 0 bytes code_sharing/client/web/icons/Icon-192.png | Bin 5292 -> 0 bytes code_sharing/client/web/icons/Icon-512.png | Bin 8252 -> 0 bytes .../client/web/icons/Icon-maskable-192.png | Bin 5594 -> 0 bytes .../client/web/icons/Icon-maskable-512.png | Bin 20998 -> 0 bytes code_sharing/client/web/index.html | 59 -- code_sharing/client/web/manifest.json | 35 -- code_sharing/client/windows/.gitignore | 17 - code_sharing/client/windows/CMakeLists.txt | 101 --- .../client/windows/flutter/CMakeLists.txt | 104 ---- .../flutter/generated_plugin_registrant.cc | 11 - .../flutter/generated_plugin_registrant.h | 15 - .../windows/flutter/generated_plugins.cmake | 23 - .../client/windows/runner/CMakeLists.txt | 40 -- code_sharing/client/windows/runner/Runner.rc | 121 ---- .../client/windows/runner/flutter_window.cpp | 66 -- .../client/windows/runner/flutter_window.h | 33 - code_sharing/client/windows/runner/main.cpp | 43 -- code_sharing/client/windows/runner/resource.h | 16 - .../windows/runner/resources/app_icon.ico | Bin 33772 -> 0 bytes .../client/windows/runner/runner.exe.manifest | 20 - code_sharing/client/windows/runner/utils.cpp | 64 -- code_sharing/client/windows/runner/utils.h | 19 - .../client/windows/runner/win32_window.cpp | 288 --------- .../client/windows/runner/win32_window.h | 102 ---- code_sharing/docker-compose.yml | 11 - code_sharing/server/.dockerignore | 9 - code_sharing/server/.gitignore | 6 - code_sharing/server/CHANGELOG.md | 3 - code_sharing/server/Dockerfile | 20 - code_sharing/server/README.md | 49 -- code_sharing/server/analysis_options.yaml | 30 - code_sharing/server/bin/server.dart | 36 -- code_sharing/server/pubspec.yaml | 19 - code_sharing/server/shared/.gitignore | 10 - code_sharing/server/shared/CHANGELOG.md | 3 - code_sharing/server/shared/README.md | 39 -- .../server/shared/analysis_options.yaml | 29 - code_sharing/server/shared/lib/shared.dart | 4 - .../server/shared/lib/src/models.dart | 19 - .../server/shared/lib/src/models.freezed.dart | 271 --------- .../server/shared/lib/src/models.g.dart | 24 - code_sharing/server/shared/pubspec.yaml | 17 - .../server/shared/test/shared_test.dart | 17 - code_sharing/server/test/server_test.dart | 40 -- tool/flutter_ci_script_beta.sh | 3 - tool/flutter_ci_script_master.sh | 4 +- tool/flutter_ci_script_stable.sh | 2 - web/samples_index/lib/src/samples.yaml | 18 - web/samples_index/web/images/code_sharing.jpg | Bin 114647 -> 0 bytes 152 files changed, 1 insertion(+), 5219 deletions(-) delete mode 100644 code_sharing/Makefile delete mode 100644 code_sharing/README.md delete mode 100644 code_sharing/client/.gitignore delete mode 100644 code_sharing/client/.metadata delete mode 100644 code_sharing/client/README.md delete mode 100644 code_sharing/client/analysis_options.yaml delete mode 100644 code_sharing/client/android/.gitignore delete mode 100644 code_sharing/client/android/app/build.gradle delete mode 100644 code_sharing/client/android/app/src/debug/AndroidManifest.xml delete mode 100644 code_sharing/client/android/app/src/main/AndroidManifest.xml delete mode 100644 code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt delete mode 100644 code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml delete mode 100644 code_sharing/client/android/app/src/main/res/drawable/launch_background.xml delete mode 100644 code_sharing/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 code_sharing/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 code_sharing/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 code_sharing/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 code_sharing/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 code_sharing/client/android/app/src/main/res/values-night/styles.xml delete mode 100644 code_sharing/client/android/app/src/main/res/values/styles.xml delete mode 100644 code_sharing/client/android/app/src/profile/AndroidManifest.xml delete mode 100644 code_sharing/client/android/build.gradle delete mode 100644 code_sharing/client/android/gradle.properties delete mode 100644 code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 code_sharing/client/android/settings.gradle delete mode 100644 code_sharing/client/ios/.gitignore delete mode 100644 code_sharing/client/ios/Flutter/AppFrameworkInfo.plist delete mode 100644 code_sharing/client/ios/Flutter/Debug.xcconfig delete mode 100644 code_sharing/client/ios/Flutter/Release.xcconfig delete mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.pbxproj delete mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 code_sharing/client/ios/Runner/AppDelegate.swift delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png delete mode 100644 code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md delete mode 100644 code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard delete mode 100644 code_sharing/client/ios/Runner/Base.lproj/Main.storyboard delete mode 100644 code_sharing/client/ios/Runner/Info.plist delete mode 100644 code_sharing/client/ios/Runner/Runner-Bridging-Header.h delete mode 100644 code_sharing/client/lib/main.dart delete mode 100644 code_sharing/client/linux/.gitignore delete mode 100644 code_sharing/client/linux/CMakeLists.txt delete mode 100644 code_sharing/client/linux/flutter/CMakeLists.txt delete mode 100644 code_sharing/client/linux/flutter/generated_plugin_registrant.cc delete mode 100644 code_sharing/client/linux/flutter/generated_plugin_registrant.h delete mode 100644 code_sharing/client/linux/flutter/generated_plugins.cmake delete mode 100644 code_sharing/client/linux/main.cc delete mode 100644 code_sharing/client/linux/my_application.cc delete mode 100644 code_sharing/client/linux/my_application.h delete mode 100644 code_sharing/client/macos/.gitignore delete mode 100644 code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig delete mode 100644 code_sharing/client/macos/Flutter/Flutter-Release.xcconfig delete mode 100644 code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift delete mode 100644 code_sharing/client/macos/Runner.xcodeproj/project.pbxproj delete mode 100644 code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 code_sharing/client/macos/Runner/AppDelegate.swift delete mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png delete mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png delete mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png delete mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png delete mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png delete mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png delete mode 100644 code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png delete mode 100644 code_sharing/client/macos/Runner/Base.lproj/MainMenu.xib delete mode 100644 code_sharing/client/macos/Runner/Configs/AppInfo.xcconfig delete mode 100644 code_sharing/client/macos/Runner/Configs/Debug.xcconfig delete mode 100644 code_sharing/client/macos/Runner/Configs/Release.xcconfig delete mode 100644 code_sharing/client/macos/Runner/Configs/Warnings.xcconfig delete mode 100644 code_sharing/client/macos/Runner/DebugProfile.entitlements delete mode 100644 code_sharing/client/macos/Runner/Info.plist delete mode 100644 code_sharing/client/macos/Runner/MainFlutterWindow.swift delete mode 100644 code_sharing/client/macos/Runner/Release.entitlements delete mode 100644 code_sharing/client/pubspec.yaml delete mode 100644 code_sharing/client/test/widget_test.dart delete mode 100644 code_sharing/client/web/favicon.png delete mode 100644 code_sharing/client/web/icons/Icon-192.png delete mode 100644 code_sharing/client/web/icons/Icon-512.png delete mode 100644 code_sharing/client/web/icons/Icon-maskable-192.png delete mode 100644 code_sharing/client/web/icons/Icon-maskable-512.png delete mode 100644 code_sharing/client/web/index.html delete mode 100644 code_sharing/client/web/manifest.json delete mode 100644 code_sharing/client/windows/.gitignore delete mode 100644 code_sharing/client/windows/CMakeLists.txt delete mode 100644 code_sharing/client/windows/flutter/CMakeLists.txt delete mode 100644 code_sharing/client/windows/flutter/generated_plugin_registrant.cc delete mode 100644 code_sharing/client/windows/flutter/generated_plugin_registrant.h delete mode 100644 code_sharing/client/windows/flutter/generated_plugins.cmake delete mode 100644 code_sharing/client/windows/runner/CMakeLists.txt delete mode 100644 code_sharing/client/windows/runner/Runner.rc delete mode 100644 code_sharing/client/windows/runner/flutter_window.cpp delete mode 100644 code_sharing/client/windows/runner/flutter_window.h delete mode 100644 code_sharing/client/windows/runner/main.cpp delete mode 100644 code_sharing/client/windows/runner/resource.h delete mode 100644 code_sharing/client/windows/runner/resources/app_icon.ico delete mode 100644 code_sharing/client/windows/runner/runner.exe.manifest delete mode 100644 code_sharing/client/windows/runner/utils.cpp delete mode 100644 code_sharing/client/windows/runner/utils.h delete mode 100644 code_sharing/client/windows/runner/win32_window.cpp delete mode 100644 code_sharing/client/windows/runner/win32_window.h delete mode 100644 code_sharing/docker-compose.yml delete mode 100644 code_sharing/server/.dockerignore delete mode 100644 code_sharing/server/.gitignore delete mode 100644 code_sharing/server/CHANGELOG.md delete mode 100644 code_sharing/server/Dockerfile delete mode 100644 code_sharing/server/README.md delete mode 100644 code_sharing/server/analysis_options.yaml delete mode 100644 code_sharing/server/bin/server.dart delete mode 100644 code_sharing/server/pubspec.yaml delete mode 100644 code_sharing/server/shared/.gitignore delete mode 100644 code_sharing/server/shared/CHANGELOG.md delete mode 100644 code_sharing/server/shared/README.md delete mode 100644 code_sharing/server/shared/analysis_options.yaml delete mode 100644 code_sharing/server/shared/lib/shared.dart delete mode 100644 code_sharing/server/shared/lib/src/models.dart delete mode 100644 code_sharing/server/shared/lib/src/models.freezed.dart delete mode 100644 code_sharing/server/shared/lib/src/models.g.dart delete mode 100644 code_sharing/server/shared/pubspec.yaml delete mode 100644 code_sharing/server/shared/test/shared_test.dart delete mode 100644 code_sharing/server/test/server_test.dart delete mode 100644 web/samples_index/web/images/code_sharing.jpg diff --git a/code_sharing/Makefile b/code_sharing/Makefile deleted file mode 100644 index faf874bbe..000000000 --- a/code_sharing/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# MacOS/Linux-only. Sadly, this is only helpful as documentation for Windows. - -# LOCAL / DOCKER -run-server: - # Depends on `make build` - docker-compose up -d - -stop-server: - docker-compose stop - -# Flutter -flutter-local: - cd client && flutter run -d macos - -test: - (cd shared && dart test) - (cd server && dart test) - (cd client && flutter test) - -# Docker -build: - (cd server && flutter pub get) - docker build ./server -t codesharingserver -f server/Dockerfile - diff --git a/code_sharing/README.md b/code_sharing/README.md deleted file mode 100644 index 5c7187357..000000000 --- a/code_sharing/README.md +++ /dev/null @@ -1,191 +0,0 @@ - -# Code Sharing - - - -A full-stack Dart application using Flutter on the client and -[`shelf`](https://pub.dev/packages/shelf) on the server. The Flutter app -itself is still the counter app, but the actual number is stored on the server -and incremented over HTTP using transport data classes understood by both the -Flutter client and shelf server. - -## Goals - -The goal of this sample is to demonstrate the mechanics of sharing business -logic between a Flutter client and a Dart server. The sample also includes a -slightly modified Dockerfile which is required to build a Docker image from -a Dart app containing nested packages. - -## Project Structure - -The sample's project structure is as follows: - -``` -code_sharing/ - # Flutter app - client/ - lib/ - ... - pubspec.yaml - ... - # Shelf - server/ - bin/ - server.dart - # Common business logic - shared/ - pubspec.yaml - lib/ - ... - pubspec.yaml - Dockerfile -``` - -## Recreating this on your own - -Recreating this introductory project for yourself can be done in several steps. - -1. Create a parent directory, likely sharing a name with your project or -product, which will contain everything. -2. Within that directory, run `flutter create client`. You may also name this -Flutter project `app`, `mobile`, `-app` or anything else that -seems appropriate. At this point, your folder structure should look like this: - ``` - my_project/ - client/ - lib/ - main.dart - pubspec.yaml - ... - ``` -3. From the same location where you ran `flutter create`, run -`dart create -t server-shelf server`. You may also name this Shelf project, -`backend`, `api`, `-server`, or anything else that seems -appropriate. At this point, your folder structure should look like this: - ``` - my_project/ - client/ - lib/ - main.dart - pubspec.yaml - ... - server/ - bin/ - server.dart - Dockerfile - pubspec.yaml - ... - ``` -4. Enter your server directory (`cd server`), and run `dart create -t package shared`. -You may also name this package `common`, `domain`, `-shared`, or -anything else that seems appropriate. At this point, your folder structure should -resemble the sample: - ``` - my_project/ - client/ - lib/ - main.dart - pubspec.yaml - ... - server/ - bin/ - server.dart - shared/ - lib/ - src/ - ... - shared.dart - pubspec.yaml - ... - Dockerfile - pubspec.yaml - ... - ``` -5. Next, begin granting access to your shared code by making the following -edits to your Flutter app's `pubspec.yaml` file. Open that file -(`client/pubspec.yaml`) and add the following dependency under the -`dependencies` block: - - ``` - dependencies: - # Add these two lines: - shared: - path: ../server/shared - ``` -6. Next, finish granting access to your shared code by making the following -edits to your server's `pubspec.yaml` file. Open that file -(`server/pubspec.yaml`) and add the following dependency under the -`dependencies` block: - - ``` - dependencies: - # Add these two lines: - shared: - path: ./shared - ``` -7. The final step is to adjust your `Dockerfile`, as it can no longer -successfully run `dart pub get` after only copying over the `pubspec.yaml` -file (that command now requires the entirety of your `shared` directory to be -present. - -- Find the line that says `COPY pubspec.* ./`, and change it to `COPY . .`. - -With that, you're ready to build and run the app. - -## Running the sample - -To run the sample, or an equivalent you've reconstructed yourself, choose a -runtime method below based on your needs. - -### From the CLI - -In one terminal window, run the following commands: - -```sh -cd my_project/server -dart run bin/server.dart -``` - -In a separate terminal window, run the following commands: - -```sh -cd my_project/client -flutter run -``` - -> Note: If you named your mobile client and backend servers something other -than `client` and `server`, you will need to substitute in those values above. - -### Build and run with Docker - -To build your server's Docker image, run the following commands in a terminal -window: - -```sh -cd my_project/server -docker build . -t my_project_server -``` - -To run that image as a Docker container, run the following commands in a -terminal window: - -```sh -docker run -it my_project_server -``` - -### Build and run with `docker-compose` - -If you have [`docker-compose`](https://docs.docker.com/compose/install/) -installed on your machine, you can run the following command to build and -launch your server: - -```sh -cd my_project -docker-compose up -d -``` - -And then later stop the server with: - -```sh -docker-compose stop -``` \ No newline at end of file diff --git a/code_sharing/client/.gitignore b/code_sharing/client/.gitignore deleted file mode 100644 index 24476c5d1..000000000 --- a/code_sharing/client/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ -migrate_working_dir/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/code_sharing/client/.metadata b/code_sharing/client/.metadata deleted file mode 100644 index bf169f91c..000000000 --- a/code_sharing/client/.metadata +++ /dev/null @@ -1,45 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled. - -version: - revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - channel: main - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - - platform: android - create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - - platform: ios - create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - - platform: linux - create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - - platform: macos - create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - - platform: web - create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - - platform: windows - create_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - base_revision: f16fe11ecf81a85d926ea3817ba1c87bdbbefa41 - - # User provided section - - # List of Local paths (relative to this file) that should be - # ignored by the migrate tool. - # - # Files that are not part of the templates will be ignored by default. - unmanaged_files: - - 'lib/main.dart' - - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/code_sharing/client/README.md b/code_sharing/client/README.md deleted file mode 100644 index 2a43b574c..000000000 --- a/code_sharing/client/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# client - -A new Flutter project. - -## Getting Started - -This project is a starting point for a Flutter application. - -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) - -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, -samples, guidance on mobile development, and a full API reference. diff --git a/code_sharing/client/analysis_options.yaml b/code_sharing/client/analysis_options.yaml deleted file mode 100644 index 61b6c4de1..000000000 --- a/code_sharing/client/analysis_options.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# This file configures the analyzer, which statically analyzes Dart code to -# check for errors, warnings, and lints. -# -# The issues identified by the analyzer are surfaced in the UI of Dart-enabled -# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be -# invoked from the command line by running `flutter analyze`. - -# The following line activates a set of recommended lints for Flutter apps, -# packages, and plugins designed to encourage good coding practices. -include: package:flutter_lints/flutter.yaml - -linter: - # The lint rules applied to this project can be customized in the - # section below to disable rules from the `package:flutter_lints/flutter.yaml` - # included above or to enable additional rules. A list of all available lints - # and their documentation is published at - # https://dart-lang.github.io/linter/lints/index.html. - # - # Instead of disabling a lint rule for the entire project in the - # section below, it can also be suppressed for a single line of code - # or a specific dart file by using the `// ignore: name_of_lint` and - # `// ignore_for_file: name_of_lint` syntax on the line or in the file - # producing the lint. - rules: - # avoid_print: false # Uncomment to disable the `avoid_print` rule - # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule - -# Additional information about this file can be found at -# https://dart.dev/guides/language/analysis-options diff --git a/code_sharing/client/android/.gitignore b/code_sharing/client/android/.gitignore deleted file mode 100644 index 6f568019d..000000000 --- a/code_sharing/client/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/code_sharing/client/android/app/build.gradle b/code_sharing/client/android/app/build.gradle deleted file mode 100644 index 9f91be9f6..000000000 --- a/code_sharing/client/android/app/build.gradle +++ /dev/null @@ -1,71 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.client" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/code_sharing/client/android/app/src/debug/AndroidManifest.xml b/code_sharing/client/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 3ddafc529..000000000 --- a/code_sharing/client/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/code_sharing/client/android/app/src/main/AndroidManifest.xml b/code_sharing/client/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index fc7c7bda5..000000000 --- a/code_sharing/client/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - diff --git a/code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt b/code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt deleted file mode 100644 index a467eb774..000000000 --- a/code_sharing/client/android/app/src/main/kotlin/com/example/client/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.client - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml b/code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f3f..000000000 --- a/code_sharing/client/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/code_sharing/client/android/app/src/main/res/drawable/launch_background.xml b/code_sharing/client/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f88..000000000 --- a/code_sharing/client/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/code_sharing/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/code_sharing/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/code_sharing/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/code_sharing/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/code_sharing/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eebdb28e45604e46eeda8dd24651419bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/code_sharing/client/android/app/src/main/res/values-night/styles.xml b/code_sharing/client/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be74..000000000 --- a/code_sharing/client/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/code_sharing/client/android/app/src/main/res/values/styles.xml b/code_sharing/client/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef8805..000000000 --- a/code_sharing/client/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/code_sharing/client/android/app/src/profile/AndroidManifest.xml b/code_sharing/client/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index 3ddafc529..000000000 --- a/code_sharing/client/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/code_sharing/client/android/build.gradle b/code_sharing/client/android/build.gradle deleted file mode 100644 index 58a8c74b1..000000000 --- a/code_sharing/client/android/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.2.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/code_sharing/client/android/gradle.properties b/code_sharing/client/android/gradle.properties deleted file mode 100644 index 94adc3a3f..000000000 --- a/code_sharing/client/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.useAndroidX=true -android.enableJetifier=true diff --git a/code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties b/code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 3c472b99c..000000000 --- a/code_sharing/client/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/code_sharing/client/android/settings.gradle b/code_sharing/client/android/settings.gradle deleted file mode 100644 index 44e62bcf0..000000000 --- a/code_sharing/client/android/settings.gradle +++ /dev/null @@ -1,11 +0,0 @@ -include ':app' - -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() - -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } - -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/code_sharing/client/ios/.gitignore b/code_sharing/client/ios/.gitignore deleted file mode 100644 index 7a7f9873a..000000000 --- a/code_sharing/client/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/code_sharing/client/ios/Flutter/AppFrameworkInfo.plist b/code_sharing/client/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 9625e105d..000000000 --- a/code_sharing/client/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 - - diff --git a/code_sharing/client/ios/Flutter/Debug.xcconfig b/code_sharing/client/ios/Flutter/Debug.xcconfig deleted file mode 100644 index 592ceee85..000000000 --- a/code_sharing/client/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "Generated.xcconfig" diff --git a/code_sharing/client/ios/Flutter/Release.xcconfig b/code_sharing/client/ios/Flutter/Release.xcconfig deleted file mode 100644 index 592ceee85..000000000 --- a/code_sharing/client/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "Generated.xcconfig" diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.pbxproj b/code_sharing/client/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 42204d380..000000000 --- a/code_sharing/client/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,483 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.client; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.client; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.client; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/code_sharing/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index c87d15a33..000000000 --- a/code_sharing/client/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata b/code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a16e..000000000 --- a/code_sharing/client/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/code_sharing/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/code_sharing/client/ios/Runner/AppDelegate.swift b/code_sharing/client/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4a8..000000000 --- a/code_sharing/client/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fab2..000000000 --- a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 797d452e458972bab9d994556c8305db4c827017..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index 6ed2d933e1120817fe9182483a228007b18ab6ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 4cd7b0099ca80c806f8fe495613e8d6c69460d76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index fe730945a01f64a61e2235dbe3f45b08f7729182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index 502f463a9bc882b461c96aadf492d1729e49e725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index 0ec303439225b78712f49115768196d8d76f6790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index e9f5fea27c705180eb716271f41b582e76dcbd90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1674 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 diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index 0467bf12aa4d28f374bb26596605a46dcbb3e7c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2fd..000000000 --- a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b7..000000000 --- a/code_sharing/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard b/code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c7c..000000000 --- a/code_sharing/client/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/code_sharing/client/ios/Runner/Base.lproj/Main.storyboard b/code_sharing/client/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c28516f..000000000 --- a/code_sharing/client/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/code_sharing/client/ios/Runner/Info.plist b/code_sharing/client/ios/Runner/Info.plist deleted file mode 100644 index e68305132..000000000 --- a/code_sharing/client/ios/Runner/Info.plist +++ /dev/null @@ -1,51 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Client - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - client - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - - diff --git a/code_sharing/client/ios/Runner/Runner-Bridging-Header.h b/code_sharing/client/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a560..000000000 --- a/code_sharing/client/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/code_sharing/client/lib/main.dart b/code_sharing/client/lib/main.dart deleted file mode 100644 index e96b52fc9..000000000 --- a/code_sharing/client/lib/main.dart +++ /dev/null @@ -1,141 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; -import 'package:http/http.dart' as http; -import 'package:shared/shared.dart'; -import 'package:flutter/material.dart'; - -final port = Platform.environment['PORT'] ?? '8080'; -final host = Platform.environment['SERVER_URL'] ?? '127.0.0.1'; -final scheme = Platform.environment['SERVER_SCHEME'] ?? 'http'; -final serverUrl = Uri.parse('$scheme://$host:$port/'); - -void main() { - runApp( - const MyApp( - getCount: getCount, - increment: increment, - ), - ); -} - -class MyApp extends StatelessWidget { - const MyApp({ - super.key, - required this.getCount, - required this.increment, - }); - - final Future Function() getCount; - final Future Function(int) increment; - - @override - Widget build(BuildContext context) { - return MaterialApp( - title: 'Flutter Demo', - theme: ThemeData( - primarySwatch: Colors.blue, - ), - home: MyHomePage( - title: 'Flutter Demo Home Page', - getCount: getCount, - increment: increment, - ), - ); - } -} - -class MyHomePage extends StatefulWidget { - const MyHomePage({ - super.key, - required this.title, - required this.getCount, - required this.increment, - }); - - final String title; - final Future Function() getCount; - final Future Function(int) increment; - - @override - State createState() => _MyHomePageState(); -} - -class _MyHomePageState extends State { - int _counter = 0; - int localClicks = 0; - bool isWriting = false; - - @override - void initState() { - super.initState(); - widget.getCount().then((int val) => _counter = val); - } - - void _incrementCounter() { - localClicks += 1; - setState(() => isWriting = true); - widget.increment(localClicks).then( - (int val) => setState( - () { - _counter = val; - isWriting = true; - }, - ), - ); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text(widget.title), - ), - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text( - 'You have pushed the button this many times:', - style: TextStyle(fontSize: 20), - ), - Text( - '$_counter', - style: Theme.of(context).textTheme.headlineMedium, - ), - if (isWriting) ...[ - const SizedBox(height: 10), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: const [ - Text( - 'Communicating with server...', - style: TextStyle(fontSize: 32, color: Colors.blue), - ), - SizedBox(width: 10), - CircularProgressIndicator.adaptive(), - ], - ), - ], - ], - ), - ), - floatingActionButton: FloatingActionButton( - onPressed: _incrementCounter, - tooltip: 'Increment', - child: const Icon(Icons.add), - ), - ); - } -} - -Future getCount() async { - return http - .get(serverUrl) - .then((resp) => Count.fromJson(json.decode(resp.body)).value); -} - -Future increment(int by) async { - return http - .post(serverUrl, body: json.encode(Increment(by: by).toJson())) - .then((resp) => Count.fromJson(json.decode(resp.body)).value); -} diff --git a/code_sharing/client/linux/.gitignore b/code_sharing/client/linux/.gitignore deleted file mode 100644 index d3896c984..000000000 --- a/code_sharing/client/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/code_sharing/client/linux/CMakeLists.txt b/code_sharing/client/linux/CMakeLists.txt deleted file mode 100644 index 4d47043c4..000000000 --- a/code_sharing/client/linux/CMakeLists.txt +++ /dev/null @@ -1,138 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.10) -project(runner LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "client") -# The unique GTK application identifier for this application. See: -# https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.client") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Load bundled libraries from the lib/ directory relative to the binary. -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Root filesystem for cross-building. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# Define build configuration options. -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -endif() - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_14) - target_compile_options(${TARGET} PRIVATE -Wall -Werror) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# Define the application target. To change its name, change BINARY_NAME above, -# not the value here, or `flutter run` will no longer work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add dependency libraries. Add any application-specific dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) - -# Only the install-generated bundle's copy of the executable will launch -# correctly, since the resources must in the right relative locations. To avoid -# people trying to run the unbundled copy, put it in a subdirectory instead of -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) - install(FILES "${bundled_library}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endforeach(bundled_library) - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") - install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() diff --git a/code_sharing/client/linux/flutter/CMakeLists.txt b/code_sharing/client/linux/flutter/CMakeLists.txt deleted file mode 100644 index d5bd01648..000000000 --- a/code_sharing/client/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.10) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. - -# Serves the same purpose as list(TRANSFORM ... PREPEND ...), -# which isn't available in 3.10. -function(list_prepend LIST_NAME PREFIX) - set(NEW_LIST "") - foreach(element ${${LIST_NAME}}) - list(APPEND NEW_LIST "${PREFIX}${element}") - endforeach(element) - set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) -endfunction() - -# === Flutter Library === -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) -pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) - -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "fl_basic_message_channel.h" - "fl_binary_codec.h" - "fl_binary_messenger.h" - "fl_dart_project.h" - "fl_engine.h" - "fl_json_message_codec.h" - "fl_json_method_codec.h" - "fl_message_codec.h" - "fl_method_call.h" - "fl_method_channel.h" - "fl_method_codec.h" - "fl_method_response.h" - "fl_plugin_registrar.h" - "fl_plugin_registry.h" - "fl_standard_message_codec.h" - "fl_standard_method_codec.h" - "fl_string_codec.h" - "fl_value.h" - "fl_view.h" - "flutter_linux.h" -) -list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") -target_link_libraries(flutter INTERFACE - PkgConfig::GTK - PkgConfig::GLIB - PkgConfig::GIO -) -add_dependencies(flutter flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CMAKE_CURRENT_BINARY_DIR}/_phony_ - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" - ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} -) diff --git a/code_sharing/client/linux/flutter/generated_plugin_registrant.cc b/code_sharing/client/linux/flutter/generated_plugin_registrant.cc deleted file mode 100644 index e71a16d23..000000000 --- a/code_sharing/client/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void fl_register_plugins(FlPluginRegistry* registry) { -} diff --git a/code_sharing/client/linux/flutter/generated_plugin_registrant.h b/code_sharing/client/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47bc..000000000 --- a/code_sharing/client/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/code_sharing/client/linux/flutter/generated_plugins.cmake b/code_sharing/client/linux/flutter/generated_plugins.cmake deleted file mode 100644 index 2e1de87a7..000000000 --- a/code_sharing/client/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/code_sharing/client/linux/main.cc b/code_sharing/client/linux/main.cc deleted file mode 100644 index e7c5c5437..000000000 --- a/code_sharing/client/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/code_sharing/client/linux/my_application.cc b/code_sharing/client/linux/my_application.cc deleted file mode 100644 index 2ba2836d2..000000000 --- a/code_sharing/client/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#endif - -#include "flutter/generated_plugin_registrant.h" - -struct _MyApplication { - GtkApplication parent_instance; - char** dart_entrypoint_arguments; -}; - -G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) - -// Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = - GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "client"); - gtk_header_bar_set_show_close_button(header_bar, TRUE); - gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { - gtk_window_set_title(window, "client"); - } - - gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); - - g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - - FlView* view = fl_view_new(project); - gtk_widget_show(GTK_WIDGET(view)); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); - - fl_register_plugins(FL_PLUGIN_REGISTRY(view)); - - gtk_widget_grab_focus(GTK_WIDGET(view)); -} - -// Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); - // Strip out the first argument as it is the binary name. - self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); - - g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; - } - - g_application_activate(application); - *exit_status = 0; - - return TRUE; -} - -// Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); - g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); - G_OBJECT_CLASS(my_application_parent_class)->dispose(object); -} - -static void my_application_class_init(MyApplicationClass* klass) { - G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; - G_OBJECT_CLASS(klass)->dispose = my_application_dispose; -} - -static void my_application_init(MyApplication* self) {} - -MyApplication* my_application_new() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/code_sharing/client/linux/my_application.h b/code_sharing/client/linux/my_application.h deleted file mode 100644 index 72271d5e4..000000000 --- a/code_sharing/client/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, - GtkApplication) - -/** - * my_application_new: - * - * Creates a new Flutter-based application. - * - * Returns: a new #MyApplication. - */ -MyApplication* my_application_new(); - -#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/code_sharing/client/macos/.gitignore b/code_sharing/client/macos/.gitignore deleted file mode 100644 index 746adbb6b..000000000 --- a/code_sharing/client/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig b/code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index c2efd0b60..000000000 --- a/code_sharing/client/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/code_sharing/client/macos/Flutter/Flutter-Release.xcconfig b/code_sharing/client/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index c2efd0b60..000000000 --- a/code_sharing/client/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift b/code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index cccf817a5..000000000 --- a/code_sharing/client/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,10 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { -} diff --git a/code_sharing/client/macos/Runner.xcodeproj/project.pbxproj b/code_sharing/client/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 85d410774..000000000 --- a/code_sharing/client/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,573 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Flutter Assemble"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC111A2044C6BA0003C045; - remoteInfo = FLX; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 33CC110E2044A8840003C045 /* Bundle Framework */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Bundle Framework"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "client.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* client.app */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* client.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 33CC10EC2044A3C60003C045 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.Sandbox = { - enabled = 1; - }; - }; - }; - 33CC111A2044C6BA0003C045 = { - CreatedOnToolsVersion = 9.2; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 33CC10E42044A3C60003C045; - productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 33CC10EC2044A3C60003C045 /* Runner */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 33CC10EB2044A3C60003C045 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; - }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, - ); - inputPaths = ( - Flutter/ephemeral/tripwire, - ); - outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 33CC10E92044A3C60003C045 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; - targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 33CC10F52044A3C60003C045 /* Base */, - ); - name = MainMenu.xib; - path = Runner; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 338D0CE9231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Profile; - }; - 338D0CEA231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Profile; - }; - 338D0CEB231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Profile; - }; - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 33CC10FA2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10F92044A3C60003C045 /* Debug */, - 33CC10FA2044A3C60003C045 /* Release */, - 338D0CE9231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10FC2044A3C60003C045 /* Debug */, - 33CC10FD2044A3C60003C045 /* Release */, - 338D0CEA231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC111C2044C6BA0003C045 /* Debug */, - 33CC111D2044C6BA0003C045 /* Release */, - 338D0CEB231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 33CC10E52044A3C60003C045 /* Project object */; -} diff --git a/code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/code_sharing/client/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 1f21100e6..000000000 --- a/code_sharing/client/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata b/code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a16e..000000000 --- a/code_sharing/client/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/code_sharing/client/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/code_sharing/client/macos/Runner/AppDelegate.swift b/code_sharing/client/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef6437..000000000 --- a/code_sharing/client/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f19..000000000 --- a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" - }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 82b6f9d9a33e198f5747104729e1fcef999772a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index 13b35eba55c6dabc3aac36f33d859266c18fa0d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5680 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 diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 0a3f5fa40fb3d1e0710331a48de5d256da3f275d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 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 diff --git a/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/code_sharing/client/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 2f1632cfddf3d9dade342351e627a0a75609fb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr - - - - - - - - - - - - - - - - - - - - - -