JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.
JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.
JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.
JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.
JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.
JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.
JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.
JSON string containing extra configuration elements.
1. The engine_params
object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params
gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout
is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload
is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version
field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore
field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview
field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.
JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.
{error ? error.toString() : 'Unknown Error'}
{componentStack.split('\n').map((row: string) => (
{row}
diff --git a/superset-frontend/packages/superset-ui-core/src/chart/components/SuperChart.tsx b/superset-frontend/packages/superset-ui-core/src/chart/components/SuperChart.tsx
index edfd88ab77f5..99d7b6dbec7a 100644
--- a/superset-frontend/packages/superset-ui-core/src/chart/components/SuperChart.tsx
+++ b/superset-frontend/packages/superset-ui-core/src/chart/components/SuperChart.tsx
@@ -61,7 +61,7 @@ export type Props = Omit &
FallbackComponent?: React.ComponentType;
/** Event listener for unexpected errors from chart */
onErrorBoundary?: ErrorBoundaryProps['onError'];
- /** Prop for form plugins uisng superchart */
+ /** Prop for form plugins using superchart */
showOverflow?: boolean;
/** Prop for popovercontainer ref */
parentRef?: RefObject;
diff --git a/superset-frontend/packages/superset-ui-core/src/chart/components/SuperChartCore.tsx b/superset-frontend/packages/superset-ui-core/src/chart/components/SuperChartCore.tsx
index 10e4cd18e682..d818890aa552 100644
--- a/superset-frontend/packages/superset-ui-core/src/chart/components/SuperChartCore.tsx
+++ b/superset-frontend/packages/superset-ui-core/src/chart/components/SuperChartCore.tsx
@@ -19,6 +19,7 @@
/* eslint-disable react/jsx-sort-default-props */
import * as React from 'react';
+import { t } from '@superset-ui/core';
import { createSelector } from 'reselect';
import getChartComponentRegistry from '../registries/ChartComponentRegistrySingleton';
import getChartTransformPropsRegistry from '../registries/ChartTransformPropsRegistrySingleton';
@@ -167,7 +168,7 @@ export default class SuperChartCore extends React.PureComponent {
if (error) {
return (
- ERROR
+ {t('ERROR')}
chartType="{chartType}"
—
{error.toString()}
diff --git a/superset-frontend/packages/superset-ui-core/src/chart/models/ChartProps.ts b/superset-frontend/packages/superset-ui-core/src/chart/models/ChartProps.ts
index 5e4f044942a6..e02aeca4f54d 100644
--- a/superset-frontend/packages/superset-ui-core/src/chart/models/ChartProps.ts
+++ b/superset-frontend/packages/superset-ui-core/src/chart/models/ChartProps.ts
@@ -144,6 +144,8 @@ export default class ChartProps {
inContextMenu?: boolean;
+ emitCrossFilters?: boolean;
+
theme: SupersetTheme;
constructor(config: ChartPropsConfig & { formData?: FormData } = {}) {
@@ -164,6 +166,7 @@ export default class ChartProps {
isRefreshing,
inputRef,
inContextMenu = false,
+ emitCrossFilters = false,
theme,
} = config;
this.width = width;
@@ -184,6 +187,7 @@ export default class ChartProps {
this.isRefreshing = isRefreshing;
this.inputRef = inputRef;
this.inContextMenu = inContextMenu;
+ this.emitCrossFilters = emitCrossFilters;
this.theme = theme;
}
}
@@ -207,6 +211,7 @@ ChartProps.createSelector = function create(): ChartPropsSelector {
input => input.isRefreshing,
input => input.inputRef,
input => input.inContextMenu,
+ input => input.emitCrossFilters,
input => input.theme,
(
annotationData,
@@ -225,6 +230,7 @@ ChartProps.createSelector = function create(): ChartPropsSelector {
isRefreshing,
inputRef,
inContextMenu,
+ emitCrossFilters,
theme,
) =>
new ChartProps({
@@ -244,6 +250,7 @@ ChartProps.createSelector = function create(): ChartPropsSelector {
isRefreshing,
inputRef,
inContextMenu,
+ emitCrossFilters,
theme,
}),
);
diff --git a/superset-frontend/packages/superset-ui-core/src/chart/types/Base.ts b/superset-frontend/packages/superset-ui-core/src/chart/types/Base.ts
index f9f1a360b627..7fa2ba1f77cc 100644
--- a/superset-frontend/packages/superset-ui-core/src/chart/types/Base.ts
+++ b/superset-frontend/packages/superset-ui-core/src/chart/types/Base.ts
@@ -17,7 +17,7 @@
* under the License.
*/
-import { ExtraFormData } from '../../query';
+import { BinaryQueryObjectFilterClause, ExtraFormData } from '../../query';
import { JsonObject } from '../..';
export type HandlerFunction = (...args: unknown[]) => void;
@@ -33,6 +33,14 @@ export enum Behavior {
DRILL_TO_DETAIL = 'DRILL_TO_DETAIL',
}
+export interface ContextMenuFilters {
+ crossFilter?: {
+ dataMask: DataMask;
+ isCurrentValueSelected?: boolean;
+ };
+ drillToDetail?: BinaryQueryObjectFilterClause[];
+}
+
export enum AppSection {
EXPLORE = 'EXPLORE',
DASHBOARD = 'DASHBOARD',
diff --git a/superset-frontend/packages/superset-ui-core/src/components/SafeMarkdown.tsx b/superset-frontend/packages/superset-ui-core/src/components/SafeMarkdown.tsx
index 4db48d426533..8be73295b497 100644
--- a/superset-frontend/packages/superset-ui-core/src/components/SafeMarkdown.tsx
+++ b/superset-frontend/packages/superset-ui-core/src/components/SafeMarkdown.tsx
@@ -20,7 +20,7 @@ import React, { useMemo } from 'react';
import ReactMarkdown from 'react-markdown';
import rehypeSanitize, { defaultSchema } from 'rehype-sanitize';
import rehypeRaw from 'rehype-raw';
-import { merge } from 'lodash';
+import { mergeWith, isArray } from 'lodash';
import { FeatureFlag, isFeatureEnabled } from '../utils';
interface SafeMarkdownProps {
@@ -29,6 +29,15 @@ interface SafeMarkdownProps {
htmlSchemaOverrides?: typeof defaultSchema;
}
+export function getOverrideHtmlSchema(
+ originalSchema: typeof defaultSchema,
+ htmlSchemaOverrides: SafeMarkdownProps['htmlSchemaOverrides'],
+) {
+ return mergeWith(originalSchema, htmlSchemaOverrides, (objValue, srcValue) =>
+ isArray(objValue) ? objValue.concat(srcValue) : undefined,
+ );
+}
+
function SafeMarkdown({
source,
htmlSanitization = true,
@@ -42,7 +51,10 @@ function SafeMarkdown({
if (displayHtml && !escapeHtml) {
rehypePlugins.push(rehypeRaw);
if (htmlSanitization) {
- const schema = merge(defaultSchema, htmlSchemaOverrides);
+ const schema = getOverrideHtmlSchema(
+ defaultSchema,
+ htmlSchemaOverrides,
+ );
rehypePlugins.push([rehypeSanitize, schema]);
}
}
diff --git a/superset-frontend/packages/superset-ui-core/src/math-expression/index.ts b/superset-frontend/packages/superset-ui-core/src/math-expression/index.ts
index ae3db1f069a9..8ee4d272d8bb 100644
--- a/superset-frontend/packages/superset-ui-core/src/math-expression/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/math-expression/index.ts
@@ -106,7 +106,7 @@ export function evalExpression(expression: string, value: number): number {
const subExpressions = String(parsedExpression).split('=');
parsedExpression = subExpressions[1] ?? subExpressions[0];
// we can ignore the type requirement on `TOKENS`, as value is always `number`
- // and doesn't need to consider `number | underfined`.
+ // and doesn't need to consider `number | undefined`.
// @ts-ignore
return Number(mexp.eval(parsedExpression, TOKENS, { x: value }));
}
diff --git a/superset-frontend/packages/superset-ui-core/src/query/buildQueryContext.ts b/superset-frontend/packages/superset-ui-core/src/query/buildQueryContext.ts
index e66c1e201e86..c1dc5bd89d2d 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/buildQueryContext.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/buildQueryContext.ts
@@ -20,16 +20,11 @@
import buildQueryObject from './buildQueryObject';
import DatasourceKey from './DatasourceKey';
import { QueryFieldAliases, QueryFormData } from './types/QueryFormData';
-import {
- BinaryQueryObjectFilterClause,
- QueryContext,
- QueryObject,
-} from './types/Query';
+import { QueryContext, QueryObject } from './types/Query';
import { SetDataMaskHook } from '../chart';
import { JsonObject } from '../connection';
import { normalizeTimeColumn } from './normalizeTimeColumn';
-import { hasGenericChartAxes, isXAxisSet } from './getXAxis';
-import { ensureIsArray } from '../utils';
+import { isXAxisSet } from './getXAxis';
const WRAP_IN_ARRAY = (baseQueryObject: QueryObject) => [baseQueryObject];
@@ -60,14 +55,6 @@ export default function buildQueryContext(
// eslint-disable-next-line no-param-reassign
query.post_processing = query.post_processing.filter(Boolean);
}
- if (hasGenericChartAxes && query.time_range) {
- // eslint-disable-next-line no-param-reassign
- query.filters = ensureIsArray(query.filters).map(flt =>
- flt?.op === 'TEMPORAL_RANGE'
- ? ({ ...flt, val: query.time_range } as BinaryQueryObjectFilterClause)
- : flt,
- );
- }
});
if (isXAxisSet(formData)) {
queries = queries.map(query => normalizeTimeColumn(formData, query));
diff --git a/superset-frontend/packages/superset-ui-core/src/query/buildQueryObject.ts b/superset-frontend/packages/superset-ui-core/src/query/buildQueryObject.ts
index a1b6d8ed7677..cf434f138577 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/buildQueryObject.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/buildQueryObject.ts
@@ -103,7 +103,7 @@ export default function buildQueryObject(
let queryObject: QueryObject = {
// fallback `null` to `undefined` so they won't be sent to the backend
- // (JSON.strinify will ignore `undefined`.)
+ // (JSON.stringify will ignore `undefined`.)
time_range: time_range || undefined,
since: since || undefined,
until: until || undefined,
diff --git a/superset-frontend/packages/superset-ui-core/src/query/normalizeOrderBy.ts b/superset-frontend/packages/superset-ui-core/src/query/normalizeOrderBy.ts
index 233af3120afe..e38e682abbdf 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/normalizeOrderBy.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/normalizeOrderBy.ts
@@ -56,7 +56,7 @@ export default function normalizeOrderBy(
};
}
- // todo: Removed `legacy_ordery_by` after refactoring
+ // todo: Removed `legacy_order_by` after refactoring
if (
queryObject.legacy_order_by !== undefined &&
queryObject.legacy_order_by !== null &&
diff --git a/superset-frontend/packages/superset-ui-core/src/query/types/AdvancedAnalytics.ts b/superset-frontend/packages/superset-ui-core/src/query/types/AdvancedAnalytics.ts
index 463b07c1dcc5..ea270e2d12ec 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/types/AdvancedAnalytics.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/types/AdvancedAnalytics.ts
@@ -29,7 +29,7 @@ export interface RollingWindow {
min_periods?: number;
}
-export enum ComparisionType {
+export enum ComparisonType {
Values = 'values',
Difference = 'difference',
Percentage = 'percentage',
@@ -37,7 +37,7 @@ export enum ComparisionType {
}
export interface TimeCompare {
time_compare?: string;
- comparison_type?: ComparisionType;
+ comparison_type?: ComparisonType;
}
export default {};
diff --git a/superset-frontend/packages/superset-ui-core/src/query/types/PostProcessing.ts b/superset-frontend/packages/superset-ui-core/src/query/types/PostProcessing.ts
index b88dafb5c793..e32eda6a90ac 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/types/PostProcessing.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/types/PostProcessing.ts
@@ -18,7 +18,7 @@
*/
import { JsonObject } from '../../connection';
import { TimeGranularity } from '../../time-format';
-import { RollingType, ComparisionType } from './AdvancedAnalytics';
+import { RollingType, ComparisonType } from './AdvancedAnalytics';
export type NumpyFunction =
| 'average'
@@ -57,7 +57,7 @@ export interface Aggregates {
[colname: string]: {
operator: NumpyFunction;
/**
- * the name of the column to generate aggrates from.
+ * the name of the column to generate aggregates from.
*/
column?: string;
options?: JsonObject;
@@ -171,7 +171,7 @@ export interface _PostProcessingCompare {
options: {
source_columns: string[];
compare_columns: string[];
- compare_type: Omit;
+ compare_type: Omit;
drop_original_columns: boolean;
};
}
diff --git a/superset-frontend/packages/superset-ui-core/src/query/types/Query.ts b/superset-frontend/packages/superset-ui-core/src/query/types/Query.ts
index dd6b6c8b0147..8a7e40370371 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/types/Query.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/types/Query.ts
@@ -296,6 +296,7 @@ export type Query = {
errorMessage: string | null;
extra: {
progress: string | null;
+ errors?: SupersetError[];
};
id: string;
isDataPreview: boolean;
diff --git a/superset-frontend/packages/superset-ui-core/src/style/index.tsx b/superset-frontend/packages/superset-ui-core/src/style/index.tsx
index 1a4d9031f8f9..ee0b6e10ac41 100644
--- a/superset-frontend/packages/superset-ui-core/src/style/index.tsx
+++ b/superset-frontend/packages/superset-ui-core/src/style/index.tsx
@@ -161,6 +161,7 @@ const defaultTheme = {
},
transitionTiming: 0.3,
gridUnit: 4,
+ brandIconMaxWidth: 37,
};
export type SupersetTheme = typeof defaultTheme;
diff --git a/superset-frontend/packages/superset-ui-core/src/time-format/index.ts b/superset-frontend/packages/superset-ui-core/src/time-format/index.ts
index 48ac1a6803db..b086effd246a 100644
--- a/superset-frontend/packages/superset-ui-core/src/time-format/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/time-format/index.ts
@@ -36,4 +36,6 @@ export { default as smartDateFormatter } from './formatters/smartDate';
export { default as smartDateDetailedFormatter } from './formatters/smartDateDetailed';
export { default as smartDateVerboseFormatter } from './formatters/smartDateVerbose';
+export { default as normalizeTimestamp } from './utils/normalizeTimestamp';
+
export * from './types';
diff --git a/superset-frontend/src/dashboard/components/CrossFilterScopingModal/utils/index.ts b/superset-frontend/packages/superset-ui-core/src/time-format/utils/normalizeTimestamp.ts
similarity index 75%
rename from superset-frontend/src/dashboard/components/CrossFilterScopingModal/utils/index.ts
rename to superset-frontend/packages/superset-ui-core/src/time-format/utils/normalizeTimestamp.ts
index e3eaf3e0c868..0e49aee7ea75 100644
--- a/superset-frontend/src/dashboard/components/CrossFilterScopingModal/utils/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/time-format/utils/normalizeTimestamp.ts
@@ -1,4 +1,4 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -16,14 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { FormInstance } from 'src/components';
-// eslint-disable-next-line import/prefer-default-export
-export const setCrossFilterFieldValues = (
- form: FormInstance,
- values: object,
-) => {
- form.setFieldsValue({
- ...values,
- });
-};
+const TS_REGEX = /(\d{4}-\d{2}-\d{2})[\sT](\d{2}:\d{2}:\d{2}\.?\d*).*/;
+
+export default function normalizeTimestamp(value: string): string {
+ const match = value.match(TS_REGEX);
+ if (match) {
+ return `${match[1]}T${match[2]}Z`;
+ }
+ return value;
+}
diff --git a/superset-frontend/packages/superset-ui-core/src/translation/index.ts b/superset-frontend/packages/superset-ui-core/src/translation/index.ts
index 71cb8acbe0ea..216bf5847595 100644
--- a/superset-frontend/packages/superset-ui-core/src/translation/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/translation/index.ts
@@ -22,4 +22,4 @@ export * from './types';
export default {};
-export { default as __hack_reexport_trasnslation } from './types';
+export { default as __hack_reexport_translation } from './types';
diff --git a/superset-frontend/packages/superset-ui-core/src/ui-overrides/ExtensionsRegistry.ts b/superset-frontend/packages/superset-ui-core/src/ui-overrides/ExtensionsRegistry.ts
index d630525064b1..a411c41d08af 100644
--- a/superset-frontend/packages/superset-ui-core/src/ui-overrides/ExtensionsRegistry.ts
+++ b/superset-frontend/packages/superset-ui-core/src/ui-overrides/ExtensionsRegistry.ts
@@ -49,6 +49,16 @@ interface MenuObjectChildProps {
disable?: boolean;
}
+export interface SwitchProps {
+ isEditMode: boolean;
+ dbFetched: any;
+ disableSSHTunnelingForEngine?: boolean;
+ useSSHTunneling: boolean;
+ setUseSSHTunneling: React.Dispatch>;
+ setDB: React.Dispatch;
+ isSSHTunneling: boolean;
+}
+
type ConfigDetailsProps = {
embeddedId: string;
};
@@ -69,6 +79,7 @@ export type Extensions = Partial<{
'welcome.message': React.ComponentType;
'welcome.banner': React.ComponentType;
'welcome.main.replacement': React.ComponentType;
+ 'ssh_tunnel.form.switch': React.ComponentType;
}>;
/**
diff --git a/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts b/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts
index 012bb4ebaf9e..1492d83846e3 100644
--- a/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts
+++ b/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts
@@ -44,7 +44,6 @@ export enum FeatureFlag {
ENABLE_ADVANCED_DATA_TYPES = 'ENABLE_ADVANCED_DATA_TYPES',
ENABLE_DND_WITH_CLICK_UX = 'ENABLE_DND_WITH_CLICK_UX',
ENABLE_EXPLORE_DRAG_AND_DROP = 'ENABLE_EXPLORE_DRAG_AND_DROP',
- ENABLE_FILTER_BOX_MIGRATION = 'ENABLE_FILTER_BOX_MIGRATION',
ENABLE_JAVASCRIPT_CONTROLS = 'ENABLE_JAVASCRIPT_CONTROLS',
ENABLE_TEMPLATE_PROCESSING = 'ENABLE_TEMPLATE_PROCESSING',
ENABLE_TEMPLATE_REMOVE_FILTERS = 'ENABLE_TEMPLATE_REMOVE_FILTERS',
@@ -61,8 +60,10 @@ export enum FeatureFlag {
SQL_VALIDATORS_BY_ENGINE = 'SQL_VALIDATORS_BY_ENGINE',
THUMBNAILS = 'THUMBNAILS',
USE_ANALAGOUS_COLORS = 'USE_ANALAGOUS_COLORS',
+ TAGGING_SYSTEM = 'TAGGING_SYSTEM',
UX_BETA = 'UX_BETA',
VERSIONED_EXPORT = 'VERSIONED_EXPORT',
+ SSH_TUNNELING = 'SSH_TUNNELING',
}
export type ScheduleQueriesProps = {
JSONSCHEMA: {
diff --git a/superset-frontend/src/dashboard/stylesheets/components/index.less b/superset-frontend/packages/superset-ui-core/src/utils/getSelectedText.ts
similarity index 81%
rename from superset-frontend/src/dashboard/stylesheets/components/index.less
rename to superset-frontend/packages/superset-ui-core/src/utils/getSelectedText.ts
index d99e11df2a45..d3671d875c33 100644
--- a/superset-frontend/src/dashboard/stylesheets/components/index.less
+++ b/superset-frontend/packages/superset-ui-core/src/utils/getSelectedText.ts
@@ -16,10 +16,4 @@
* specific language governing permissions and limitations
* under the License.
*/
-@import './chart.less';
-@import './column.less';
-@import './divider.less';
-@import './header.less';
-@import './new-component.less';
-@import './row.less';
-@import './markdown.less';
+export const getSelectedText = () => window.getSelection()?.toString();
diff --git a/superset-frontend/packages/superset-ui-core/src/utils/index.ts b/superset-frontend/packages/superset-ui-core/src/utils/index.ts
index 19c5ed586145..4efc3dedb65a 100644
--- a/superset-frontend/packages/superset-ui-core/src/utils/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/utils/index.ts
@@ -27,6 +27,7 @@ export { default as promiseTimeout } from './promiseTimeout';
export { default as logging } from './logging';
export { default as removeDuplicates } from './removeDuplicates';
export { lruCache } from './lruCache';
+export { getSelectedText } from './getSelectedText';
export * from './featureFlags';
export * from './random';
export * from './typedMemo';
diff --git a/superset-frontend/packages/superset-ui-core/test/components/SafeMarkdown.test.ts b/superset-frontend/packages/superset-ui-core/test/components/SafeMarkdown.test.ts
new file mode 100644
index 000000000000..4b4c826923bc
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-core/test/components/SafeMarkdown.test.ts
@@ -0,0 +1,39 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 { getOverrideHtmlSchema } from '../../src/components/SafeMarkdown';
+
+describe('getOverrideHtmlSchema', () => {
+ it('should append the override items', () => {
+ const original = {
+ attributes: {
+ '*': ['size'],
+ },
+ clobberPrefix: 'original-prefix',
+ tagNames: ['h1', 'h2', 'h3'],
+ };
+ const result = getOverrideHtmlSchema(original, {
+ attributes: { '*': ['src'], h1: ['style'] },
+ clobberPrefix: 'custom-prefix',
+ tagNames: ['iframe'],
+ });
+ expect(result.clobberPrefix).toEqual('custom-prefix');
+ expect(result.attributes).toEqual({ '*': ['size', 'src'], h1: ['style'] });
+ expect(result.tagNames).toEqual(['h1', 'h2', 'h3', 'iframe']);
+ });
+});
diff --git a/superset-frontend/packages/superset-ui-core/test/models/Registry.test.ts b/superset-frontend/packages/superset-ui-core/test/models/Registry.test.ts
index 1c85dc242c90..11c2e65eb51f 100644
--- a/superset-frontend/packages/superset-ui-core/test/models/Registry.test.ts
+++ b/superset-frontend/packages/superset-ui-core/test/models/Registry.test.ts
@@ -404,7 +404,7 @@ describe('Registry', () => {
expect(listener).toBeCalledWith(['foo']);
});
- it('calls the listener when a value is overriden', () => {
+ it('calls the listener when a value is overridden', () => {
registry.registerValue('foo', 'bar');
listener.mockClear();
registry.registerValue('foo', 'baz');
diff --git a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createD3NumberFormatter.test.ts b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createD3NumberFormatter.test.ts
index c80c72c30868..951ab039c5a9 100644
--- a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createD3NumberFormatter.test.ts
+++ b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createD3NumberFormatter.test.ts
@@ -62,7 +62,7 @@ describe('createD3NumberFormatter(config)', () => {
});
});
describe('config.description', () => {
- it('set decription if specified', () => {
+ it('set description if specified', () => {
const formatter = createD3NumberFormatter({
description: 'lorem ipsum',
formatString: '.2f',
diff --git a/superset-frontend/packages/superset-ui-core/test/query/buildQueryContext.test.ts b/superset-frontend/packages/superset-ui-core/test/query/buildQueryContext.test.ts
index e14648a984f9..9d47361e8fdd 100644
--- a/superset-frontend/packages/superset-ui-core/test/query/buildQueryContext.test.ts
+++ b/superset-frontend/packages/superset-ui-core/test/query/buildQueryContext.test.ts
@@ -164,41 +164,4 @@ describe('buildQueryContext', () => {
expect(spyNormalizeTimeColumn).not.toBeCalled();
spyNormalizeTimeColumn.mockRestore();
});
- it('should orverride time filter if GENERIC_CHART_AXES is enabled', () => {
- Object.defineProperty(getXAxisModule, 'hasGenericChartAxes', {
- value: true,
- });
-
- const queryContext = buildQueryContext(
- {
- datasource: '5__table',
- viz_type: 'table',
- },
- () => [
- {
- filters: [
- {
- col: 'col1',
- op: 'TEMPORAL_RANGE',
- val: '2001 : 2002',
- },
- {
- col: 'col2',
- op: 'IN',
- val: ['a', 'b'],
- },
- ],
- time_range: '1990 : 1991',
- },
- ],
- );
- expect(queryContext.queries[0].filters).toEqual([
- { col: 'col1', op: 'TEMPORAL_RANGE', val: '1990 : 1991' },
- {
- col: 'col2',
- op: 'IN',
- val: ['a', 'b'],
- },
- ]);
- });
});
diff --git a/superset-frontend/packages/superset-ui-core/test/query/types/PostProcessing.test.ts b/superset-frontend/packages/superset-ui-core/test/query/types/PostProcessing.test.ts
index db95137409a2..047699fa5741 100644
--- a/superset-frontend/packages/superset-ui-core/test/query/types/PostProcessing.test.ts
+++ b/superset-frontend/packages/superset-ui-core/test/query/types/PostProcessing.test.ts
@@ -42,7 +42,7 @@ import {
PostProcessingRolling,
PostProcessingSort,
} from '@superset-ui/core';
-import { ComparisionType, RollingType, TimeGranularity } from '../../../src';
+import { ComparisonType, RollingType, TimeGranularity } from '../../../src';
const AGGREGATES_OPTION: Aggregates = {
bar: {
@@ -74,7 +74,7 @@ const COMPARE_RULE: PostProcessingCompare = {
options: {
source_columns: ['foo'],
compare_columns: ['bar'],
- compare_type: ComparisionType.Percentage,
+ compare_type: ComparisonType.Percentage,
drop_original_columns: false,
},
};
diff --git a/superset-frontend/packages/superset-ui-core/test/time-format/utils/normalizeTimestamp.test.ts b/superset-frontend/packages/superset-ui-core/test/time-format/utils/normalizeTimestamp.test.ts
new file mode 100644
index 000000000000..6ccdcb574deb
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-core/test/time-format/utils/normalizeTimestamp.test.ts
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 normalizeTimestamp from '../../../src/time-format/utils/normalizeTimestamp';
+
+test('normalizeTimestamp should normalize typical timestamps', () => {
+ expect(normalizeTimestamp('2023-03-11 08:26:52.695 UTC')).toEqual(
+ '2023-03-11T08:26:52.695Z',
+ );
+ expect(normalizeTimestamp('2023-03-11 08:26:52.695 Europe/Helsinki')).toEqual(
+ '2023-03-11T08:26:52.695Z',
+ );
+ expect(normalizeTimestamp('2023-03-11T08:26:52.695 UTC')).toEqual(
+ '2023-03-11T08:26:52.695Z',
+ );
+ expect(normalizeTimestamp('2023-03-11T08:26:52.695')).toEqual(
+ '2023-03-11T08:26:52.695Z',
+ );
+ expect(normalizeTimestamp('2023-03-11 08:26:52')).toEqual(
+ '2023-03-11T08:26:52Z',
+ );
+});
+
+test('normalizeTimestamp should return unmatched timestamps as-is', () => {
+ expect(normalizeTimestamp('abcd')).toEqual('abcd');
+ expect(normalizeTimestamp('03/11/2023')).toEqual('03/11/2023');
+});
diff --git a/superset-frontend/packages/superset-ui-core/test/utils/getSelectedText.test.ts b/superset-frontend/packages/superset-ui-core/test/utils/getSelectedText.test.ts
new file mode 100644
index 000000000000..75682e9e747c
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-core/test/utils/getSelectedText.test.ts
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 { getSelectedText } from '@superset-ui/core';
+
+test('Returns null if Selection object is null', () => {
+ jest.spyOn(window, 'getSelection').mockImplementationOnce(() => null);
+ expect(getSelectedText()).toEqual(undefined);
+ jest.restoreAllMocks();
+});
+
+test('Returns selection text if Selection object is not null', () => {
+ jest
+ .spyOn(window, 'getSelection')
+ // @ts-ignore
+ .mockImplementationOnce(() => ({ toString: () => 'test string' }));
+ expect(getSelectedText()).toEqual('test string');
+ jest.restoreAllMocks();
+});
diff --git a/superset-frontend/packages/superset-ui-core/types/external.d.ts b/superset-frontend/packages/superset-ui-core/types/external.d.ts
index 31b0250bf445..dcce5fa8823f 100644
--- a/superset-frontend/packages/superset-ui-core/types/external.d.ts
+++ b/superset-frontend/packages/superset-ui-core/types/external.d.ts
@@ -17,6 +17,6 @@
* under the License.
*/
/**
- * Stub for the untypped jed module.
+ * Stub for the untyped jed module.
*/
declare module 'jed';
diff --git a/superset-frontend/packages/superset-ui-demo/storybook/shared/components/VerifyCORS.tsx b/superset-frontend/packages/superset-ui-demo/storybook/shared/components/VerifyCORS.tsx
index de0b2ef8aba0..3aa082186981 100644
--- a/superset-frontend/packages/superset-ui-demo/storybook/shared/components/VerifyCORS.tsx
+++ b/superset-frontend/packages/superset-ui-demo/storybook/shared/components/VerifyCORS.tsx
@@ -23,6 +23,7 @@ import {
Method,
makeApi,
SupersetApiError,
+ t,
} from '@superset-ui/core';
import ErrorMessage from './ErrorMessage';
@@ -121,7 +122,7 @@ export default class VerifyCORS extends React.Component {
className="btn btn-primary btn-sm"
onClick={this.handleVerify}
>
- Verify
+ {t('Verify')}
diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/controlsShown.tsx b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/controlsShown.tsx
index fac198e826e8..603ef83b0f5b 100644
--- a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/controlsShown.tsx
+++ b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/controlsShown.tsx
@@ -31,7 +31,7 @@ export const controlsShown = () => (
queriesData={[{ data }]}
formData={{
bottomMargin: 'auto',
- colorCcheme: 'd3Category10',
+ colorScheme: 'd3Category10',
contribution: false,
groupby: ['region'],
lineInterpolation: 'linear',
diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/expanded.tsx b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/expanded.tsx
index 8f71fb5289f7..b26e7dfa6dba 100644
--- a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/expanded.tsx
+++ b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/expanded.tsx
@@ -31,7 +31,7 @@ export const expanded = () => (
queriesData={[{ data }]}
formData={{
bottomMargin: 'auto',
- colorCcheme: 'd3Category10',
+ colorScheme: 'd3Category10',
contribution: false,
groupby: ['region'],
lineInterpolation: 'linear',
diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/stackedWithBounds.tsx b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/stackedWithBounds.tsx
index d3dccc63d4f6..6f7a19825a2d 100644
--- a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/stackedWithBounds.tsx
+++ b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Area/stories/stackedWithBounds.tsx
@@ -31,7 +31,7 @@ export const stackedWithYAxisBounds = () => (
queriesData={[{ data }]}
formData={{
bottomMargin: 'auto',
- colorCcheme: 'd3Category10',
+ colorScheme: 'd3Category10',
contribution: false,
groupby: ['region'],
lineInterpolation: 'linear',
@@ -66,7 +66,7 @@ export const stackedWithYAxisBoundsMinOnly = () => (
queriesData={[{ data }]}
formData={{
bottomMargin: 'auto',
- colorCcheme: 'd3Category10',
+ colorScheme: 'd3Category10',
contribution: false,
groupby: ['region'],
lineInterpolation: 'linear',
diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Sunburst/Stories.tsx b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Sunburst/Stories.tsx
new file mode 100644
index 000000000000..7742f1ecfe53
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Sunburst/Stories.tsx
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 React from 'react';
+import { SuperChart, getChartTransformPropsRegistry } from '@superset-ui/core';
+import { boolean, withKnobs } from '@storybook/addon-knobs';
+import {
+ EchartsSunburstChartPlugin,
+ SunburstTransformProps,
+} from '@superset-ui/plugin-chart-echarts';
+import { withResizableChartDemo } from '../../../../shared/components/ResizableChartDemo';
+import data from './data';
+
+new EchartsSunburstChartPlugin()
+ .configure({ key: 'echarts-sunburst' })
+ .register();
+
+getChartTransformPropsRegistry().registerValue(
+ 'echarts-sunburst',
+ SunburstTransformProps,
+);
+
+export default {
+ title: 'Chart Plugins/plugin-chart-echarts/Sunburst',
+ decorators: [withKnobs, withResizableChartDemo],
+};
+
+export const Sunburst = ({ width, height }) => (
+
+);
diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Sunburst/data.ts b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Sunburst/data.ts
new file mode 100644
index 000000000000..35675465dfdd
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Sunburst/data.ts
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+export default [
+ { genre: 'Adventure', platform: 'Wii', count: 84 },
+ { genre: 'Adventure', platform: 'N64', count: 14 },
+ { genre: 'Adventure', platform: 'XOne', count: 12 },
+ { genre: 'Adventure', platform: 'PS4', count: 19 },
+ { genre: 'Strategy', platform: 'Wii', count: 25 },
+ { genre: 'Strategy', platform: 'PS4', count: 15 },
+ { genre: 'Strategy', platform: 'N64', count: 29 },
+ { genre: 'Strategy', platform: 'XOne', count: 23 },
+ { genre: 'Simulation', platform: 'PS4', count: 15 },
+ { genre: 'Simulation', platform: 'XOne', count: 36 },
+ { genre: 'Simulation', platform: 'N64', count: 20 },
+ { genre: 'Simulation', platform: 'Wii', count: 50 },
+];
diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/superset-ui-chart/SuperChartStories.tsx b/superset-frontend/packages/superset-ui-demo/storybook/stories/superset-ui-chart/SuperChartStories.tsx
index 490f498ec137..d2eb5dae4445 100644
--- a/superset-frontend/packages/superset-ui-demo/storybook/stories/superset-ui-chart/SuperChartStories.tsx
+++ b/superset-frontend/packages/superset-ui-demo/storybook/stories/superset-ui-chart/SuperChartStories.tsx
@@ -110,7 +110,7 @@ export const fixedHeight100Width = () => {
};
fixedHeight100Width.story = { name: 'fixed height, 100% width' };
-export const withErrorBoundar = () => {
+export const withErrorBoundary = () => {
const width = text('Vis width', '500');
const height = text('Vis height', '300');
diff --git a/superset-frontend/packages/superset-ui-switchboard/package.json b/superset-frontend/packages/superset-ui-switchboard/package.json
index f7e6c69a1b50..1e49d7eb9cde 100644
--- a/superset-frontend/packages/superset-ui-switchboard/package.json
+++ b/superset-frontend/packages/superset-ui-switchboard/package.json
@@ -1,6 +1,6 @@
{
"name": "@superset-ui/switchboard",
- "version": "0.18.26-0",
+ "version": "0.18.26-1",
"description": "Switchboard is a library to make it easier to communicate across browser windows using the MessageChannel API",
"sideEffects": false,
"main": "lib/index.js",
diff --git a/superset-frontend/packages/superset-ui-switchboard/src/switchboard.ts b/superset-frontend/packages/superset-ui-switchboard/src/switchboard.ts
index 2a870e7b694a..ab19d462f1b2 100644
--- a/superset-frontend/packages/superset-ui-switchboard/src/switchboard.ts
+++ b/superset-frontend/packages/superset-ui-switchboard/src/switchboard.ts
@@ -191,7 +191,7 @@ export class Switchboard {
* Instead of an arguments list, arguments are supplied as a map.
*
* @param method the name of the method to call
- * @param args arguments that will be supplied. Must be serializable, no functions or other nonense.
+ * @param args arguments that will be supplied. Must be serializable, no functions or other nonsense.
* @returns whatever is returned from the method
*/
get(method: string, args: unknown = undefined): Promise {
diff --git a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/Calendar.js b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/Calendar.js
index 0417ea3e8b5a..d97557a77b50 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/Calendar.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/Calendar.js
@@ -19,7 +19,7 @@
import PropTypes from 'prop-types';
import { extent as d3Extent, range as d3Range } from 'd3-array';
import { select as d3Select } from 'd3-selection';
-import { getSequentialSchemeRegistry } from '@superset-ui/core';
+import { getSequentialSchemeRegistry, t } from '@superset-ui/core';
import CalHeatMap from './vendor/cal-heatmap';
const propTypes = {
@@ -85,10 +85,12 @@ function Calendar(element, props) {
const metricsData = data.data;
+ const METRIC_TEXT = t('Metric');
+
Object.keys(metricsData).forEach(metric => {
const calContainer = div.append('div');
if (showMetricName) {
- calContainer.text(`Metric: ${verboseMap[metric] || metric}`);
+ calContainer.text(`${METRIC_TEXT}: ${verboseMap[metric] || metric}`);
}
const timestamps = metricsData[metric];
const extents = d3Extent(Object.keys(timestamps), key => timestamps[key]);
diff --git a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts
index fe2c1bd1fc56..9071a278eeba 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts
@@ -21,7 +21,6 @@ import {
ControlPanelConfig,
D3_FORMAT_DOCS,
D3_TIME_FORMAT_OPTIONS,
- formatSelectOptions,
getStandardizedControls,
sections,
} from '@superset-ui/chart-controls';
@@ -40,13 +39,13 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Domain'),
default: 'month',
- choices: formatSelectOptions([
- 'hour',
- 'day',
- 'week',
- 'month',
- 'year',
- ]),
+ choices: [
+ ['hour', t('hour')],
+ ['day', t('day')],
+ ['week', t('week')],
+ ['month', t('month')],
+ ['year', t('year')],
+ ],
description: t('The time unit used for the grouping of blocks'),
},
},
@@ -56,13 +55,13 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Subdomain'),
default: 'day',
- choices: formatSelectOptions([
- 'min',
- 'hour',
- 'day',
- 'week',
- 'month',
- ]),
+ choices: [
+ ['min', t('min')],
+ ['hour', t('hour')],
+ ['day', t('day')],
+ ['week', t('week')],
+ ['month', t('month')],
+ ],
description: t(
'The time unit for each block. Should be a smaller unit than ' +
'domain_granularity. Should be larger or equal to Time Grain',
diff --git a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/images/example.jpg b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/images/example.jpg
new file mode 100644
index 000000000000..0bbf24ae6ffa
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/images/example.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js
index 5c0a9425ef12..926d98421d31 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js
@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from './transformProps';
+import example from './images/example.jpg';
import controlPanel from './controlPanel';
import thumbnail from './images/thumbnail.png';
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
"Visualizes how a metric has changed over a time using a color scale and a calendar view. Gray values are used to indicate missing values and the linear color scheme is used to encode the magnitude of each day's value.",
),
+ exampleGallery: [{ url: example }],
name: t('Calendar Heatmap'),
tags: [
t('Business'),
diff --git a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js
index 3320693f5cc6..760bf0ce2b0c 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js
@@ -9,7 +9,7 @@
/* eslint-disable */
import d3tip from 'd3-tip';
-import { getContrastingColor } from '@superset-ui/core';
+import { getContrastingColor, t } from '@superset-ui/core';
var d3 = typeof require === 'function' ? require('d3') : window.d3;
@@ -256,9 +256,9 @@ var CalHeatMap = function () {
// Formatting of the title displayed when hovering a legend cell
legendTitleFormat: {
- lower: 'less than {min} {name}',
- inner: 'between {down} and {up} {name}',
- upper: 'more than {max} {name}',
+ lower: t('less than {min} {name}'),
+ inner: t('between {down} and {up} {name}'),
+ upper: t('more than {max} {name}'),
},
// Animation duration, in ms
diff --git a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/countries.ts b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/countries.ts
index a083a744392f..fcabfa6d23b5 100755
--- a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/countries.ts
+++ b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/countries.ts
@@ -70,6 +70,7 @@ import nicaragua from './countries/nicaragua.geojson';
import oman from './countries/oman.geojson';
import pakistan from './countries/pakistan.geojson';
import panama from './countries/panama.geojson';
+import papua_new_guinea from './countries/papua new guinea.geojson';
import paraguay from './countries/paraguay.geojson';
import philippines from './countries/philippines.geojson';
import peru from './countries/peru.geojson';
@@ -156,6 +157,7 @@ export const countries = {
oman,
pakistan,
panama,
+ papua_new_guinea,
paraguay,
philippines,
peru,
diff --git a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/countries/papua new guinea.geojson b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/countries/papua new guinea.geojson
new file mode 100644
index 000000000000..ef69aa98e70c
--- /dev/null
+++ b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/countries/papua new guinea.geojson
@@ -0,0 +1,28 @@
+{
+"type": "FeatureCollection",
+"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
+"features": [
+{ "type": "Feature", "properties": { "ISO": "PG-NSB", "NAME_1": "Bougainville" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 155.832229614257812, -6.803332805633488 ], [ 155.835632324219091, -6.80604887008667 ], [ 155.834442138671875, -6.808332920074463 ], [ 155.830551147461165, -6.805276870727482 ], [ 155.832229614257812, -6.803332805633488 ] ] ], [ [ [ 155.828048706054688, -6.803888797759896 ], [ 155.824447631836165, -6.803332805633488 ], [ 155.824172973632926, -6.798056125640812 ], [ 155.828018188476562, -6.800387859344482 ], [ 155.828048706054688, -6.803888797759896 ] ] ], [ [ [ 155.978485107421989, -6.681222915649357 ], [ 155.983078002929688, -6.683187961578369 ], [ 155.973190307617188, -6.683783054351807 ], [ 155.975753784180142, -6.680797100067139 ], [ 155.978485107421989, -6.681222915649357 ] ] ], [ [ [ 155.973327636718864, -6.462777137756348 ], [ 155.970550537109602, -6.458333015441838 ], [ 155.97059631347679, -6.455799102783146 ], [ 155.974441528320312, -6.459444999694824 ], [ 155.973327636718864, -6.462777137756348 ] ] ], [ [ [ 155.850860595703239, -6.304103851318246 ], [ 155.849304199218864, -6.303813934326115 ], [ 155.847946166992415, -6.302528858184814 ], [ 155.850875854492301, -6.302317142486515 ], [ 155.850860595703239, -6.304103851318246 ] ] ], [ [ [ 155.826080322265739, -6.303907871246338 ], [ 155.826126098632812, -6.300658226013184 ], [ 155.829849243164176, -6.300699234008732 ], [ 155.829040527343864, -6.302470207214355 ], [ 155.826080322265739, -6.303907871246338 ] ] ], [ [ [ 155.840560913086051, -6.29999923706049 ], [ 155.836944580078239, -6.300833225250244 ], [ 155.833053588867415, -6.295555114746094 ], [ 155.835556030273665, -6.294167041778508 ], [ 155.840560913086051, -6.29999923706049 ] ] ], [ [ [ 155.122665405273779, -6.282333850860596 ], [ 155.123794555664176, -6.284900188445988 ], [ 155.120925903320426, -6.284873008728027 ], [ 155.120407104492188, -6.283178806304875 ], [ 155.122665405273779, -6.282333850860596 ] ] ], [ [ [ 155.121002197265625, -6.280416965484505 ], [ 155.121810913086165, -6.282083034515324 ], [ 155.119018554687614, -6.283497810363713 ], [ 155.118148803711165, -6.281528949737549 ], [ 155.121002197265625, -6.280416965484505 ] ] ], [ [ [ 155.705307006836051, -6.248538970947266 ], [ 155.706146240234375, -6.249424934387207 ], [ 155.705886840820312, -6.25002908706665 ], [ 155.704406738281591, -6.249456882476807 ], [ 155.705307006836051, -6.248538970947266 ] ] ], [ [ [ 155.030090332031705, -6.247611045837346 ], [ 155.026672363281364, -6.243054866790771 ], [ 155.02780151367233, -6.241722106933537 ], [ 155.031417846679915, -6.243780136108342 ], [ 155.030090332031705, -6.247611045837346 ] ] ], [ [ [ 155.66094970703125, -6.185554981231633 ], [ 155.67610168457054, -6.20822095870966 ], [ 155.66302490234375, -6.217484951019287 ], [ 155.647949218750341, -6.197558879852238 ], [ 155.66094970703125, -6.185554981231633 ] ] ], [ [ [ 155.676177978515966, -6.185339927673283 ], [ 155.666213989257812, -6.185338020324707 ], [ 155.667083740234602, -6.178548812866154 ], [ 155.67359924316429, -6.17946004867548 ], [ 155.676177978515966, -6.185339927673283 ] ] ], [ [ [ 155.634048461914062, -6.16484880447382 ], [ 155.632354736328125, -6.165112972259521 ], [ 155.629852294921875, -6.162644863128662 ], [ 155.635040283203352, -6.16192722320551 ], [ 155.634048461914062, -6.16484880447382 ] ] ], [ [ [ 155.57073974609375, -6.146265029907227 ], [ 155.56842041015625, -6.144521236419678 ], [ 155.568542480468864, -6.141465187072754 ], [ 155.56951904296875, -6.141465187072754 ], [ 155.57073974609375, -6.146265029907227 ] ] ], [ [ [ 155.575531005859602, -6.118831157684326 ], [ 155.572784423828239, -6.117499828338623 ], [ 155.573303222656705, -6.116157054901123 ], [ 155.575271606445426, -6.117499828338623 ], [ 155.575531005859602, -6.118831157684326 ] ] ], [ [ [ 155.520492553710938, -6.069722175598145 ], [ 155.523895263672102, -6.071665763854924 ], [ 155.523895263672102, -6.074789047241154 ], [ 155.52082824707054, -6.072778224944955 ], [ 155.520492553710938, -6.069722175598145 ] ] ], [ [ [ 155.511383056640966, -6.06333398818964 ], [ 155.508285522460938, -6.061902046203613 ], [ 155.508895874023551, -6.05805492401123 ], [ 155.510284423828125, -6.058888912200928 ], [ 155.511383056640966, -6.06333398818964 ] ] ], [ [ [ 155.280761718750114, -5.888261795043945 ], [ 155.280487060546989, -5.88951301574707 ], [ 155.279235839843864, -5.88861083984375 ], [ 155.279510498047102, -5.887497901916504 ], [ 155.280761718750114, -5.888261795043945 ] ] ], [ [ [ 154.605560302734489, -5.733611106872559 ], [ 154.601669311523665, -5.731389045715332 ], [ 154.604721069336165, -5.728332996368408 ], [ 154.607223510742415, -5.730833053588867 ], [ 154.605560302734489, -5.733611106872559 ] ] ], [ [ [ 154.5689697265625, -5.729403972625676 ], [ 154.567794799804801, -5.729125976562443 ], [ 154.566955566406477, -5.727250099182015 ], [ 154.567718505859602, -5.7271790504455 ], [ 154.5689697265625, -5.729403972625676 ] ] ], [ [ [ 154.644729614257812, -5.707499027252197 ], [ 154.647216796875, -5.710277080535889 ], [ 154.643051147461051, -5.713334083557129 ], [ 154.641387939453239, -5.709444999694767 ], [ 154.644729614257812, -5.707499027252197 ] ] ], [ [ [ 155.136108398437727, -5.69277811050415 ], [ 155.136947631836051, -5.694166183471623 ], [ 155.13478088378929, -5.695116996765137 ], [ 155.134399414062727, -5.694006919860783 ], [ 155.136108398437727, -5.69277811050415 ] ] ], [ [ [ 154.627777099609602, -5.608890056610107 ], [ 154.625488281250227, -5.607048034667912 ], [ 154.625976562500114, -5.605694770812988 ], [ 154.6282958984375, -5.606736183166504 ], [ 154.627777099609602, -5.608890056610107 ] ] ], [ [ [ 154.65888977050804, -5.60055494308466 ], [ 154.660003662109602, -5.603889942169189 ], [ 154.65583801269554, -5.604443073272705 ], [ 154.655548095703239, -5.602499008178654 ], [ 154.65888977050804, -5.60055494308466 ] ] ], [ [ [ 154.714172363281477, -5.593332767486572 ], [ 154.710830688476562, -5.599722862243652 ], [ 154.703887939453239, -5.593889236450195 ], [ 154.705276489257926, -5.591389179229736 ], [ 154.714172363281477, -5.593332767486572 ] ] ], [ [ [ 154.695831298828125, -5.593057155609074 ], [ 154.692504882812614, -5.589444160461312 ], [ 154.694442749023551, -5.58611011505127 ], [ 154.698608398437614, -5.589444160461312 ], [ 154.695831298828125, -5.593057155609074 ] ] ], [ [ [ 154.711914062500227, -5.585903167724609 ], [ 154.710830688476562, -5.583611965179387 ], [ 154.711669921875, -5.582499980926514 ], [ 154.712783813476562, -5.583333969116154 ], [ 154.711914062500227, -5.585903167724609 ] ] ], [ [ [ 154.639999389648551, -5.573610782623291 ], [ 154.642501831054915, -5.577498912811279 ], [ 154.6361083984375, -5.57916784286499 ], [ 154.63555908203125, -5.575832843780518 ], [ 154.639999389648551, -5.573610782623291 ] ] ], [ [ [ 154.708328247070426, -5.571945190429631 ], [ 154.706390380859602, -5.57916784286499 ], [ 154.701660156250114, -5.577220916748047 ], [ 154.70582580566429, -5.572501182556096 ], [ 154.708328247070426, -5.571945190429631 ] ] ], [ [ [ 154.703887939453239, -5.569723129272404 ], [ 154.705276489257926, -5.570833206176758 ], [ 154.704162597656364, -5.572501182556096 ], [ 154.702499389648438, -5.571111202239933 ], [ 154.703887939453239, -5.569723129272404 ] ] ], [ [ [ 155.074172973632812, -5.58027791976923 ], [ 155.0736083984375, -5.575276851654053 ], [ 155.083953857421875, -5.565625190734863 ], [ 155.082229614258154, -5.573332786560059 ], [ 155.074172973632812, -5.58027791976923 ] ] ], [ [ [ 154.71498107910179, -5.562897205352726 ], [ 154.714096069336051, -5.562082767486515 ], [ 154.714447021484375, -5.56006908416748 ], [ 154.715484619140625, -5.560833930969125 ], [ 154.71498107910179, -5.562897205352726 ] ] ], [ [ [ 154.711395263671875, -5.560833930969125 ], [ 154.710281372070426, -5.559721946716252 ], [ 154.710830688476562, -5.558333873748779 ], [ 154.712493896484602, -5.559443950653019 ], [ 154.711395263671875, -5.560833930969125 ] ] ], [ [ [ 154.654037475585938, -5.557012081146183 ], [ 154.653060913086051, -5.555760860443058 ], [ 154.65486145019554, -5.554510116577148 ], [ 154.655136108398438, -5.555482864379826 ], [ 154.654037475585938, -5.557012081146183 ] ] ], [ [ [ 154.5977783203125, -5.554443836212158 ], [ 154.600006103515625, -5.557221889495736 ], [ 154.599166870117415, -5.559165954589787 ], [ 154.59722900390625, -5.556111812591553 ], [ 154.5977783203125, -5.554443836212158 ] ] ], [ [ [ 154.704162597656364, -5.553890228271484 ], [ 154.709716796875114, -5.555277824401855 ], [ 154.705551147460938, -5.560833930969125 ], [ 154.701385498046875, -5.549720764160099 ], [ 154.704162597656364, -5.553890228271484 ] ] ], [ [ [ 154.643920898437841, -5.546597003936711 ], [ 154.649169921875227, -5.548055171966496 ], [ 154.649902343750227, -5.550209045410099 ], [ 154.647781372070312, -5.551390171051025 ], [ 154.643920898437841, -5.546597003936711 ] ] ], [ [ [ 154.611389160156364, -5.546111106872559 ], [ 154.613052368164062, -5.547777175903263 ], [ 154.611663818359489, -5.549720764160099 ], [ 154.610275268554915, -5.548055171966496 ], [ 154.611389160156364, -5.546111106872559 ] ] ], [ [ [ 154.700836181640739, -5.545833110809326 ], [ 154.702224731445426, -5.546945095062256 ], [ 154.700271606445426, -5.548333168029728 ], [ 154.699172973632926, -5.546945095062256 ], [ 154.700836181640739, -5.545833110809326 ] ] ], [ [ [ 154.695281982421875, -5.54999923706049 ], [ 154.692504882812614, -5.545277118682748 ], [ 154.693328857421875, -5.544167041778564 ], [ 154.695556640625114, -5.545833110809326 ], [ 154.695281982421875, -5.54999923706049 ] ] ], [ [ [ 154.736114501953352, -5.5436110496521 ], [ 154.734451293945767, -5.54222297668457 ], [ 154.735275268554801, -5.540555000305176 ], [ 154.737228393554688, -5.541944980621338 ], [ 154.736114501953352, -5.5436110496521 ] ] ], [ [ [ 154.716110229492415, -5.536109924316293 ], [ 154.7147216796875, -5.534999847412109 ], [ 154.715835571289062, -5.533333778381291 ], [ 154.716949462890739, -5.534721851348877 ], [ 154.716110229492415, -5.536109924316293 ] ] ], [ [ [ 154.640274047851676, -5.535553932189885 ], [ 154.638885498047102, -5.53388786315918 ], [ 154.641937255859602, -5.531943798065186 ], [ 154.642227172851562, -5.532777786254883 ], [ 154.640274047851676, -5.535553932189885 ] ] ], [ [ [ 154.606109619140625, -5.53388786315918 ], [ 154.604995727539176, -5.532221794128418 ], [ 154.60638427734375, -5.53083419799799 ], [ 154.607223510742415, -5.532777786254883 ], [ 154.606109619140625, -5.53388786315918 ] ] ], [ [ [ 154.70277404785179, -5.498611927032414 ], [ 154.705276489257926, -5.500833988189697 ], [ 154.705001831054688, -5.501666069030762 ], [ 154.702499389648438, -5.500833988189697 ], [ 154.70277404785179, -5.498611927032414 ] ] ], [ [ [ 154.645004272461051, -5.490554809570312 ], [ 154.67999267578125, -5.535553932189885 ], [ 154.662780761718864, -5.587222099304199 ], [ 154.657775878906705, -5.549168109893742 ], [ 154.636672973633154, -5.518610954284611 ], [ 154.645004272461051, -5.490554809570312 ] ] ], [ [ [ 154.707778930664062, -5.480834007263127 ], [ 154.709442138672102, -5.482501029968262 ], [ 154.70889282226608, -5.485001087188664 ], [ 154.705551147460938, -5.482501029968262 ], [ 154.707778930664062, -5.480834007263127 ] ] ], [ [ [ 154.693328857421875, -5.474165916442814 ], [ 154.689437866211392, -5.474721908569279 ], [ 154.686950683593977, -5.47222185134882 ], [ 154.692779541015625, -5.468332767486515 ], [ 154.693328857421875, -5.474165916442814 ] ] ], [ [ [ 154.637771606445312, -5.455554008483887 ], [ 154.640838623046989, -5.470833778381348 ], [ 154.624450683593864, -5.476943969726562 ], [ 154.628326416015625, -5.460833072662354 ], [ 154.637771606445312, -5.455554008483887 ] ] ], [ [ [ 154.672149658203466, -5.448887825012207 ], [ 154.67333984375, -5.450277805328369 ], [ 154.673614501953239, -5.451943874359131 ], [ 154.671386718750341, -5.449999809265137 ], [ 154.672149658203466, -5.448887825012207 ] ] ], [ [ [ 154.653060913086051, -5.450833797454834 ], [ 154.651672363281705, -5.448056221008301 ], [ 154.653884887695312, -5.44666576385498 ], [ 154.654998779296875, -5.448612213134766 ], [ 154.653060913086051, -5.450833797454834 ] ] ], [ [ [ 154.648605346679915, -5.44083309173584 ], [ 154.651672363281705, -5.443890094757023 ], [ 154.645828247070654, -5.445000171661377 ], [ 154.64649963378929, -5.441423892974854 ], [ 154.648605346679915, -5.44083309173584 ] ] ], [ [ [ 154.668609619140739, -5.450833797454834 ], [ 154.663055419922102, -5.443612098693791 ], [ 154.667770385742188, -5.439445018768311 ], [ 154.668884277343864, -5.444168090820256 ], [ 154.668609619140739, -5.450833797454834 ] ] ], [ [ [ 154.572784423828125, -5.431666851043644 ], [ 154.571670532226562, -5.429165840148926 ], [ 154.573608398437727, -5.424722194671574 ], [ 154.574447631835938, -5.426387786865234 ], [ 154.572784423828125, -5.431666851043644 ] ] ], [ [ [ 154.715835571289062, -5.407917976379395 ], [ 154.814010620117188, -5.506303787231388 ], [ 154.837600708007926, -5.496629238128605 ], [ 154.854171752929915, -5.527222156524601 ], [ 154.877914428710938, -5.528123855590763 ], [ 154.881942749023551, -5.547777175903263 ], [ 154.890853881836392, -5.528413772582951 ], [ 155.006668090820426, -5.533609867095947 ], [ 155.014999389648665, -5.558609962463322 ], [ 155.032119750976562, -5.53325700759882 ], [ 155.065826416015966, -5.541110992431641 ], [ 155.056945800781364, -5.566389083862191 ], [ 155.050552368164176, -5.560277938842717 ], [ 155.04583740234375, -5.561110019683838 ], [ 155.05194091796875, -5.575832843780518 ], [ 155.074310302734602, -5.583192825317383 ], [ 155.088058471679915, -5.635834217071533 ], [ 155.133056640625227, -5.706666946411076 ], [ 155.171386718750114, -5.725831985473576 ], [ 155.168334960937614, -5.794166088104248 ], [ 155.191665649414062, -5.823056221008301 ], [ 155.1925048828125, -5.855834007263127 ], [ 155.207504272460938, -5.86722278594965 ], [ 155.224136352539404, -5.85319709777832 ], [ 155.297500610352017, -5.911387920379639 ], [ 155.312774658203239, -5.948610782623234 ], [ 155.350555419921875, -5.94305515289301 ], [ 155.404449462890852, -5.988056182861214 ], [ 155.419723510742301, -6.094086170196476 ], [ 155.454727172851676, -6.146111965179387 ], [ 155.513717651367188, -6.177467823028451 ], [ 155.528335571289176, -6.17604207992548 ], [ 155.529159545898438, -6.155557155609017 ], [ 155.545013427734602, -6.188562870025578 ], [ 155.560836791992188, -6.19083309173584 ], [ 155.54833984375, -6.206943988800049 ], [ 155.583160400390852, -6.221658229827881 ], [ 155.593048095703125, -6.208056926727181 ], [ 155.624114990234375, -6.21884822845459 ], [ 155.611114501953239, -6.185554981231633 ], [ 155.628097534179801, -6.166141033172607 ], [ 155.634140014648665, -6.21688985824585 ], [ 155.659652709961165, -6.223333835601807 ], [ 155.666671752929688, -6.249999046325627 ], [ 155.710479736328239, -6.273983001708984 ], [ 155.754043579101562, -6.334819793701172 ], [ 155.819183349609375, -6.362801074981689 ], [ 155.864578247070312, -6.468948841094971 ], [ 155.924316406250114, -6.513771057128906 ], [ 155.921661376953125, -6.597498893737736 ], [ 155.965560913085938, -6.690000057220459 ], [ 155.952224731445312, -6.756389141082707 ], [ 155.915832519531477, -6.801387786865234 ], [ 155.901657104492188, -6.777536869049015 ], [ 155.921035766601562, -6.753324031829834 ], [ 155.913604736328125, -6.716944217681885 ], [ 155.875717163085938, -6.781445980071965 ], [ 155.863327026367188, -6.783332824707031 ], [ 155.85267639160179, -6.75471019744873 ], [ 155.820846557617415, -6.762929916381779 ], [ 155.73455810546875, -6.838260173797607 ], [ 155.708404541015739, -6.88042688369751 ], [ 155.654205322265625, -6.850604057311955 ], [ 155.603179931640625, -6.861822128295898 ], [ 155.522216796875, -6.839167118072453 ], [ 155.339996337890739, -6.728518009185734 ], [ 155.248886108398438, -6.634444236755371 ], [ 155.157211303710938, -6.520174980163517 ], [ 155.166671752929801, -6.511388778686523 ], [ 155.199707031250114, -6.527605056762695 ], [ 155.229995727539176, -6.443334102630615 ], [ 155.230880737304915, -6.420362949371338 ], [ 155.19610595703125, -6.394721984863281 ], [ 155.223892211914176, -6.348888874053955 ], [ 155.207687377929688, -6.308613777160645 ], [ 155.164352416992415, -6.275576114654541 ], [ 155.039718627929688, -6.248120784759521 ], [ 155.02491760253929, -6.222308158874512 ], [ 154.9697265625, -6.196668148040771 ], [ 154.966949462890852, -6.132777214050236 ], [ 154.947021484375, -6.09833383560175 ], [ 154.815826416015625, -6.022500991821232 ], [ 154.802505493164176, -5.984722137451172 ], [ 154.74110412597679, -5.934999942779541 ], [ 154.730834960937614, -5.888332843780518 ], [ 154.74749755859375, -5.848889827728271 ], [ 154.695007324218864, -5.744999885559082 ], [ 154.717498779296875, -5.707221031188965 ], [ 154.71368408203125, -5.645321846008244 ], [ 154.73805236816429, -5.601110935211125 ], [ 154.718887329101562, -5.563610076904297 ], [ 154.73638916015625, -5.560555934905949 ], [ 154.751388549804801, -5.584166049957275 ], [ 154.755004882812614, -5.547221183776799 ], [ 154.773056030273438, -5.546111106872559 ], [ 154.754714965820426, -5.537222862243596 ], [ 154.7469482421875, -5.497499942779541 ], [ 154.727783203125114, -5.496665000915471 ], [ 154.701950073242188, -5.457778930664006 ], [ 154.67083740234375, -5.441668033599854 ], [ 154.715835571289062, -5.407917976379395 ] ] ], [ [ [ 154.578887939453125, -5.384167194366398 ], [ 154.577499389648438, -5.392499923705998 ], [ 154.573883056640625, -5.394999980926514 ], [ 154.571945190430142, -5.384723186492863 ], [ 154.578887939453125, -5.384167194366398 ] ] ], [ [ [ 154.563613891601676, -5.341666221618652 ], [ 154.564727783203125, -5.354444980621338 ], [ 154.552505493164176, -5.320831775665283 ], [ 154.555831909179688, -5.323888778686523 ], [ 154.563613891601676, -5.341666221618652 ] ] ], [ [ [ 154.538604736328239, -5.29777717590332 ], [ 154.549728393554688, -5.304722785949707 ], [ 154.55055236816429, -5.309999942779541 ], [ 154.533340454101562, -5.304998874664193 ], [ 154.538604736328239, -5.29777717590332 ] ] ], [ [ [ 154.559997558594091, -5.29423713684082 ], [ 154.558471679687841, -5.2933349609375 ], [ 154.559722900390852, -5.291875839233398 ], [ 154.560562133789176, -5.293056964874268 ], [ 154.559997558594091, -5.29423713684082 ] ] ], [ [ [ 154.5594482421875, -5.291388034820557 ], [ 154.558334350585938, -5.291110038757324 ], [ 154.558609008789176, -5.289721965789795 ], [ 154.559722900390852, -5.289721965789795 ], [ 154.5594482421875, -5.291388034820557 ] ] ], [ [ [ 154.557495117187614, -5.283889770507812 ], [ 154.556945800781591, -5.287499904632512 ], [ 154.553680419921989, -5.285347938537598 ], [ 154.555831909179688, -5.28055477142334 ], [ 154.557495117187614, -5.283889770507812 ] ] ], [ [ [ 154.520828247070767, -5.194167137145939 ], [ 154.528335571289404, -5.19999885559082 ], [ 154.533050537109489, -5.21083402633667 ], [ 154.515548706054801, -5.206943988800049 ], [ 154.520828247070767, -5.194167137145939 ] ] ], [ [ [ 154.542221069335938, -5.171111106872502 ], [ 154.542221069335938, -5.175556182861328 ], [ 154.537216186523665, -5.173890113830566 ], [ 154.538330078125114, -5.171946048736515 ], [ 154.542221069335938, -5.171111106872502 ] ] ], [ [ [ 154.512466430664062, -5.166909217834473 ], [ 154.516113281250114, -5.169999122619572 ], [ 154.515655517578352, -5.174343109130859 ], [ 154.50917053222679, -5.166388988494873 ], [ 154.512466430664062, -5.166909217834473 ] ] ], [ [ [ 154.562774658203352, -5.151944160461426 ], [ 154.560760498047216, -5.151526927947998 ], [ 154.560836791992301, -5.15055608749384 ], [ 154.562774658203352, -5.150000095367375 ], [ 154.562774658203352, -5.151944160461426 ] ] ], [ [ [ 154.55055236816429, -5.123333930969238 ], [ 154.55194091796875, -5.125833988189697 ], [ 154.548339843750114, -5.128056049346924 ], [ 154.547775268554801, -5.125555992126465 ], [ 154.55055236816429, -5.123333930969238 ] ] ], [ [ [ 154.555557250976676, -5.122777938842773 ], [ 154.55360412597679, -5.121111869811955 ], [ 154.555831909179688, -5.119442939758244 ], [ 154.556671142578352, -5.122221946716309 ], [ 154.555557250976676, -5.122777938842773 ] ] ], [ [ [ 154.557785034179801, -5.112223148345947 ], [ 154.559997558594091, -5.114445209503174 ], [ 154.557785034179801, -5.118332862854004 ], [ 154.55610656738304, -5.114445209503174 ], [ 154.557785034179801, -5.112223148345947 ] ] ], [ [ [ 154.562225341796989, -5.106388092041016 ], [ 154.560531616210938, -5.10579776763916 ], [ 154.561737060546875, -5.104410171508732 ], [ 154.562225341796989, -5.104444026947021 ], [ 154.562225341796989, -5.106388092041016 ] ] ], [ [ [ 154.6219482421875, -5.002707958221322 ], [ 154.649032592773438, -5.015666961669865 ], [ 154.678924560547102, -5.085564136505127 ], [ 154.674072265625, -5.155706882476807 ], [ 154.712692260742415, -5.1843581199646 ], [ 154.681106567382926, -5.420759201049748 ], [ 154.654159545898551, -5.443890094757023 ], [ 154.648330688476562, -5.408332824707031 ], [ 154.618331909179801, -5.461111068725586 ], [ 154.598617553711165, -5.412981986999512 ], [ 154.613891601562727, -5.428331851959229 ], [ 154.615829467773551, -5.418056011199951 ], [ 154.577774047851562, -5.3561110496521 ], [ 154.555282592773438, -5.271944999694824 ], [ 154.550827026367301, -5.219723224639893 ], [ 154.571945190430142, -5.205555915832463 ], [ 154.556396484375, -5.136944770812988 ], [ 154.570281982421989, -5.109167098998967 ], [ 154.554443359375114, -5.09833383560175 ], [ 154.515838623047102, -5.124444007873535 ], [ 154.551116943359489, -5.065555095672494 ], [ 154.6219482421875, -5.002707958221322 ] ] ], [ [ [ 155.467224121093977, -4.815001010894662 ], [ 155.469955444335938, -4.817523956298828 ], [ 155.463333129882812, -4.817777156829834 ], [ 155.466110229492642, -4.813333034515324 ], [ 155.467224121093977, -4.815001010894662 ] ] ], [ [ [ 155.471084594726676, -4.777369976043701 ], [ 155.470840454101676, -4.781109809875375 ], [ 155.464447021484489, -4.786388874053955 ], [ 155.462493896484489, -4.77861213684082 ], [ 155.471084594726676, -4.777369976043701 ] ] ], [ [ [ 157.033340454101676, -4.767222881317082 ], [ 157.037506103515625, -4.775834083557072 ], [ 157.024444580078125, -4.780831813812199 ], [ 157.032226562500227, -4.76444482803339 ], [ 157.033340454101676, -4.767222881317082 ] ] ], [ [ [ 157.036972045898665, -4.765114784240723 ], [ 157.035034179687727, -4.764907836914062 ], [ 157.034820556640625, -4.76462984085083 ], [ 157.037506103515625, -4.763446807861328 ], [ 157.036972045898665, -4.765114784240723 ] ] ], [ [ [ 157.035293579101676, -4.756967067718449 ], [ 157.03765869140625, -4.758218765258732 ], [ 157.032501220703125, -4.758889198303109 ], [ 157.033432006836051, -4.755993843078556 ], [ 157.035293579101676, -4.756967067718449 ] ] ], [ [ [ 157.03315734863304, -4.754199981689453 ], [ 157.032821655273551, -4.753159046173096 ], [ 157.036911010742188, -4.751420021057072 ], [ 157.03620910644554, -4.753365993499699 ], [ 157.03315734863304, -4.754199981689453 ] ] ], [ [ [ 157.036560058593977, -4.750236988067627 ], [ 157.033645629882812, -4.752114772796574 ], [ 157.032196044921989, -4.750968933105469 ], [ 157.032821655273551, -4.750308036804199 ], [ 157.036560058593977, -4.750236988067627 ] ] ], [ [ [ 157.031433105468864, -4.74523210525507 ], [ 157.033645629882812, -4.743909835815373 ], [ 157.03413391113304, -4.74412012100214 ], [ 157.031906127929801, -4.746553897857666 ], [ 157.02996826171875, -4.744885921478271 ], [ 157.031433105468864, -4.74523210525507 ] ] ], [ [ [ 157.031845092773665, -4.740087985992432 ], [ 157.029006958007926, -4.741963863372803 ], [ 157.028381347656364, -4.741895198821965 ], [ 157.0284423828125, -4.740227222442627 ], [ 157.031845092773665, -4.740087985992432 ] ] ], [ [ [ 157.028717041015625, -4.737724781036377 ], [ 157.030319213867415, -4.736958980560246 ], [ 157.03108215332054, -4.737308025360107 ], [ 157.027618408203239, -4.739738941192627 ], [ 157.028717041015625, -4.737724781036377 ] ] ], [ [ [ 157.026855468750114, -4.736611843109131 ], [ 157.025680541992188, -4.735775947570744 ], [ 157.028930664062727, -4.733691215515137 ], [ 157.029205322265625, -4.734525203704834 ], [ 157.026855468750114, -4.736611843109131 ] ] ], [ [ [ 157.027206420898438, -4.733900070190373 ], [ 157.025741577148665, -4.735219955444336 ], [ 157.024841308593864, -4.73473405838007 ], [ 157.025253295898438, -4.733691215515137 ], [ 157.027206420898438, -4.733900070190373 ] ] ], [ [ [ 155.306671142578239, -4.723055839538517 ], [ 155.309722900390739, -4.725833892822209 ], [ 155.306396484375, -4.728056907653809 ], [ 155.304992675781364, -4.725555896759033 ], [ 155.306671142578239, -4.723055839538517 ] ] ], [ [ [ 155.43556213378929, -4.715555191040039 ], [ 155.43611145019554, -4.717220783233643 ], [ 155.43251037597679, -4.718550205230656 ], [ 155.432678222656477, -4.716455936431828 ], [ 155.43556213378929, -4.715555191040039 ] ] ], [ [ [ 155.429504394531364, -4.71290922164917 ], [ 155.428726196289517, -4.71260404586792 ], [ 155.426925659179688, -4.708103179931584 ], [ 155.43072509765625, -4.709121227264404 ], [ 155.429504394531364, -4.71290922164917 ] ] ], [ [ [ 156.93756103515625, -4.704438209533691 ], [ 156.936737060546989, -4.703533172607365 ], [ 156.939437866210938, -4.702221870422306 ], [ 156.9390869140625, -4.703671932220402 ], [ 156.93756103515625, -4.704438209533691 ] ] ], [ [ [ 155.336044311523551, -4.668369770049992 ], [ 155.334426879882812, -4.666180133819466 ], [ 155.33575439453125, -4.664566993713322 ], [ 155.33758544921875, -4.666116237640381 ], [ 155.336044311523551, -4.668369770049992 ] ] ], [ [ [ 154.203674316406364, -4.514444828033447 ], [ 154.202499389648551, -4.513887882232666 ], [ 154.203048706054915, -4.512292861938363 ], [ 154.204162597656364, -4.512777805328312 ], [ 154.203674316406364, -4.514444828033447 ] ] ], [ [ [ 154.168212890625114, -4.503141880035344 ], [ 154.165557861328466, -4.50083398818964 ], [ 154.165649414062727, -4.488195896148682 ], [ 154.168548583984489, -4.491462230682373 ], [ 154.168212890625114, -4.503141880035344 ] ] ], [ [ [ 154.166381835937727, -4.460834980010929 ], [ 154.163665771484375, -4.468417167663517 ], [ 154.1658935546875, -4.479289054870549 ], [ 154.159164428711165, -4.462501049041748 ], [ 154.166381835937727, -4.460834980010929 ] ] ], [ [ [ 154.183090209961051, -4.449097156524601 ], [ 154.229583740234489, -4.471593856811523 ], [ 154.249069213867301, -4.532028198242188 ], [ 154.236877441406364, -4.574854850768986 ], [ 154.205825805664062, -4.572776794433537 ], [ 154.164993286132812, -4.519166946411133 ], [ 154.169723510742301, -4.507778167724609 ], [ 154.201385498046989, -4.560555934906006 ], [ 154.197784423828239, -4.539721965789795 ], [ 154.233474731445312, -4.569056987762394 ], [ 154.216598510742415, -4.48359918594349 ], [ 154.165283203125227, -4.456943988799935 ], [ 154.183090209961051, -4.449097156524601 ] ] ], [ [ [ 154.108337402344091, -4.380279064178467 ], [ 154.105834960937614, -4.378888130187988 ], [ 154.106109619140852, -4.376944065093937 ], [ 154.108612060546989, -4.379166126251221 ], [ 154.108337402344091, -4.380279064178467 ] ] ], [ [ [ 154.100479125976562, -4.369361877441349 ], [ 154.102142333984602, -4.369917869567814 ], [ 154.102691650390739, -4.37325382232666 ], [ 154.099777221679688, -4.371098041534367 ], [ 154.100479125976562, -4.369361877441349 ] ] ], [ [ [ 154.135482788086165, -4.36123609542841 ], [ 154.148330688476676, -4.438333034515381 ], [ 154.14277648925804, -4.445555210113525 ], [ 154.126937866211165, -4.370833873748779 ], [ 154.10749816894554, -4.366942882537842 ], [ 154.135482788086165, -4.36123609542841 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-CPM", "NAME_1": "Central" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 149.580429077148551, -10.405835151672363 ], [ 149.579803466796989, -10.406524658203011 ], [ 149.576797485351676, -10.40562725067133 ], [ 149.57826232910179, -10.404490470886174 ], [ 149.580429077148551, -10.405835151672363 ] ] ], [ [ [ 149.363891601562614, -10.409167289733773 ], [ 149.360092163086165, -10.406002998352051 ], [ 149.362152099609602, -10.402752876281738 ], [ 149.363433837890625, -10.403489112853947 ], [ 149.363891601562614, -10.409167289733773 ] ] ], [ [ [ 149.460281372070312, -10.39333438873291 ], [ 149.455139160156364, -10.396478652954102 ], [ 149.451385498046875, -10.39333438873291 ], [ 149.457229614257812, -10.389445304870605 ], [ 149.460281372070312, -10.39333438873291 ] ] ], [ [ [ 149.358612060546875, -10.38273811340332 ], [ 149.361389160156477, -10.382779121398869 ], [ 149.359420776367529, -10.395148277282601 ], [ 149.35017395019554, -10.388641357421875 ], [ 149.358612060546875, -10.38273811340332 ] ] ], [ [ [ 149.601516723632812, -10.358221054077035 ], [ 149.602920532227017, -10.359270095825082 ], [ 149.604003906250227, -10.36297607421875 ], [ 149.598419189453125, -10.361594200134277 ], [ 149.601516723632812, -10.358221054077035 ] ] ], [ [ [ 149.346298217773438, -10.345357894897461 ], [ 149.34254455566429, -10.344498634338379 ], [ 149.341186523437614, -10.341830253601017 ], [ 149.346588134765739, -10.342035293579102 ], [ 149.346298217773438, -10.345357894897461 ] ] ], [ [ [ 149.326156616211165, -10.330224037170353 ], [ 149.319015502929688, -10.324614524841309 ], [ 149.320587158203239, -10.321827888488713 ], [ 149.324722290039062, -10.324275970458984 ], [ 149.326156616211165, -10.330224037170353 ] ] ], [ [ [ 149.393051147461165, -10.307223320007211 ], [ 149.39111328125, -10.305832862853947 ], [ 149.391387939453352, -10.304445266723633 ], [ 149.393890380859489, -10.305832862853947 ], [ 149.393051147461165, -10.307223320007211 ] ] ], [ [ [ 147.277496337890739, -9.538612365722656 ], [ 147.276107788086051, -9.537777900695801 ], [ 147.276107788086051, -9.535555839538574 ], [ 147.277496337890739, -9.535834312438965 ], [ 147.277496337890739, -9.538612365722656 ] ] ], [ [ [ 147.290557861328125, -9.533612251281738 ], [ 147.291381835937727, -9.53416633605957 ], [ 147.293060302734602, -9.543332099914551 ], [ 147.289718627929688, -9.538612365722656 ], [ 147.290557861328125, -9.533612251281738 ] ] ], [ [ [ 147.28334045410179, -9.521110534667912 ], [ 147.285827636718864, -9.522500991821232 ], [ 147.287216186523551, -9.528888702392578 ], [ 147.281951904296875, -9.522223472595158 ], [ 147.28334045410179, -9.521110534667912 ] ] ], [ [ [ 147.03999328613304, -9.452221870422363 ], [ 147.03083801269554, -9.449445724487248 ], [ 147.034729003906364, -9.433334350585938 ], [ 147.042221069335938, -9.442222595214844 ], [ 147.03999328613304, -9.452221870422363 ] ] ], [ [ [ 146.889160156250114, -9.425556182861271 ], [ 146.885833740234375, -9.428890228271428 ], [ 146.881942749023551, -9.427778244018555 ], [ 146.887771606445426, -9.42249870300293 ], [ 146.889160156250114, -9.425556182861271 ] ] ], [ [ [ 146.877853393554801, -9.240498542785645 ], [ 146.876449584960938, -9.243212699890137 ], [ 146.871414184570426, -9.242252349853459 ], [ 146.876312255859602, -9.23822021484375 ], [ 146.877853393554801, -9.240498542785645 ] ] ], [ [ [ 146.941375732422102, -9.127150535583496 ], [ 146.936660766601562, -9.129167556762695 ], [ 146.933258056640739, -9.127873420715332 ], [ 146.938507080078239, -9.126667976379395 ], [ 146.941375732422102, -9.127150535583496 ] ] ], [ [ [ 146.921951293945767, -9.120554924011174 ], [ 146.925277709960938, -9.122220993041992 ], [ 146.927215576171875, -9.124443054199219 ], [ 146.923049926757926, -9.124999046325684 ], [ 146.921951293945767, -9.120554924011174 ] ] ], [ [ [ 146.908523559570312, -9.120345115661564 ], [ 146.912200927734602, -9.121929168701172 ], [ 146.913360595703352, -9.123815536499023 ], [ 146.906112670898665, -9.120782852172852 ], [ 146.908523559570312, -9.120345115661564 ] ] ], [ [ [ 146.911346435546875, -9.108577728271484 ], [ 146.912200927734602, -9.109589576721191 ], [ 146.908050537109489, -9.11191463470459 ], [ 146.907501220703239, -9.109992980956974 ], [ 146.911346435546875, -9.108577728271484 ] ] ], [ [ [ 146.980834960937727, -9.046113967895508 ], [ 146.98274230957054, -9.05157470703125 ], [ 146.969497680664176, -9.055825233459416 ], [ 146.969390869140852, -9.050192832946777 ], [ 146.980834960937727, -9.046113967895508 ] ] ], [ [ [ 146.947525024414176, -9.010478973388672 ], [ 146.948120117187614, -9.011692047119141 ], [ 146.946929931640852, -9.012510299682617 ], [ 146.946701049804801, -9.010760307312012 ], [ 146.947525024414176, -9.010478973388672 ] ] ], [ [ [ 146.603469848632926, -8.815481185913086 ], [ 146.602783203125, -8.814652442932072 ], [ 146.604598999023438, -8.814282417297306 ], [ 146.604598999023438, -8.815112113952637 ], [ 146.603469848632926, -8.815481185913086 ] ] ], [ [ [ 146.595703125, -8.815732002258301 ], [ 146.595138549804688, -8.816007614135685 ], [ 146.600555419922102, -8.808611869811955 ], [ 146.600585937500114, -8.812926292419434 ], [ 146.595703125, -8.815732002258301 ] ] ], [ [ [ 146.529846191406364, -8.804290771484375 ], [ 146.548858642578352, -8.824715614318848 ], [ 146.541610717773665, -8.841582298278752 ], [ 146.511108398437955, -8.774444580078125 ], [ 146.529846191406364, -8.804290771484375 ] ] ], [ [ [ 146.555633544921875, -8.77422904968256 ], [ 146.554306030273438, -8.77395057678217 ], [ 146.554367065429801, -8.773053169250488 ], [ 146.555206298828239, -8.772913932800293 ], [ 146.555633544921875, -8.77422904968256 ] ] ], [ [ [ 146.723312377929688, -7.911736011505127 ], [ 146.739807128906364, -7.952634811401367 ], [ 146.784210205078352, -7.933434963226318 ], [ 146.820205688476562, -7.989436149597168 ], [ 146.863311767578125, -7.988033771514893 ], [ 146.903411865234489, -7.960034847259521 ], [ 146.974807739257812, -7.983933925628605 ], [ 147.366012573242188, -8.359833717346135 ], [ 147.461715698242415, -8.348434448242188 ], [ 147.64271545410179, -8.527835845947266 ], [ 147.649414062500455, -8.545034408569336 ], [ 147.633407592773551, -8.565534591674805 ], [ 147.445205688476904, -8.723333358764592 ], [ 147.46051025390625, -8.789134025573674 ], [ 147.500411987304801, -8.827235221862793 ], [ 147.501617431640625, -8.873633384704533 ], [ 147.542419433593864, -8.899934768676701 ], [ 147.553619384765739, -8.95063400268549 ], [ 147.635208129882812, -8.977034568786564 ], [ 147.693008422851562, -9.043934822082463 ], [ 147.747314453125114, -9.1651353836059 ], [ 147.827117919922102, -9.169335365295353 ], [ 147.873718261719205, -9.274435043334904 ], [ 147.90911865234375, -9.293135643005371 ], [ 147.955215454101676, -9.291033744812012 ], [ 147.986114501953239, -9.31363391876215 ], [ 147.983917236328239, -9.353534698486328 ], [ 148.033309936523665, -9.390434265136719 ], [ 148.053207397461051, -9.431235313415527 ], [ 148.052017211914176, -9.467233657836914 ], [ 148.026611328125, -9.511835098266488 ], [ 148.043319702148551, -9.556035995483398 ], [ 148.104415893554688, -9.610434532165471 ], [ 148.214508056640852, -9.664933204650879 ], [ 148.245117187500114, -9.746733665466252 ], [ 148.353713989257812, -9.753334045410099 ], [ 148.392608642578125, -9.741435050964355 ], [ 148.444305419921875, -9.757035255432129 ], [ 148.565719604492301, -9.875433921813965 ], [ 148.709014892578466, -9.936736106872559 ], [ 148.780319213867301, -9.944234848022461 ], [ 148.805419921875114, -9.97723388671875 ], [ 148.846710205078239, -9.940635681152287 ], [ 148.970214843750114, -9.905334472656193 ], [ 148.972106933593977, -9.867136001586914 ], [ 148.942916870117415, -9.807834625244141 ], [ 148.966705322265625, -9.744834899902287 ], [ 149.023513793945426, -9.800736427307129 ], [ 149.134918212890739, -9.758234024047795 ], [ 149.177505493164062, -9.795333862304688 ], [ 149.324615478515852, -9.856535911560059 ], [ 149.319915771484489, -9.935934066772347 ], [ 149.385116577148551, -9.943234443664494 ], [ 149.521011352539062, -10.028834342956486 ], [ 149.653106689453125, -10.038134574890137 ], [ 149.664520263672102, -10.073233604431152 ], [ 149.660919189453239, -10.33293437957758 ], [ 149.604446411133267, -10.351110458374023 ], [ 149.561218261719091, -10.346529006958008 ], [ 149.541885375977017, -10.364514350891113 ], [ 149.509368896484375, -10.346156120300293 ], [ 149.495010375976676, -10.358430862426758 ], [ 149.523895263672102, -10.367777824401742 ], [ 149.485290527343864, -10.365239143371525 ], [ 149.495407104492301, -10.345482826232853 ], [ 149.48428344726608, -10.331950187683105 ], [ 149.460296630859489, -10.335840225219727 ], [ 149.460556030273438, -10.359998703002873 ], [ 149.429992675781591, -10.354166984558105 ], [ 149.448226928711165, -10.333134651184082 ], [ 149.428237915039062, -10.311742782592717 ], [ 149.41499328613304, -10.328055381774902 ], [ 149.405197143555029, -10.292577743530217 ], [ 149.390014648437614, -10.30112361907959 ], [ 149.365798950195426, -10.276935577392578 ], [ 149.32441711425804, -10.314071655273438 ], [ 149.097091674805142, -10.23077201843256 ], [ 149.023864746093864, -10.247262001037541 ], [ 148.964675903320426, -10.288251876831055 ], [ 148.897415161132812, -10.237221717834473 ], [ 148.79611206054733, -10.248862266540527 ], [ 148.77204895019554, -10.229581832885742 ], [ 148.744293212890739, -10.236841201782227 ], [ 148.734329223632926, -10.200265884399357 ], [ 148.780426025390739, -10.205370903015023 ], [ 148.72088623046875, -10.191349983215332 ], [ 148.756591796875114, -10.164546966552678 ], [ 148.770767211914062, -10.164955139160099 ], [ 148.77789306640625, -10.161364555358887 ], [ 148.779006958007926, -10.163022041320801 ], [ 148.771041870117188, -10.17212963104248 ], [ 148.771316528320767, -10.175168037414494 ], [ 148.787902832031477, -10.178252220153752 ], [ 148.772140502929801, -10.17420768737793 ], [ 148.780319213867301, -10.163266181945687 ], [ 148.779754638671989, -10.160642623901367 ], [ 148.762237548828125, -10.163022041320801 ], [ 148.791961669921989, -10.140539169311523 ], [ 148.804397583007812, -10.148139953613224 ], [ 148.807327270507926, -10.14689826965332 ], [ 148.808166503906364, -10.145240783691406 ], [ 148.799728393554915, -10.138333320617676 ], [ 148.783615112304688, -10.141388893127441 ], [ 148.78083801269554, -10.123889923095703 ], [ 148.738906860351676, -10.167044639587402 ], [ 148.72222900390625, -10.143333435058594 ], [ 148.708053588867301, -10.147665977477971 ], [ 148.708023071289062, -10.131130218505859 ], [ 148.732559204101676, -10.127743721008301 ], [ 148.73785400390625, -10.122535705566406 ], [ 148.737228393554801, -10.121110916137638 ], [ 148.70916748046875, -10.129721641540471 ], [ 148.697235107421875, -10.111420631408691 ], [ 148.684371948242188, -10.114998817443791 ], [ 148.699722290039062, -10.116945266723633 ], [ 148.703613281250114, -10.136666297912598 ], [ 148.697784423828125, -10.139722824096623 ], [ 148.697784423828125, -10.133888244628906 ], [ 148.691665649414062, -10.133609771728516 ], [ 148.693328857421875, -10.130000114440861 ], [ 148.692504882812614, -10.126387596130314 ], [ 148.68777465820358, -10.129165649414006 ], [ 148.68580627441429, -10.12456226348877 ], [ 148.683990478515625, -10.126495361328068 ], [ 148.697219848632812, -10.140555381774902 ], [ 148.70472717285179, -10.138333320617676 ], [ 148.703338623046875, -10.144166946411133 ], [ 148.689727783203239, -10.153887748718262 ], [ 148.683349609375114, -10.141070365905705 ], [ 148.684188842773551, -10.149350166320801 ], [ 148.692184448242188, -10.15806770324707 ], [ 148.668334960937614, -10.171111106872502 ], [ 148.653320312500341, -10.160408020019531 ], [ 148.66523742675804, -10.177117347717285 ], [ 148.648818969726676, -10.192209243774414 ], [ 148.6138916015625, -10.178611755371094 ], [ 148.582443237304801, -10.187732696533146 ], [ 148.563217163086165, -10.1703844070434 ], [ 148.513168334960938, -10.197409629821777 ], [ 148.400848388672102, -10.208009719848576 ], [ 148.388351440429688, -10.188091278076172 ], [ 148.340270996093864, -10.175832748413086 ], [ 148.336105346679801, -10.138056755065918 ], [ 148.3553466796875, -10.17343807220459 ], [ 148.357376098632926, -10.175024032592773 ], [ 148.359542846679688, -10.174677848815918 ], [ 148.36463928222679, -10.169709205627441 ], [ 148.3477783203125, -10.158887863159123 ], [ 148.346939086914176, -10.133055686950627 ], [ 148.30110168457054, -10.126667976379395 ], [ 148.274230957031477, -10.139706611633244 ], [ 148.258010864257926, -10.111661911010685 ], [ 148.219451904296875, -10.094325065612793 ], [ 148.178634643554688, -10.101129531860352 ], [ 148.181076049804688, -10.070444107055664 ], [ 148.21186828613304, -10.056012153625488 ], [ 148.239959716796875, -10.02157020568842 ], [ 148.230392456055142, -10.01756572723383 ], [ 148.201950073242415, -10.020000457763558 ], [ 148.1683349609375, -10.077500343322697 ], [ 148.156387329102017, -10.070278167724609 ], [ 148.149291992187614, -10.072900772094727 ], [ 148.17138671875, -10.087223052978459 ], [ 148.125900268554688, -10.125826835632267 ], [ 148.028671264648438, -10.131134986877441 ], [ 148.004714965820426, -10.160555839538574 ], [ 147.971710205078239, -10.161417961120605 ], [ 147.967926025390852, -10.143471717834473 ], [ 147.944564819335938, -10.13502311706543 ], [ 147.959213256836051, -10.120000839233398 ], [ 147.93836975097679, -10.097546577453556 ], [ 147.855270385742301, -10.101389884948674 ], [ 147.887496948242301, -10.098055839538517 ], [ 147.899368286132812, -10.080287933349609 ], [ 147.880538940429801, -10.045149803161564 ], [ 147.889175415039176, -10.035595893859863 ], [ 147.860000610351676, -10.052778244018555 ], [ 147.85194396972679, -10.096945762634277 ], [ 147.8255615234375, -10.058333396911621 ], [ 147.784912109375, -10.049908638000488 ], [ 147.750000000000341, -10.065554618835392 ], [ 147.725006103515739, -10.103334426879883 ], [ 147.708053588867188, -10.017778396606445 ], [ 147.619445800781477, -9.983611106872502 ], [ 147.516662597656705, -9.873332977294922 ], [ 147.515838623047102, -9.810832023620549 ], [ 147.478607177734375, -9.739167213439828 ], [ 147.414169311523438, -9.684722900390625 ], [ 147.396392822265625, -9.641666412353459 ], [ 147.350830078125, -9.597222328186035 ], [ 147.362228393554801, -9.581110954284668 ], [ 147.31304931640625, -9.560556411743107 ], [ 147.324996948242188, -9.539166450500431 ], [ 147.285827636718864, -9.515277862548828 ], [ 147.286407470703239, -9.44273567199707 ], [ 147.271209716796875, -9.40423393249506 ], [ 147.169906616211392, -9.357535362243596 ], [ 147.095306396484602, -9.396434783935547 ], [ 147.081939697265739, -9.428055763244572 ], [ 147.0927734375, -9.446925163269043 ], [ 147.058334350586051, -9.446623802185002 ], [ 147.007217407226676, -9.376666069030762 ], [ 146.988327026367642, -9.293889999389592 ], [ 146.997772216796875, -9.278332710266056 ], [ 146.984161376953125, -9.287499427795353 ], [ 146.938613891601904, -9.266389846801758 ], [ 146.925003051758267, -9.282501220703068 ], [ 146.897994995117188, -9.26875114440918 ], [ 146.926177978515625, -9.248126983642578 ], [ 146.9022216796875, -9.222776412963754 ], [ 146.907501220703239, -9.164443969726506 ], [ 146.916946411132926, -9.159443855285645 ], [ 146.916946411132926, -9.146944999694824 ], [ 146.924972534179915, -9.155819892883301 ], [ 146.93695068359375, -9.153055191039982 ], [ 146.918334960937614, -9.144722938537541 ], [ 146.925003051758267, -9.138609886169434 ], [ 146.926391601562614, -9.133609771728516 ], [ 146.911117553711051, -9.154165267944336 ], [ 146.89031982421875, -9.124492645263615 ], [ 146.901107788086165, -9.119167327880859 ], [ 146.910781860351562, -9.125313758850098 ], [ 146.934722900390852, -9.131668090820312 ], [ 146.95472717285179, -9.132222175598088 ], [ 146.96527099609375, -9.126111030578556 ], [ 146.967773437500114, -9.128890037536621 ], [ 146.96527099609375, -9.125276565551701 ], [ 146.948883056640739, -9.130277633666992 ], [ 146.942779541015739, -9.126111030578556 ], [ 146.932495117187614, -9.125555038452148 ], [ 146.923614501953352, -9.119167327880859 ], [ 146.963272094726562, -9.098325729370117 ], [ 146.969451904296989, -9.07055473327631 ], [ 147.016113281250227, -9.082777976989689 ], [ 146.971115112304801, -9.063888549804688 ], [ 146.991668701171875, -9.049444198608398 ], [ 147.00471496582054, -9.059721946716195 ], [ 147.018325805664176, -9.050000190734863 ], [ 147.004165649414176, -9.058055877685547 ], [ 146.991744995117415, -9.043682098388672 ], [ 146.988891601562727, -9.048334121704045 ], [ 146.979446411132812, -9.044443130493164 ], [ 146.971786499023551, -9.048959732055664 ], [ 146.977157592773438, -9.030176162719727 ], [ 146.96980285644554, -9.00771522521967 ], [ 146.946395874023438, -9.007779121398869 ], [ 146.971115112304801, -9.030278205871525 ], [ 146.957504272460938, -9.046389579772949 ], [ 146.945007324218977, -9.040263175964299 ], [ 146.963058471679688, -9.059165954589787 ], [ 146.950836181640625, -9.085000038146973 ], [ 146.881988525390625, -9.114723205566406 ], [ 146.827499389648551, -9.091667175292912 ], [ 146.809173583984602, -9.062223434448242 ], [ 146.62971496582054, -9.026944160461369 ], [ 146.59138488769554, -8.996212005615178 ], [ 146.565612792968977, -8.94175910949707 ], [ 146.56983947753929, -8.91401290893549 ], [ 146.5478515625, -8.885414123535043 ], [ 146.563934326172102, -8.850235939025822 ], [ 146.590179443359375, -8.854366302490234 ], [ 146.619338989257812, -8.791317939758301 ], [ 146.603057861328239, -8.813887596130371 ], [ 146.60028076171875, -8.799445152282658 ], [ 146.58888244628929, -8.820279121398869 ], [ 146.562774658203352, -8.813610076904297 ], [ 146.571670532226562, -8.801667213439941 ], [ 146.572616577148438, -8.786442756652775 ], [ 146.547271728515625, -8.77027702331543 ], [ 146.559387207031364, -8.749047279357853 ], [ 146.544036865234375, -8.769742965698242 ], [ 146.531524658203239, -8.759805679321289 ], [ 146.523132324218864, -8.715496063232422 ], [ 146.435272216796875, -8.616095542907715 ], [ 146.382568359375114, -8.587371826171818 ], [ 146.386016845703125, -7.920834064483643 ], [ 146.486419677734375, -7.9082350730896 ], [ 146.541107177734489, -7.825333118438721 ], [ 146.652511596680029, -7.772534847259521 ], [ 146.735107421875, -7.829336166381779 ], [ 146.723312377929688, -7.911736011505127 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-CPK", "NAME_1": "Chimbu" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 145.109817504882926, -5.804034233093205 ], [ 145.16461181640625, -5.876634120941162 ], [ 145.124114990234375, -5.991734981536865 ], [ 145.13140869140625, -6.079433917999268 ], [ 145.189605712890625, -6.128933906555119 ], [ 145.25032043457054, -6.127735137939396 ], [ 145.269515991210938, -6.284033775329533 ], [ 145.245208740234489, -6.32743501663208 ], [ 145.182617187500227, -6.352435111999512 ], [ 145.188217163086051, -6.399334907531738 ], [ 145.1715087890625, -6.420235157012939 ], [ 145.022109985351904, -6.398334980010929 ], [ 144.991607666015625, -6.439936161041203 ], [ 144.988113403320426, -6.511233806610107 ], [ 145.017318725586051, -6.542435169219914 ], [ 145.104217529297102, -6.57083606719965 ], [ 145.201110839843977, -6.679935932159367 ], [ 145.303909301757926, -6.684333801269418 ], [ 145.343109130859489, -6.716034889221191 ], [ 145.3502197265625, -6.733934879302979 ], [ 145.29512023925804, -6.868734836578312 ], [ 145.203414916992415, -6.813035011291504 ], [ 145.155319213867415, -6.838734149932804 ], [ 144.994216918945426, -6.796134948730469 ], [ 144.913619995117188, -6.725635051727295 ], [ 144.851806640625, -6.747634887695256 ], [ 144.761917114257926, -6.709134101867619 ], [ 144.697814941406364, -6.710334777831974 ], [ 144.557006835937727, -6.647833824157715 ], [ 144.557907104492188, -6.60433387756342 ], [ 144.539215087890625, -6.581234931945744 ], [ 144.442306518554688, -6.563635826110783 ], [ 144.422210693359375, -6.544333934783936 ], [ 144.438613891601562, -6.460936069488469 ], [ 144.542205810546989, -6.433334827423039 ], [ 144.559814453125, -6.36993408203125 ], [ 144.602111816406591, -6.387733936309758 ], [ 144.64491271972679, -6.30973577499384 ], [ 144.682113647461051, -6.300836086273193 ], [ 144.688110351562614, -6.268733978271484 ], [ 144.725814819336165, -6.243435859680176 ], [ 144.741714477539176, -6.164634227752629 ], [ 144.72991943359375, -6.11573600769043 ], [ 144.751312255859375, -6.093635082244873 ], [ 144.694213867187614, -6.036633968353158 ], [ 144.778610229492415, -5.970334053039494 ], [ 144.802505493164517, -5.931334972381592 ], [ 144.816314697265625, -5.895534992217961 ], [ 144.79200744628929, -5.835433959960881 ], [ 144.8297119140625, -5.783133983612061 ], [ 144.867813110351562, -5.808834075927678 ], [ 145.026412963867415, -5.775935173034554 ], [ 145.079910278320312, -5.782635211944523 ], [ 145.109817504882926, -5.804034233093205 ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-EBR", "NAME_1": "East New Britain" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 150.916381835937614, -6.037499904632568 ], [ 150.917770385742188, -6.038055896759033 ], [ 150.925277709961165, -6.045556068420353 ], [ 150.917221069336165, -6.046110153198242 ], [ 150.916381835937614, -6.037499904632568 ] ] ], [ [ [ 150.898056030273551, -6.024445056915283 ], [ 150.896392822265625, -6.02555513381958 ], [ 150.894439697265739, -6.024167060852051 ], [ 150.897506713867529, -6.022500991821232 ], [ 150.898056030273551, -6.024445056915283 ] ] ], [ [ [ 151.46827697753929, -5.688774108886662 ], [ 151.469467163086051, -5.689190864562931 ], [ 151.470230102539176, -5.689957141876221 ], [ 151.466064453125114, -5.688634872436467 ], [ 151.46827697753929, -5.688774108886662 ] ] ], [ [ [ 151.491149902343864, -5.626969814300537 ], [ 151.491149902343864, -5.627283096313477 ], [ 151.487686157226562, -5.627499103546143 ], [ 151.488372802734489, -5.626553058624268 ], [ 151.491149902343864, -5.626969814300537 ] ] ], [ [ [ 151.748611450195312, -5.570555210113525 ], [ 151.750000000000227, -5.573888778686467 ], [ 151.745834350586051, -5.573888778686467 ], [ 151.744720458984489, -5.571667194366398 ], [ 151.748611450195312, -5.570555210113525 ] ] ], [ [ [ 151.744720458984489, -5.576389789581299 ], [ 151.739166259765739, -5.571667194366398 ], [ 151.740280151367415, -5.563056945800781 ], [ 151.74249267578125, -5.565555095672551 ], [ 151.744720458984489, -5.576389789581299 ] ] ], [ [ [ 151.64735412597679, -5.55215311050415 ], [ 151.645004272460938, -5.543333053588867 ], [ 151.64666748046875, -5.538610935211182 ], [ 151.651947021484489, -5.546389102935791 ], [ 151.64735412597679, -5.55215311050415 ] ] ], [ [ [ 152.347900390625, -4.267350196838322 ], [ 152.3499755859375, -4.270257949829102 ], [ 152.338378906250227, -4.271755218505859 ], [ 152.344467163085938, -4.266406059265137 ], [ 152.347900390625, -4.267350196838322 ] ] ], [ [ [ 152.416702270507926, -4.241387844085693 ], [ 152.423812866210938, -4.242096900939828 ], [ 152.41413879394554, -4.246724128723145 ], [ 152.408401489257926, -4.238293170928955 ], [ 152.416702270507926, -4.241387844085693 ] ] ], [ [ [ 152.397247314453239, -4.234067916870117 ], [ 152.40634155273483, -4.236446857452336 ], [ 152.388092041015739, -4.23773193359375 ], [ 152.389633178710938, -4.2343430519104 ], [ 152.397247314453239, -4.234067916870117 ] ] ], [ [ [ 152.438903808593977, -4.22888708114624 ], [ 152.442001342773665, -4.228431224822998 ], [ 152.44691467285179, -4.229754924774056 ], [ 152.441299438476676, -4.23443698883051 ], [ 152.438903808593977, -4.22888708114624 ] ] ], [ [ [ 152.461151123047216, -4.22442722320551 ], [ 152.466598510742415, -4.232007026672363 ], [ 152.449707031250341, -4.233882904052734 ], [ 152.454269409179801, -4.224957942962646 ], [ 152.461151123047216, -4.22442722320551 ] ] ], [ [ [ 152.464599609375, -4.217082977294808 ], [ 152.467926025390852, -4.217432022094727 ], [ 152.465560913085938, -4.220832824707031 ], [ 152.463134765625114, -4.220346927642822 ], [ 152.464599609375, -4.217082977294808 ] ] ], [ [ [ 151.810546875000114, -4.213358879089355 ], [ 151.808944702148665, -4.213150024414006 ], [ 151.808593750000114, -4.212386131286507 ], [ 151.810119628906364, -4.212594032287541 ], [ 151.810546875000114, -4.213358879089355 ] ] ], [ [ [ 151.73628234863304, -4.203595161437988 ], [ 151.735519409179915, -4.203247070312443 ], [ 151.735992431640625, -4.202065944671631 ], [ 151.736968994140625, -4.202691078185978 ], [ 151.73628234863304, -4.203595161437988 ] ] ], [ [ [ 152.414566040039062, -4.201935768127385 ], [ 152.43255615234375, -4.223141193389893 ], [ 152.432235717773551, -4.233559131622258 ], [ 152.396591186523665, -4.219143867492676 ], [ 152.414566040039062, -4.201935768127385 ] ] ], [ [ [ 152.42555236816429, -4.204720973968392 ], [ 152.424163818359375, -4.204720973968392 ], [ 152.421661376953239, -4.201388835906982 ], [ 152.424438476562727, -4.20111083984375 ], [ 152.42555236816429, -4.204720973968392 ] ] ], [ [ [ 151.795562744140739, -4.199722766876164 ], [ 151.794723510742529, -4.199722766876164 ], [ 151.79444885253929, -4.198054790496826 ], [ 151.796112060546875, -4.198332786560002 ], [ 151.795562744140739, -4.199722766876164 ] ] ], [ [ [ 151.940368652343977, -4.17858695983881 ], [ 151.946624755859489, -4.183596134185791 ], [ 151.944305419921875, -4.188353061676025 ], [ 151.9342041015625, -4.182775974273625 ], [ 151.940368652343977, -4.17858695983881 ] ] ], [ [ [ 151.573074340820426, -4.158741950988656 ], [ 151.576644897461392, -4.160048007965088 ], [ 151.577728271484602, -4.163647174835205 ], [ 151.567779541015625, -4.156112194061222 ], [ 151.573074340820426, -4.158741950988656 ] ] ], [ [ [ 151.568878173828239, -4.146534919738656 ], [ 151.567489624023892, -4.145700931549015 ], [ 151.567626953125227, -4.144588947296086 ], [ 151.569366455078352, -4.145840167999211 ], [ 151.568878173828239, -4.146534919738656 ] ] ], [ [ [ 152.194839477539062, -4.163527965545654 ], [ 152.234573364257812, -4.244133949279785 ], [ 152.208709716797102, -4.25089693069458 ], [ 152.196395874023551, -4.226666927337646 ], [ 152.184677124023665, -4.247994899749699 ], [ 152.177215576172102, -4.203888893127441 ], [ 152.160598754882812, -4.205523967742863 ], [ 152.148910522461051, -4.228633880615234 ], [ 152.172195434570312, -4.261407852172852 ], [ 152.156112670898551, -4.283269882202148 ], [ 152.168228149414062, -4.303809165954533 ], [ 152.212188720703239, -4.293382167816105 ], [ 152.278076171875, -4.342771053314209 ], [ 152.391662597656364, -4.321665763854924 ], [ 152.404769897461051, -4.336120128631592 ], [ 152.381942749023551, -4.397500038146973 ], [ 152.355407714843977, -4.416094779968262 ], [ 152.359741210937727, -4.440909862518311 ], [ 152.331497192382812, -4.496329784393311 ], [ 152.382431030273438, -4.615058898925781 ], [ 152.382751464843864, -4.67837381362915 ], [ 152.365386962890739, -4.768818855285645 ], [ 152.328186035156364, -4.818107128143311 ], [ 152.333801269531477, -4.83523511886591 ], [ 152.221466064453352, -4.96998405456543 ], [ 152.160568237304688, -4.97334623336792 ], [ 152.14324951171875, -4.989083766937199 ], [ 152.027770996093864, -4.965278148651123 ], [ 152.006057739258154, -4.98958683013916 ], [ 151.998214721679801, -4.971992015838566 ], [ 151.970550537109489, -4.969165802001953 ], [ 151.952758789062727, -4.990168094634953 ], [ 151.950439453125114, -5.022334098815861 ], [ 151.96832275390625, -5.043666839599609 ], [ 151.942810058593864, -5.097107887268066 ], [ 151.949813842773438, -5.141892910003605 ], [ 151.993896484375, -5.196389198303223 ], [ 152.020736694336051, -5.196723937988281 ], [ 152.055053710937614, -5.223379135131836 ], [ 152.13337707519554, -5.329991817474365 ], [ 152.133895874023438, -5.36583423614502 ], [ 152.085159301757926, -5.425864219665527 ], [ 152.086547851562841, -5.447021007537785 ], [ 152.056106567382926, -5.445257186889592 ], [ 152.010330200195426, -5.468760013580322 ], [ 151.959716796875, -5.518332958221379 ], [ 151.915832519531364, -5.525834083557015 ], [ 151.888336181640625, -5.54999923706049 ], [ 151.860549926757812, -5.542500972747746 ], [ 151.811950683593977, -5.587500095367432 ], [ 151.755554199219205, -5.560277938842717 ], [ 151.72138977050804, -5.515276908874455 ], [ 151.658340454101676, -5.512500762939453 ], [ 151.622222900390852, -5.567777156829777 ], [ 151.5836181640625, -5.528612136840763 ], [ 151.471115112304915, -5.521667003631535 ], [ 151.44476318359375, -5.571070194244328 ], [ 151.455307006836165, -5.629885196685734 ], [ 151.512771606445312, -5.635834217071533 ], [ 151.5130615234375, -5.671667098998967 ], [ 151.491394042968864, -5.69277811050415 ], [ 151.47860717773483, -5.69388818740839 ], [ 151.452499389648438, -5.685277938842717 ], [ 151.408615112304801, -5.703054904937687 ], [ 151.426391601562614, -5.710555076599121 ], [ 151.389450073242188, -5.735833168029671 ], [ 151.40167236328125, -5.750556945800724 ], [ 151.375000000000114, -5.808125019073486 ], [ 151.209716796875114, -5.901668071746826 ], [ 151.215560913086165, -5.923055171966553 ], [ 151.186325073242188, -5.956014156341496 ], [ 151.166107177734375, -5.960556030273381 ], [ 151.150558471679801, -5.940001010894775 ], [ 151.125839233398438, -5.963332176208382 ], [ 151.109024047851676, -5.955275058746281 ], [ 151.009262084961051, -6.033789157867375 ], [ 150.985488891601562, -6.007362842559814 ], [ 150.954650878906477, -6.019651889800969 ], [ 150.907226562500114, -6.010000228881836 ], [ 150.827774047851676, -6.046666145324707 ], [ 150.814163208007812, -6.022500991821232 ], [ 150.788391113281364, -6.022847175598145 ], [ 150.795272827148779, -6.017221927642822 ], [ 150.796112060546989, -6.014165878295898 ], [ 150.786117553711279, -6.00222110748291 ], [ 150.794479370117301, -6.016091823577881 ], [ 150.76861572265625, -6.038611888885498 ], [ 150.780181884765739, -6.07494401931757 ], [ 150.606811523437614, -5.919235229492188 ], [ 150.594207763671989, -5.73863410949707 ], [ 150.729217529296989, -5.732833862304631 ], [ 150.814514160156364, -5.748035907745361 ], [ 150.945816040039062, -5.702435016632023 ], [ 150.954818725586165, -5.673435211181584 ], [ 150.939010620117415, -5.626934051513672 ], [ 150.950515747070426, -5.599034786224365 ], [ 151.030319213867415, -5.609535217285099 ], [ 151.212509155273665, -5.474934101104736 ], [ 151.213607788085938, -5.432634830474854 ], [ 151.152908325195312, -5.421435832977238 ], [ 151.142211914062614, -5.39533519744873 ], [ 151.265213012695426, -5.150934219360295 ], [ 151.342208862304915, -5.039535045623779 ], [ 151.429611206054688, -4.981234073638916 ], [ 151.690017700195312, -4.97843599319458 ], [ 151.645706176757926, -4.934734821319466 ], [ 151.68550109863304, -4.867275238037053 ], [ 151.691390991210938, -4.797221183776855 ], [ 151.657501220703352, -4.765776157379094 ], [ 151.66717529296875, -4.674827098846379 ], [ 151.656875610351562, -4.612627029418945 ], [ 151.611312866211051, -4.564597129821777 ], [ 151.62158203125, -4.47567892074585 ], [ 151.558258056640625, -4.39619779586792 ], [ 151.533050537109375, -4.387845039367676 ], [ 151.534057617187727, -4.341302871703988 ], [ 151.508743286133267, -4.309707164764404 ], [ 151.520217895507812, -4.289424896240234 ], [ 151.490097045898551, -4.210516929626465 ], [ 151.52239990234375, -4.185382843017578 ], [ 151.55731201171875, -4.189073085784855 ], [ 151.571838378906364, -4.206385135650635 ], [ 151.633895874023438, -4.189722061157227 ], [ 151.634719848632812, -4.200078964233398 ], [ 151.706481933593977, -4.200108051299992 ], [ 151.719406127929688, -4.219678878784123 ], [ 151.765289306640739, -4.204090118408146 ], [ 151.833007812500114, -4.218915939330998 ], [ 151.853286743164062, -4.235957145690918 ], [ 151.839706420898551, -4.271603107452393 ], [ 151.8504638671875, -4.289158821105957 ], [ 151.946533203125114, -4.341112136840707 ], [ 151.988006591797102, -4.317158222198486 ], [ 152.031661987304688, -4.259168148040715 ], [ 151.983352661132926, -4.213062763214054 ], [ 151.98519897460983, -4.197357177734375 ], [ 152.124160766601562, -4.208333969116154 ], [ 152.166183471679915, -4.132823944091797 ], [ 152.194839477539062, -4.163527965545654 ] ] ], [ [ [ 152.450332641601562, -4.121941089630127 ], [ 152.496063232421875, -4.16053581237793 ], [ 152.470458984375, -4.215741157531681 ], [ 152.468093872070426, -4.213890075683594 ], [ 152.473007202148438, -4.203651905059701 ], [ 152.472213745117529, -4.191467761993408 ], [ 152.456130981445426, -4.21296501159668 ], [ 152.430648803710938, -4.212770938873291 ], [ 152.441024780273665, -4.181049823760873 ], [ 152.411041259765625, -4.164589881896973 ], [ 152.446670532226562, -4.144444942474308 ], [ 152.450332641601562, -4.121941089630127 ] ] ], [ [ [ 152.441940307617188, -4.116944789886475 ], [ 152.441390991211051, -4.117498874664307 ], [ 152.439361572265625, -4.114811897277832 ], [ 152.441406250000227, -4.115334033966008 ], [ 152.441940307617188, -4.116944789886475 ] ] ], [ [ [ 152.4381103515625, -4.113141059875431 ], [ 152.43695068359375, -4.114445209503117 ], [ 152.434570312500455, -4.112096786498967 ], [ 152.436996459961165, -4.112167835235539 ], [ 152.4381103515625, -4.113141059875431 ] ] ], [ [ [ 152.42312622070358, -4.117535114288216 ], [ 152.43055725097679, -4.121127128601074 ], [ 152.434112548828125, -4.131944179534855 ], [ 152.406753540039062, -4.115664005279484 ], [ 152.42312622070358, -4.117535114288216 ] ] ], [ [ [ 152.075378417968864, -4.088070869445744 ], [ 152.091201782226676, -4.106321811675969 ], [ 152.082427978515739, -4.131063938140869 ], [ 152.056396484375114, -4.120276927947884 ], [ 152.057220458984375, -4.096110820770207 ], [ 152.075378417968864, -4.088070869445744 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-ESW", "NAME_1": "East Sepik" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 144.50111389160179, -3.950553894042969 ], [ 144.509994506835938, -3.960555076599121 ], [ 144.504440307617301, -3.962498903274479 ], [ 144.496673583984375, -3.976109981536808 ], [ 144.488891601562727, -3.954722881317139 ], [ 144.50111389160179, -3.950553894042969 ] ] ], [ [ [ 144.509445190429688, -3.944721937179565 ], [ 144.52471923828125, -3.95194506645197 ], [ 144.5191650390625, -3.965555906295776 ], [ 144.502777099609375, -3.945833921432495 ], [ 144.509445190429688, -3.944721937179565 ] ] ], [ [ [ 144.481048583984375, -3.932004928588867 ], [ 144.494720458984489, -3.944999933242798 ], [ 144.485839843750227, -3.95194506645197 ], [ 144.475555419922102, -3.941112041473389 ], [ 144.481048583984375, -3.932004928588867 ] ] ], [ [ [ 144.251159667969091, -3.813108921051025 ], [ 144.260787963867415, -3.814095973968392 ], [ 144.264724731445312, -3.818054914474487 ], [ 144.25250244140625, -3.825555086135807 ], [ 144.251159667969091, -3.813108921051025 ] ] ], [ [ [ 144.21846008300804, -3.811835050582886 ], [ 144.244094848632926, -3.821944952011108 ], [ 144.237258911132812, -3.834621906280518 ], [ 144.220962524414176, -3.827138900756779 ], [ 144.21846008300804, -3.811835050582886 ] ] ], [ [ [ 144.126663208007812, -3.811666011810303 ], [ 144.125839233398551, -3.809999942779484 ], [ 144.12611389160179, -3.806665897369328 ], [ 144.126937866211051, -3.809165954589787 ], [ 144.126663208007812, -3.811666011810303 ] ] ], [ [ [ 144.35731506347679, -3.811985015869141 ], [ 144.35346984863304, -3.811358928680363 ], [ 144.352401733398438, -3.801898002624455 ], [ 144.355865478515739, -3.805584907531681 ], [ 144.35731506347679, -3.811985015869141 ] ] ], [ [ [ 144.363616943359602, -3.802500009536686 ], [ 144.361373901367301, -3.799837112426758 ], [ 144.366271972656477, -3.797255039215088 ], [ 144.366668701172102, -3.798610925674438 ], [ 144.363616943359602, -3.802500009536686 ] ] ], [ [ [ 144.352783203125, -3.797236919403019 ], [ 144.349716186523551, -3.803889989852848 ], [ 144.349716186523551, -3.809721946716252 ], [ 144.326660156250114, -3.821110963821411 ], [ 144.352783203125, -3.797236919403019 ] ] ], [ [ [ 144.368057250976676, -3.796667098999023 ], [ 144.366775512695312, -3.796875 ], [ 144.366500854492301, -3.794508934020996 ], [ 144.367782592773551, -3.794723033905029 ], [ 144.368057250976676, -3.796667098999023 ] ] ], [ [ [ 144.252777099609602, -3.789722919464054 ], [ 144.271667480468977, -3.800554990768433 ], [ 144.236404418945767, -3.817861080169678 ], [ 144.230560302734716, -3.80555605888361 ], [ 144.252777099609602, -3.789722919464054 ] ] ], [ [ [ 144.184570312500114, -3.791234016418457 ], [ 144.191665649414062, -3.798888921737671 ], [ 144.179992675781364, -3.8125 ], [ 144.182495117187841, -3.805278062820435 ], [ 144.177780151367188, -3.793333053588867 ], [ 144.184570312500114, -3.791234016418457 ] ] ], [ [ [ 144.167007446289062, -3.788674116134644 ], [ 144.180557250976676, -3.805278062820435 ], [ 144.175247192383154, -3.814479112625122 ], [ 144.158615112304688, -3.804166078567505 ], [ 144.167007446289062, -3.788674116134644 ] ] ], [ [ [ 144.252258300781364, -3.787079095840454 ], [ 144.242630004882812, -3.790278911590519 ], [ 144.235000610351562, -3.789166927337646 ], [ 144.238891601562614, -3.785136938095093 ], [ 144.252258300781364, -3.787079095840454 ] ] ], [ [ [ 144.1905517578125, -3.777499914169312 ], [ 144.267501831054801, -3.778889894485474 ], [ 144.271163940429801, -3.787463903427067 ], [ 144.231674194336051, -3.784166097640991 ], [ 144.224166870117415, -3.813055992126408 ], [ 144.218521118164176, -3.803728103637695 ], [ 144.190826416015739, -3.812777996063176 ], [ 144.195281982421875, -3.797498941421509 ], [ 144.185379028320312, -3.782743930816537 ], [ 144.1905517578125, -3.777499914169312 ] ] ], [ [ [ 144.5938720703125, -3.611123085021916 ], [ 144.583129882812727, -3.61213493347168 ], [ 144.584106445312727, -3.601794004440194 ], [ 144.591873168945312, -3.60235691070551 ], [ 144.5938720703125, -3.611123085021916 ] ] ], [ [ [ 144.820007324218977, -3.596944093704224 ], [ 144.83367919921875, -3.615334987640324 ], [ 144.81939697265625, -3.625736951828003 ], [ 144.803970336914062, -3.6146080493927 ], [ 144.820007324218977, -3.596944093704224 ] ] ], [ [ [ 144.588058471679688, -3.513334035873356 ], [ 144.585815429687727, -3.51067399978632 ], [ 144.586395263672102, -3.50888991355896 ], [ 144.588607788085938, -3.512778043746891 ], [ 144.588058471679688, -3.513334035873356 ] ] ], [ [ [ 143.604171752929801, -3.506942987442017 ], [ 143.601943969726562, -3.506390094757023 ], [ 143.603332519531477, -3.504167079925537 ], [ 143.605560302734375, -3.505554914474487 ], [ 143.604171752929801, -3.506942987442017 ] ] ], [ [ [ 144.604171752929688, -3.496388912200928 ], [ 144.62318420410179, -3.50957798957819 ], [ 144.61763000488304, -3.518471002578679 ], [ 144.589935302734375, -3.51294207572937 ], [ 144.604171752929688, -3.496388912200928 ] ] ], [ [ [ 143.49063110351608, -3.409612894058114 ], [ 143.482284545898551, -3.405694961547852 ], [ 143.485092163086165, -3.400899887084961 ], [ 143.490814208984602, -3.402834892272949 ], [ 143.49063110351608, -3.409612894058114 ] ] ], [ [ [ 143.44465637207054, -3.389448881149292 ], [ 143.453506469726904, -3.392023086547852 ], [ 143.461227416992415, -3.397479057312012 ], [ 143.436370849609375, -3.391844987869263 ], [ 143.44465637207054, -3.389448881149292 ] ] ], [ [ [ 144.413604736328239, -3.38277792930603 ], [ 144.424758911132812, -3.398967027664185 ], [ 144.383895874023551, -3.398612022399846 ], [ 144.398605346679688, -3.38388800621027 ], [ 144.413604736328239, -3.38277792930603 ] ] ], [ [ [ 143.553390502929801, -3.384227991104126 ], [ 143.594543457031364, -3.392268896102848 ], [ 143.636108398437727, -3.419203996658325 ], [ 143.56843566894554, -3.448012113571167 ], [ 143.545791625976676, -3.434252977371216 ], [ 143.559448242187614, -3.429444074630737 ], [ 143.550735473632926, -3.415019035339242 ], [ 143.574386596679801, -3.413183927536011 ], [ 143.536804199218864, -3.386810064315796 ], [ 143.553390502929801, -3.384227991104126 ] ] ], [ [ [ 143.121948242187614, -3.354166030883789 ], [ 143.201950073242188, -3.368055105209351 ], [ 143.236663818359375, -3.391944885253849 ], [ 143.420272827148551, -3.409722089767456 ], [ 143.46388244628929, -3.438610076904297 ], [ 143.51361083984375, -3.44166707992548 ], [ 143.557006835937955, -3.474510908126774 ], [ 143.574172973633267, -3.513056039810124 ], [ 143.596343994140739, -3.517442941665593 ], [ 143.593338012695312, -3.539443969726562 ], [ 143.61305236816429, -3.55666708946228 ], [ 143.632781982421989, -3.548332929611149 ], [ 143.631668090820312, -3.566112041473389 ], [ 143.676940917968864, -3.579998970031738 ], [ 143.703048706054688, -3.551110982894841 ], [ 143.695556640625, -3.585555076599121 ], [ 143.707504272461051, -3.599723100662231 ], [ 143.783050537109489, -3.620277881622258 ], [ 143.824722290039062, -3.647778034210205 ], [ 143.828613281250455, -3.675833940505981 ], [ 143.925277709961051, -3.715958118438721 ], [ 143.974716186523892, -3.789722919464054 ], [ 144.016281127929915, -3.79562592506403 ], [ 143.997955322265852, -3.797076940536499 ], [ 144.00250244140625, -3.819444894790649 ], [ 144.02333068847679, -3.819166898727417 ], [ 144.03277587890625, -3.795833110809212 ], [ 144.009170532226562, -3.798888921737671 ], [ 144.019638061523438, -3.794450044631958 ], [ 144.174728393554688, -3.778611898422241 ], [ 144.14971923828125, -3.798610925674438 ], [ 144.117156982421989, -3.799504995346069 ], [ 144.091384887695312, -3.813055992126408 ], [ 144.086669921875227, -3.826942920684758 ], [ 144.118057250976562, -3.802221059799137 ], [ 144.126388549804801, -3.824999094009343 ], [ 144.180831909179688, -3.846389055252018 ], [ 144.204162597656477, -3.814421892166138 ], [ 144.215270996093864, -3.853888988494816 ], [ 144.26300048828125, -3.868385076522827 ], [ 144.24305725097679, -3.841109991073608 ], [ 144.288116455078239, -3.816250085830688 ], [ 144.27583312988304, -3.798610925674438 ], [ 144.302505493164062, -3.805000066757202 ], [ 144.316680908203352, -3.830190896987915 ], [ 144.35652160644554, -3.814929962158203 ], [ 144.369766235351676, -3.827138900756779 ], [ 144.365585327148551, -3.831732034683228 ], [ 144.36476135253929, -3.838222980499268 ], [ 144.38330078125, -3.877825021743774 ], [ 144.339843750000114, -3.878259897232056 ], [ 144.360565185547102, -3.887468099594059 ], [ 144.385528564453352, -3.879344940185547 ], [ 144.367630004883267, -3.831814050674438 ], [ 144.411117553711392, -3.8247230052948 ], [ 144.432785034179688, -3.804444074630737 ], [ 144.43055725097679, -3.798888921737671 ], [ 144.408889770507926, -3.8247230052948 ], [ 144.366943359375, -3.823889017104989 ], [ 144.35749816894554, -3.808056116104126 ], [ 144.37249755859375, -3.8002769947052 ], [ 144.370834350586051, -3.794167041778564 ], [ 144.365615844726562, -3.793881893157845 ], [ 144.3558349609375, -3.80472207069397 ], [ 144.35382080078125, -3.796471118927002 ], [ 144.350311279296989, -3.794061899185181 ], [ 144.324172973632812, -3.816111087799015 ], [ 144.309448242187727, -3.802500009536686 ], [ 144.315551757812727, -3.786662101745549 ], [ 144.296112060546989, -3.799166917800903 ], [ 144.282501220703125, -3.780277967453003 ], [ 144.319442749023779, -3.784444093704167 ], [ 144.320678710937727, -3.792999982833862 ], [ 144.324707031250227, -3.797522068023625 ], [ 144.323059082031364, -3.785217046737671 ], [ 144.376388549804915, -3.784444093704167 ], [ 144.535888671875, -3.818093061447144 ], [ 144.52777099609375, -3.857414960861149 ], [ 144.545776367187955, -3.852014064788818 ], [ 144.562606811523551, -3.880758047103882 ], [ 144.547363281250114, -3.906836032867432 ], [ 144.542068481445312, -3.904804944992009 ], [ 144.555099487304915, -3.883447885513306 ], [ 144.556274414062614, -3.875654935836735 ], [ 144.548889160156364, -3.868887901306152 ], [ 144.55426025390625, -3.883099079132023 ], [ 144.514160156250114, -3.944165945053101 ], [ 144.479995727539176, -3.921387910842896 ], [ 144.466094970703239, -3.92430305480957 ], [ 144.480560302734489, -3.925278902053833 ], [ 144.474441528320767, -3.9375 ], [ 144.472778320312614, -3.953054904937687 ], [ 144.447494506836165, -3.941665887832642 ], [ 144.511199951172102, -3.994075059890747 ], [ 144.497772216796989, -3.976387977600041 ], [ 144.509445190429688, -3.967221975326538 ], [ 144.508926391601676, -3.964694023132267 ], [ 144.505981445312841, -3.962291955947819 ], [ 144.512222290039176, -3.962776899337712 ], [ 144.518051147460938, -3.968333959579468 ], [ 144.519729614257812, -3.975831985473576 ], [ 144.526947021484489, -3.983889102935791 ], [ 144.515655517578239, -4.004267215728703 ], [ 144.525695800781477, -4.008264064788705 ], [ 144.528610229492642, -3.985832929611206 ], [ 144.5191650390625, -3.970278024673348 ], [ 144.52777099609375, -3.95777702331543 ], [ 144.522506713867642, -3.941387891769409 ], [ 144.544860839843864, -3.907910108566284 ], [ 144.544250488281705, -3.959467887878361 ], [ 144.57588195800804, -3.997989892959595 ], [ 144.574218750000114, -4.58783483505249 ], [ 144.03211975097679, -4.993134021759033 ], [ 143.353912353515739, -5.136535167694092 ], [ 143.317810058593977, -5.158234119415283 ], [ 143.251617431640852, -5.120835781097412 ], [ 143.100311279296875, -5.10373592376709 ], [ 143.051818847656591, -5.105134963989258 ], [ 143.007507324218864, -5.128935813903752 ], [ 142.85101318359375, -5.029835224151611 ], [ 142.787017822265739, -5.026834964752197 ], [ 142.750717163086165, -5.042234897613469 ], [ 142.66511535644554, -4.982234954833984 ], [ 142.560806274414176, -4.991934776306152 ], [ 142.452117919921989, -4.96263408660883 ], [ 142.389816284179688, -4.993134021759033 ], [ 142.324310302734489, -4.941134929656982 ], [ 142.322616577148551, -4.636435031890869 ], [ 142.309616088867301, -4.613533973693791 ], [ 141.383010864258267, -4.613433837890625 ], [ 141.347610473632812, -4.602034091949406 ], [ 141.340118408203239, -4.259035110473633 ], [ 141.36660766601608, -4.235033988952637 ], [ 141.71630859375, -3.99073600769043 ], [ 141.762817382812614, -4.00083398818964 ], [ 141.772720336914176, -4.025834083557129 ], [ 141.834716796875114, -4.059733867645264 ], [ 142.528320312500227, -4.05703592300415 ], [ 142.539718627929688, -3.93013596534729 ], [ 142.616714477539062, -3.920536041259766 ], [ 142.628906250000114, -3.90603399276722 ], [ 142.638519287109375, -3.792335033416748 ], [ 142.609619140625227, -3.667733907699528 ], [ 142.615615844726562, -3.555334091186523 ], [ 142.642013549804801, -3.516834974288884 ], [ 142.619613647461279, -3.44013500213623 ], [ 142.695709228515739, -3.444534063339177 ], [ 142.772308349609602, -3.401532888412476 ], [ 142.856719970703125, -3.471934080123901 ], [ 142.958419799804688, -3.495135068893376 ], [ 143.039215087890739, -3.538434028625488 ], [ 143.0841064453125, -3.529634952545109 ], [ 143.08941650390625, -3.369136095046997 ], [ 143.121948242187614, -3.354166030883789 ] ] ], [ [ [ 144.20106506347679, -3.347440004348755 ], [ 144.214996337890852, -3.351111888885441 ], [ 144.221313476562727, -3.362726926803589 ], [ 144.195175170898665, -3.36004900932312 ], [ 144.20106506347679, -3.347440004348755 ] ] ], [ [ [ 143.537506103515852, -3.309722900390568 ], [ 143.606384277343977, -3.350833892822209 ], [ 143.61610412597679, -3.367777109146118 ], [ 143.570831298828125, -3.378887891769409 ], [ 143.510284423828239, -3.355556011199951 ], [ 143.50166320800804, -3.33250093460083 ], [ 143.51361083984375, -3.340832948684579 ], [ 143.521118164062727, -3.324166059494019 ], [ 143.509719848632926, -3.31722092628479 ], [ 143.537506103515852, -3.309722900390568 ] ] ], [ [ [ 143.337783813476562, -3.241666078567505 ], [ 143.335830688476562, -3.24222207069397 ], [ 143.334228515625455, -3.240693092346191 ], [ 143.336395263672216, -3.239722013473511 ], [ 143.337783813476562, -3.241666078567505 ] ] ], [ [ [ 143.297851562500114, -3.213730096817017 ], [ 143.317764282226562, -3.233092069625798 ], [ 143.333053588867415, -3.241666078567505 ], [ 143.303146362304801, -3.243773937225342 ], [ 143.273727416992301, -3.220746040344238 ], [ 143.297851562500114, -3.213730096817017 ] ] ], [ [ [ 143.254928588867301, -3.192914962768555 ], [ 143.269439697265739, -3.214999914169255 ], [ 143.255493164062614, -3.221096992492676 ], [ 143.246322631836051, -3.199819087982121 ], [ 143.254928588867301, -3.192914962768555 ] ] ], [ [ [ 144.089996337890625, -3.189166069030705 ], [ 144.133056640625, -3.228332996368408 ], [ 144.088912963867415, -3.253799915313721 ], [ 144.062500000000114, -3.21526908874506 ], [ 144.089996337890625, -3.189166069030705 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-EHG", "NAME_1": "Eastern Highlands" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 145.295211791992301, -5.884734153747502 ], [ 145.37481689453125, -5.861333847045842 ], [ 145.420318603515739, -5.934535026550293 ], [ 145.479812622070426, -5.978434085845947 ], [ 145.527114868164176, -5.973533153533879 ], [ 145.584518432617642, -5.905334949493408 ], [ 145.6588134765625, -5.921934127807617 ], [ 145.663818359375227, -5.981535911560002 ], [ 145.820617675781477, -5.975334167480469 ], [ 145.862106323242529, -5.996534824371338 ], [ 145.8878173828125, -6.048133850097599 ], [ 145.930908203125114, -6.084135055541935 ], [ 146.134017944336165, -6.206134796142521 ], [ 146.0294189453125, -6.689435005187988 ], [ 145.987411499023551, -6.740635871887207 ], [ 146.015609741210938, -6.841134071350041 ], [ 146.00660705566429, -6.886936187744141 ], [ 145.927413940429915, -6.984435081481934 ], [ 145.900909423828239, -7.098834037780762 ], [ 145.797119140625, -7.085134029388428 ], [ 145.74201965332054, -7.158435821533203 ], [ 145.693618774414517, -7.145033836364746 ], [ 145.29512023925804, -6.868734836578312 ], [ 145.3502197265625, -6.733934879302979 ], [ 145.327407836914517, -6.700533866882324 ], [ 145.303909301757926, -6.684333801269418 ], [ 145.201110839843977, -6.679935932159367 ], [ 145.104217529297102, -6.57083606719965 ], [ 144.990005493164176, -6.521335124969426 ], [ 144.990509033203125, -6.443735122680607 ], [ 145.022109985351904, -6.398334980010929 ], [ 145.1715087890625, -6.420235157012939 ], [ 145.188217163086051, -6.399334907531738 ], [ 145.182617187500227, -6.352435111999512 ], [ 145.262619018554801, -6.308835029602051 ], [ 145.25032043457054, -6.127735137939396 ], [ 145.189605712890625, -6.128933906555119 ], [ 145.13140869140625, -6.079433917999268 ], [ 145.124114990234375, -5.991734981536865 ], [ 145.16461181640625, -5.876634120941162 ], [ 145.230209350585938, -5.852434158325195 ], [ 145.26960754394554, -5.858233928680363 ], [ 145.295211791992301, -5.884734153747502 ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-EPW", "NAME_1": "Enga" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 144.134613037109489, -5.148035049438477 ], [ 144.181320190429801, -5.191036224365178 ], [ 144.245819091797216, -5.218733787536621 ], [ 144.235519409180029, -5.340535163879281 ], [ 144.140518188476676, -5.351035118103027 ], [ 144.11811828613304, -5.380434036254883 ], [ 144.046112060546989, -5.413335800170898 ], [ 144.03211975097679, -5.454235076904297 ], [ 143.994415283203239, -5.478233814239388 ], [ 143.990417480468864, -5.558934211730957 ], [ 144.022216796875114, -5.594035148620549 ], [ 144.025619506836165, -5.665833950042668 ], [ 144.0537109375, -5.748233795166016 ], [ 143.954910278320312, -5.793735027313232 ], [ 143.910919189453125, -5.781233787536621 ], [ 143.867919921875114, -5.821033954620361 ], [ 143.80531311035179, -5.8211350440979 ], [ 143.770919799804688, -5.838435173034668 ], [ 143.830917358398551, -5.937035083770695 ], [ 143.709014892578352, -5.903035163879395 ], [ 143.517517089843977, -5.975135803222656 ], [ 143.355712890625, -5.877433776855469 ], [ 143.254608154296875, -5.751334190368652 ], [ 142.775115966796875, -5.594634056091252 ], [ 142.75190734863304, -5.573634147643986 ], [ 142.750717163086165, -5.042234897613469 ], [ 142.77131652832054, -5.029335021972656 ], [ 142.85101318359375, -5.029835224151611 ], [ 143.007507324218864, -5.128935813903752 ], [ 143.051818847656591, -5.105134963989258 ], [ 143.100311279296875, -5.10373592376709 ], [ 143.251617431640852, -5.120835781097412 ], [ 143.317810058593977, -5.158234119415283 ], [ 143.353912353515739, -5.136535167694092 ], [ 143.9691162109375, -5.010334014892521 ], [ 144.032913208007926, -5.066133975982666 ], [ 144.098312377930142, -5.078934192657471 ], [ 144.134613037109489, -5.148035049438477 ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-GPK", "NAME_1": "Gulf" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 145.732772827148551, -7.94166707992548 ], [ 145.734725952148438, -7.943055152893066 ], [ 145.728881835937727, -7.945556163787728 ], [ 145.730270385742188, -7.943333148956299 ], [ 145.732772827148551, -7.94166707992548 ] ] ], [ [ [ 145.419128417968977, -7.941180229187012 ], [ 145.419403076171989, -7.939583778381234 ], [ 145.422058105468864, -7.940070152282715 ], [ 145.421920776367188, -7.940279006958008 ], [ 145.419128417968977, -7.941180229187012 ] ] ], [ [ [ 145.425277709961051, -7.942777156829834 ], [ 145.421951293945312, -7.94389009475708 ], [ 145.418502807617188, -7.942011833190861 ], [ 145.428329467773551, -7.938889026641789 ], [ 145.425277709961051, -7.942777156829834 ] ] ], [ [ [ 145.742584228515852, -7.935894012451172 ], [ 145.738983154297102, -7.938363075256348 ], [ 145.73591613769554, -7.938653945922738 ], [ 145.738403320312614, -7.936159133911076 ], [ 145.742584228515852, -7.935894012451172 ] ] ], [ [ [ 145.787445068359602, -7.926775932312012 ], [ 145.787506103515739, -7.925000190734863 ], [ 145.7904052734375, -7.923326969146729 ], [ 145.789993286132926, -7.925834178924561 ], [ 145.787445068359602, -7.926775932312012 ] ] ], [ [ [ 145.362777709960938, -7.878054141998291 ], [ 145.386383056640739, -7.899444103240967 ], [ 145.38667297363304, -7.906945228576603 ], [ 145.39222717285179, -7.914444923400879 ], [ 145.391387939453125, -7.918612003326359 ], [ 145.362777709960938, -7.878054141998291 ] ] ], [ [ [ 145.035003662109602, -7.82722282409668 ], [ 145.032775878906364, -7.82611083984375 ], [ 145.033340454101676, -7.823331832885685 ], [ 145.034439086914517, -7.825000762939396 ], [ 145.035003662109602, -7.82722282409668 ] ] ], [ [ [ 145.205825805664062, -7.82222223281849 ], [ 145.213607788086279, -7.827778816223088 ], [ 145.211669921875114, -7.835277080535832 ], [ 145.203887939453125, -7.825000762939396 ], [ 145.205825805664062, -7.82222223281849 ] ] ], [ [ [ 145.082778930664062, -7.816112041473332 ], [ 145.083053588867415, -7.818888187408447 ], [ 145.077987670898551, -7.821599960327148 ], [ 145.07916259765625, -7.818888187408447 ], [ 145.082778930664062, -7.816112041473332 ] ] ], [ [ [ 145.009735107421875, -7.819211959838867 ], [ 145.008285522461165, -7.823384761810303 ], [ 145.003936767578239, -7.821137905120793 ], [ 145.0089111328125, -7.815636157989502 ], [ 145.009735107421875, -7.819211959838867 ] ] ], [ [ [ 145.18110656738304, -7.821109771728459 ], [ 145.179443359375114, -7.815556049346924 ], [ 145.181945800781591, -7.809998989105225 ], [ 145.183883666992188, -7.814444065093994 ], [ 145.18110656738304, -7.821109771728459 ] ] ], [ [ [ 144.957504272460938, -7.812222003936711 ], [ 144.960281372070426, -7.815278053283691 ], [ 144.955001831054688, -7.813055992126408 ], [ 144.954437255859375, -7.806110858917236 ], [ 144.957504272460938, -7.812222003936711 ] ] ], [ [ [ 145.191665649414176, -7.799445152282715 ], [ 145.209716796875227, -7.844721794128361 ], [ 145.217224121093864, -7.850278854370117 ], [ 145.195281982421989, -7.86027717590332 ], [ 145.18110656738304, -7.827778816223088 ], [ 145.191665649414176, -7.799445152282715 ] ] ], [ [ [ 145.035827636718864, -7.829722881317139 ], [ 145.034439086914517, -7.843887805938664 ], [ 145.007873535156477, -7.837919235229435 ], [ 145.020828247070312, -7.838890075683594 ], [ 145.008895874023551, -7.828332901000977 ], [ 145.021667480468864, -7.797223091125488 ], [ 145.03179931640625, -7.827106952667179 ], [ 145.035827636718864, -7.829722881317139 ] ] ], [ [ [ 144.96534729003929, -7.79957723617548 ], [ 144.963699340820426, -7.798150062560978 ], [ 144.963897705078125, -7.796726226806641 ], [ 144.967300415039517, -7.798367023468018 ], [ 144.96534729003929, -7.79957723617548 ] ] ], [ [ [ 143.880828857422102, -7.85205602645874 ], [ 143.845046997070312, -7.801837921142521 ], [ 143.853713989257812, -7.779764175414982 ], [ 143.883041381836279, -7.831090927124023 ], [ 143.880828857422102, -7.85205602645874 ] ] ], [ [ [ 145.086624145507812, -7.779770851135254 ], [ 145.095535278320426, -7.786148071289062 ], [ 145.096923828125, -7.790279865264893 ], [ 145.08831787109375, -7.788116931915226 ], [ 145.086624145507812, -7.779770851135254 ] ] ], [ [ [ 144.204788208007926, -7.749704837799072 ], [ 144.249725341797102, -7.753055095672607 ], [ 144.272171020507812, -7.779123783111572 ], [ 144.248703002929688, -7.797749042510929 ], [ 144.194442749023892, -7.804166793823185 ], [ 144.185272216797102, -7.764999866485596 ], [ 144.191604614257926, -7.746205806732178 ], [ 144.204788208007926, -7.749704837799072 ] ] ], [ [ [ 144.868057250976562, -7.730834007263184 ], [ 144.875000000000114, -7.73305606842041 ], [ 144.874450683593864, -7.739721775054875 ], [ 144.866943359375227, -7.733612060546875 ], [ 144.868057250976562, -7.730834007263184 ] ] ], [ [ [ 144.85888671875, -7.728055000305119 ], [ 144.878326416015625, -7.758056163787785 ], [ 144.897781372070312, -7.76694393157959 ], [ 144.880828857421875, -7.78277683258051 ], [ 144.831939697265739, -7.743331909179688 ], [ 144.85888671875, -7.728055000305119 ] ] ], [ [ [ 144.399444580078239, -7.761943817138672 ], [ 144.415802001953125, -7.769712924957275 ], [ 144.365280151367188, -7.757474899291992 ], [ 144.361602783203125, -7.723396778106689 ], [ 144.399444580078239, -7.761943817138672 ] ] ], [ [ [ 143.908340454102017, -7.745697975158635 ], [ 143.973876953125, -7.786656856536865 ], [ 143.98976135253929, -7.836350917816162 ], [ 143.913955688476562, -7.799143791198674 ], [ 143.856781005859375, -7.721951961517277 ], [ 143.908340454102017, -7.745697975158635 ] ] ], [ [ [ 144.430068969726904, -7.684628963470459 ], [ 144.463607788086051, -7.713610172271729 ], [ 144.472778320312614, -7.749721050262451 ], [ 144.51690673828125, -7.803572177886963 ], [ 144.478607177734602, -7.80000114440918 ], [ 144.47528076171875, -7.780276775360051 ], [ 144.41450500488304, -7.71632719039917 ], [ 144.41424560546875, -7.685637950897217 ], [ 144.430068969726904, -7.684628963470459 ] ] ], [ [ [ 144.306945800781477, -7.647777080535889 ], [ 144.338058471679915, -7.707777976989689 ], [ 144.326110839843864, -7.717501163482609 ], [ 144.299728393555142, -7.711666107177734 ], [ 144.283340454101676, -7.663053989410287 ], [ 144.306945800781477, -7.647777080535889 ] ] ], [ [ [ 144.361801147460938, -7.637643814086857 ], [ 144.363494873046989, -7.63792181015009 ], [ 144.363769531250227, -7.638651847839242 ], [ 144.360458374023438, -7.638955116271916 ], [ 144.361801147460938, -7.637643814086857 ] ] ], [ [ [ 144.399993896484375, -7.605278015136662 ], [ 144.414993286132926, -7.632222175598145 ], [ 144.430282592773438, -7.638332843780518 ], [ 144.431671142578352, -7.652222156524601 ], [ 144.426940917968977, -7.68083381652832 ], [ 144.411941528320426, -7.685555934906006 ], [ 144.41082763671875, -7.718332767486515 ], [ 144.431671142578352, -7.736388206481877 ], [ 144.403335571289176, -7.756112098693848 ], [ 144.363052368164517, -7.703333854675293 ], [ 144.385833740234375, -7.659999847412109 ], [ 144.365005493164176, -7.625 ], [ 144.399993896484375, -7.605278015136662 ] ] ], [ [ [ 144.669998168945426, -7.605000019073429 ], [ 144.676361083984375, -7.64653491973877 ], [ 144.645004272461051, -7.651666164398137 ], [ 144.667495727539062, -7.637222766876164 ], [ 144.669998168945426, -7.605000019073429 ] ] ], [ [ [ 144.416671752929801, -7.603333950042725 ], [ 144.441116333007926, -7.611111164092961 ], [ 144.46583557128929, -7.656112194061222 ], [ 144.455276489257812, -7.699166774749699 ], [ 144.434173583984602, -7.683609962463322 ], [ 144.432785034179688, -7.637779235839844 ], [ 144.405273437500341, -7.606110095977783 ], [ 144.416671752929801, -7.603333950042725 ] ] ], [ [ [ 144.267776489257812, -7.593610763549748 ], [ 144.287506103515852, -7.63972282409668 ], [ 144.253616333007926, -7.653888225555363 ], [ 144.244720458984375, -7.610001087188721 ], [ 144.267776489257812, -7.593610763549748 ] ] ], [ [ [ 144.245834350585938, -7.592776775360051 ], [ 144.242492675781477, -7.61250114440918 ], [ 144.246948242187614, -7.650000095367432 ], [ 144.250534057617301, -7.655829906463509 ], [ 144.262771606445426, -7.659165859222412 ], [ 144.212493896484375, -7.671111106872559 ], [ 144.203048706054801, -7.657499790191594 ], [ 144.220840454101562, -7.633331775665226 ], [ 144.218338012695426, -7.613055229187012 ], [ 144.245834350585938, -7.592776775360051 ] ] ], [ [ [ 144.283050537109375, -7.590555191039982 ], [ 144.307220458984489, -7.607779026031494 ], [ 144.297500610351676, -7.64611101150507 ], [ 144.270965576171989, -7.591667175292969 ], [ 144.283050537109375, -7.590555191039982 ] ] ], [ [ [ 144.31648254394554, -7.57699012756342 ], [ 144.312774658203125, -7.575833797454777 ], [ 144.314437866211051, -7.572500228881836 ], [ 144.315917968750227, -7.574633121490422 ], [ 144.31648254394554, -7.57699012756342 ] ] ], [ [ [ 144.291671752929915, -7.572222232818604 ], [ 144.352493286132812, -7.599165916442814 ], [ 144.341659545898665, -7.632222175598145 ], [ 144.3780517578125, -7.655000209808293 ], [ 144.356384277343864, -7.684721946716309 ], [ 144.322784423828352, -7.645555019378605 ], [ 144.315002441406364, -7.605929851531926 ], [ 144.286666870117188, -7.584722995758 ], [ 144.291671752929915, -7.572222232818604 ] ] ], [ [ [ 144.386001586914176, -7.551719188690186 ], [ 144.398391723632926, -7.559063911437931 ], [ 144.415634155273438, -7.555460929870549 ], [ 144.433151245117188, -7.598157882690373 ], [ 144.4007568359375, -7.598989963531494 ], [ 144.399353027343864, -7.576255798339844 ], [ 144.386001586914176, -7.551719188690186 ] ] ], [ [ [ 143.747970581054801, -7.546935081481934 ], [ 143.766754150390625, -7.56040716171259 ], [ 143.787597656250227, -7.624787807464486 ], [ 143.752548217773551, -7.598413944244385 ], [ 143.747970581054801, -7.546935081481934 ] ] ], [ [ [ 144.381668090820312, -7.559444904327393 ], [ 144.378890991211051, -7.555278778076172 ], [ 144.380004882812727, -7.54666614532465 ], [ 144.381942749023551, -7.551109790801945 ], [ 144.381668090820312, -7.559444904327393 ] ] ], [ [ [ 144.709716796875, -7.535554885864258 ], [ 144.747772216796989, -7.554444789886475 ], [ 144.766662597656364, -7.586111068725586 ], [ 144.754165649414062, -7.629444122314453 ], [ 144.697219848633267, -7.582500934600773 ], [ 144.709716796875, -7.535554885864258 ] ] ], [ [ [ 144.542495727539176, -7.534722805023193 ], [ 144.571945190429801, -7.550556182861214 ], [ 144.586395263672102, -7.548888206481877 ], [ 144.586105346679688, -7.553331851959229 ], [ 144.593887329101676, -7.56472110748291 ], [ 144.601394653320312, -7.565277099609375 ], [ 144.576950073242188, -7.622777938842717 ], [ 144.542495727539176, -7.534722805023193 ] ] ], [ [ [ 144.651672363281364, -7.532498836517334 ], [ 144.632217407226676, -7.568056106567269 ], [ 144.653060913085938, -7.554165840148926 ], [ 144.66278076171875, -7.586389064788818 ], [ 144.651382446289062, -7.585833072662354 ], [ 144.640548706054915, -7.591942787170353 ], [ 144.661392211914062, -7.58916711807251 ], [ 144.667221069336165, -7.603888034820557 ], [ 144.654724121093864, -7.609445095062256 ], [ 144.654998779296875, -7.598889827728271 ], [ 144.651672363281364, -7.595555782318115 ], [ 144.643051147461392, -7.601109981536808 ], [ 144.639999389648892, -7.605556011199894 ], [ 144.652496337890625, -7.596943855285645 ], [ 144.652496337890625, -7.608889102935791 ], [ 144.658889770507926, -7.611945152282658 ], [ 144.666107177734602, -7.611389160156193 ], [ 144.666671752929915, -7.63555717468256 ], [ 144.641937255859375, -7.642776966094914 ], [ 144.636672973632812, -7.629166126251221 ], [ 144.633331298828239, -7.648890018463135 ], [ 144.604446411132812, -7.651944160461369 ], [ 144.599166870117415, -7.63555717468256 ], [ 144.57861328125, -7.63555717468256 ], [ 144.603607177734489, -7.578887939453125 ], [ 144.602783203125227, -7.564445018768254 ], [ 144.587219238281364, -7.547222137451172 ], [ 144.651672363281364, -7.532498836517334 ] ] ], [ [ [ 144.674163818359489, -7.527779102325439 ], [ 144.696670532226676, -7.5411119461059 ], [ 144.693603515625114, -7.560554981231633 ], [ 144.666946411132926, -7.558054924011174 ], [ 144.663055419922102, -7.53055477142334 ], [ 144.674163818359489, -7.527779102325439 ] ] ], [ [ [ 143.729751586914062, -7.513453960418701 ], [ 143.743377685546989, -7.515428066253662 ], [ 143.74983215332054, -7.521505832672062 ], [ 143.71510314941429, -7.520173072814941 ], [ 143.729751586914062, -7.513453960418701 ] ] ], [ [ [ 144.699172973632926, -7.495555877685547 ], [ 144.699172973632926, -7.529167175292912 ], [ 144.66278076171875, -7.497499942779541 ], [ 144.682495117187614, -7.492221832275391 ], [ 144.69000244140625, -7.480277061462402 ], [ 144.699172973632926, -7.495555877685547 ] ] ], [ [ [ 144.630310058593864, -7.458053112030029 ], [ 144.670562744140739, -7.526388168334961 ], [ 144.616668701171875, -7.536388874053955 ], [ 144.616394042968864, -7.516943931579533 ], [ 144.608337402344205, -7.50333309173584 ], [ 144.620559692382926, -7.478332996368408 ], [ 144.610275268554688, -7.469721794128361 ], [ 144.630310058593864, -7.458053112030029 ] ] ], [ [ [ 144.750839233398551, -7.453610897064209 ], [ 144.744171142578125, -7.47138786315918 ], [ 144.756942749023551, -7.510554790496769 ], [ 144.731643676757812, -7.503098011016846 ], [ 144.737930297851562, -7.485436916351262 ], [ 144.714172363281477, -7.534444808959961 ], [ 144.697784423828352, -7.466944217681828 ], [ 144.750839233398551, -7.453610897064209 ] ] ], [ [ [ 144.571105957031364, -7.443056106567383 ], [ 144.591461181640625, -7.475752830505314 ], [ 144.586395263672102, -7.503055095672607 ], [ 144.612777709961051, -7.517221927642765 ], [ 144.576950073242188, -7.549722194671574 ], [ 144.560562133789062, -7.538610935211182 ], [ 144.574447631836051, -7.530001163482609 ], [ 144.581115722656364, -7.519721984863224 ], [ 144.581390380859602, -7.516111850738525 ], [ 144.561111450195312, -7.535554885864258 ], [ 144.539443969726676, -7.529445171356144 ], [ 144.5655517578125, -7.479444980621281 ], [ 144.556671142578239, -7.452498912811222 ], [ 144.571105957031364, -7.443056106567383 ] ] ], [ [ [ 144.597229003906477, -7.433611869811898 ], [ 144.617782592773438, -7.456944942474365 ], [ 144.608673095703352, -7.471176147460881 ], [ 144.618331909179688, -7.479444980621281 ], [ 144.603332519531477, -7.508333206176701 ], [ 144.584442138672102, -7.451944828033447 ], [ 144.576660156250227, -7.44388818740839 ], [ 144.597229003906477, -7.433611869811898 ] ] ], [ [ [ 144.553329467773438, -7.410833835601807 ], [ 144.583892822265852, -7.435555934905949 ], [ 144.555831909179915, -7.451666831970215 ], [ 144.54499816894554, -7.44388818740839 ], [ 144.552505493164176, -7.435555934905949 ], [ 144.553329467773438, -7.410833835601807 ] ] ], [ [ [ 144.558609008789176, -7.399167060852051 ], [ 144.547775268554688, -7.404720783233586 ], [ 144.544448852539176, -7.411665916442814 ], [ 144.537780761718864, -7.397777080535889 ], [ 144.54804992675804, -7.393332004547062 ], [ 144.556106567382812, -7.386387825012207 ], [ 144.558609008789176, -7.399167060852051 ] ] ], [ [ [ 144.703109741211165, -6.712035179138127 ], [ 144.761917114257926, -6.709134101867619 ], [ 144.851806640625, -6.747634887695256 ], [ 144.913619995117188, -6.725635051727295 ], [ 144.982406616211051, -6.791234970092773 ], [ 145.142318725585938, -6.836434841156006 ], [ 145.207214355468977, -6.814233779907227 ], [ 145.693618774414517, -7.145033836364746 ], [ 145.74201965332054, -7.158435821533203 ], [ 146.054519653320312, -7.368636131286564 ], [ 146.075210571289062, -7.395433902740422 ], [ 146.079711914062614, -7.49693489074707 ], [ 146.117309570312841, -7.552834987640381 ], [ 146.412612915039062, -7.609135150909424 ], [ 146.652511596680029, -7.772534847259521 ], [ 146.541107177734489, -7.825333118438721 ], [ 146.486419677734375, -7.9082350730896 ], [ 146.395309448242415, -7.913435935974121 ], [ 146.383316040039517, -7.928234100341797 ], [ 146.382568359375114, -8.587371826171818 ], [ 146.269729614257812, -8.410278320312443 ], [ 146.267227172851904, -8.353887557983398 ], [ 146.278884887695312, -8.350000381469727 ], [ 146.248336791992301, -8.319167137145939 ], [ 146.234970092773551, -8.27141284942627 ], [ 146.246948242187614, -8.303888320922795 ], [ 146.253067016601676, -8.309855461120605 ], [ 146.249725341796875, -8.295277595519963 ], [ 146.281509399414176, -8.31196117401123 ], [ 146.289031982422102, -8.308637619018555 ], [ 146.251388549804801, -8.291945457458496 ], [ 146.231323242187614, -8.260352134704476 ], [ 146.197784423828239, -8.236666679382267 ], [ 146.155960083008267, -8.224585533142033 ], [ 146.168609619140739, -8.2124986648559 ], [ 146.171112060546875, -8.190834045410099 ], [ 146.16944885253929, -8.1875 ], [ 146.159439086914176, -8.184166908264103 ], [ 146.168060302734375, -8.180832862853947 ], [ 146.15777587890625, -8.182223320007267 ], [ 146.159439086914176, -8.1875 ], [ 146.169723510742188, -8.191665649414062 ], [ 146.15777587890625, -8.218609809875431 ], [ 146.112228393554915, -8.185555458068848 ], [ 146.092651367187614, -8.157453536987305 ], [ 146.082839965820312, -8.135579109191895 ], [ 146.11083984375, -8.164443969726562 ], [ 146.10292053222679, -8.129028320312443 ], [ 146.130889892578125, -8.136522293090763 ], [ 146.105834960937614, -8.124030113220215 ], [ 146.095230102539062, -8.135449409484806 ], [ 146.074996948242188, -8.117778778076115 ], [ 146.073059082031591, -8.098054885864258 ], [ 146.095367431640739, -8.10081672668457 ], [ 146.095932006836051, -8.091262817382756 ], [ 146.071105957031364, -8.094445228576603 ], [ 146.007171630859602, -8.059165954589844 ], [ 145.827774047851904, -8.030834197998047 ], [ 145.759445190429801, -7.961111068725586 ], [ 145.799728393554801, -7.960555076599121 ], [ 145.796112060547216, -7.975555896759033 ], [ 145.80860900878929, -7.986391067504883 ], [ 145.817214965820767, -7.985279083251953 ], [ 145.797500610351562, -7.974443912506104 ], [ 145.801940917968977, -7.959935188293457 ], [ 145.775283813476562, -7.939999103546143 ], [ 145.793884277343977, -7.926943778991642 ], [ 145.794174194336051, -7.91944408416748 ], [ 145.812774658203352, -7.905001163482552 ], [ 145.81304931640625, -7.900278091430664 ], [ 145.768890380859375, -7.94166707992548 ], [ 145.746109008789176, -7.932778835296631 ], [ 145.755554199218977, -7.925278186798096 ], [ 145.756393432617301, -7.911666870117188 ], [ 145.725708007812614, -7.9443039894104 ], [ 145.717102050781364, -7.946940898895264 ], [ 145.707504272461051, -7.938889026641789 ], [ 145.69561767578125, -7.940762996673584 ], [ 145.717391967773438, -7.948609828948975 ], [ 145.731109619140625, -7.946944236755314 ], [ 145.747222900390739, -7.938333034515324 ], [ 145.75917053222679, -7.946390151977539 ], [ 145.716110229492415, -7.958889007568303 ], [ 145.652221679687727, -7.956943988800049 ], [ 145.626113891601676, -7.936110973358097 ], [ 145.418243408203239, -7.950353145599308 ], [ 145.414718627929915, -7.946944236755314 ], [ 145.427780151367301, -7.942777156829834 ], [ 145.434753417968864, -7.932468891143799 ], [ 145.404449462890852, -7.945556163787728 ], [ 145.387771606445312, -7.899444103240967 ], [ 145.370285034179801, -7.88027715682972 ], [ 145.341949462890739, -7.863890171050969 ], [ 145.279449462890625, -7.85001897811884 ], [ 145.226394653320312, -7.858611106872559 ], [ 145.223541259765625, -7.842775821685791 ], [ 145.196945190430142, -7.801667213439885 ], [ 145.161392211914062, -7.783889770507756 ], [ 145.191116333007812, -7.767083168029785 ], [ 145.158050537109489, -7.776389122009277 ], [ 145.178482055664176, -7.849024772643986 ], [ 145.105270385742529, -7.820278167724609 ], [ 145.097778320312614, -7.783889770507756 ], [ 145.061950683593864, -7.766387939453125 ], [ 145.100280761718864, -7.800555229186955 ], [ 145.06111145019554, -7.826944828033447 ], [ 145.091949462890625, -7.809720993041992 ], [ 145.070556640625341, -7.836668014526367 ], [ 145.043212890625455, -7.844719886779785 ], [ 145.016403198242188, -7.769686222076416 ], [ 144.998062133789176, -7.755277156829834 ], [ 145.01972961425804, -7.788611888885498 ], [ 144.99972534179733, -7.820480823516846 ], [ 144.953826904297216, -7.781576156616154 ], [ 144.962219238281591, -7.745278835296631 ], [ 144.946395874023438, -7.773889064788818 ], [ 144.927215576172102, -7.765833854675293 ], [ 144.930282592773665, -7.736388206481877 ], [ 144.926116943359489, -7.713888168334961 ], [ 144.938613891601562, -7.703889846801758 ], [ 144.936386108398665, -7.702777862548828 ], [ 144.927780151367301, -7.707499980926457 ], [ 144.923049926758267, -7.718057155609017 ], [ 144.921951293945426, -7.756668090820312 ], [ 144.9281005859375, -7.769498825073242 ], [ 144.958892822265852, -7.798611164092961 ], [ 144.966629028320312, -7.800514221191293 ], [ 144.9561767578125, -7.804787158966008 ], [ 144.87648010253929, -7.75242805480957 ], [ 144.895202636719205, -7.721333980560303 ], [ 144.880340576171989, -7.727090835571289 ], [ 144.880477905273551, -7.715168952941838 ], [ 144.887023925781364, -7.707684993743896 ], [ 144.889801025390625, -7.701444149017277 ], [ 144.897171020507926, -7.672611236572209 ], [ 144.878677368164404, -7.715168952941838 ], [ 144.879516601562727, -7.728894233703556 ], [ 144.8619384765625, -7.723610877990723 ], [ 144.871383666992301, -7.706389904022217 ], [ 144.852218627929688, -7.655000209808293 ], [ 144.875000000000114, -7.656112194061222 ], [ 144.884994506835938, -7.650278091430664 ], [ 144.886947631836165, -7.638888835906982 ], [ 144.89166259765625, -7.642498970031681 ], [ 144.906661987304801, -7.63972282409668 ], [ 144.91499328613304, -7.631944179534912 ], [ 144.886672973632926, -7.636944770812988 ], [ 144.874725341796875, -7.65472221374506 ], [ 144.850601196289062, -7.652976036071777 ], [ 144.852218627929688, -7.630556106567383 ], [ 144.866104125976562, -7.630832195281926 ], [ 144.880828857421875, -7.626944065093994 ], [ 144.899444580078239, -7.616388797759953 ], [ 144.852783203125, -7.628888130187988 ], [ 144.84864807128929, -7.612771987914982 ], [ 144.876937866211051, -7.58055400848383 ], [ 144.885833740234602, -7.582778930664006 ], [ 144.889450073242415, -7.593332767486515 ], [ 144.89739990234375, -7.596041202545166 ], [ 144.886672973632926, -7.580278873443604 ], [ 144.873611450195426, -7.578609943389893 ], [ 144.874725341796875, -7.572222232818604 ], [ 144.871109008789062, -7.567221164703369 ], [ 144.890853881836051, -7.556663990020695 ], [ 144.881103515625114, -7.555553913116455 ], [ 144.863891601562727, -7.571944236755371 ], [ 144.85333251953125, -7.55916690826416 ], [ 144.845001220703239, -7.558332920074406 ], [ 144.8619384765625, -7.552499771118107 ], [ 144.84722900390625, -7.552499771118107 ], [ 144.84388732910179, -7.5602769851684 ], [ 144.862503051757812, -7.572778224945012 ], [ 144.873336791992529, -7.572778224945012 ], [ 144.851181030273551, -7.583497047424316 ], [ 144.813690185546875, -7.551013946533146 ], [ 144.84388732910179, -7.595409870147705 ], [ 144.833892822265625, -7.627222061157227 ], [ 144.828048706054915, -7.619166851043701 ], [ 144.811660766602017, -7.623055934905949 ], [ 144.813049316406364, -7.611389160156193 ], [ 144.80305480957054, -7.604722023010197 ], [ 144.811386108398438, -7.624444007873535 ], [ 144.836395263671875, -7.634165763854924 ], [ 144.81805419921875, -7.681387901306152 ], [ 144.778884887695312, -7.673611164093018 ], [ 144.796386718750227, -7.656112194061222 ], [ 144.756668090820312, -7.663053989410287 ], [ 144.770553588867188, -7.564445018768254 ], [ 144.784729003906364, -7.565277099609375 ], [ 144.796386718750227, -7.540833950042668 ], [ 144.794174194336051, -7.537776947021371 ], [ 144.790832519531364, -7.536666870117188 ], [ 144.78277587890625, -7.538888931274414 ], [ 144.794998168945312, -7.540833950042668 ], [ 144.781982421875, -7.544962882995605 ], [ 144.784439086914176, -7.563889026641789 ], [ 144.755828857421989, -7.541665077209473 ], [ 144.773056030273438, -7.528057098388672 ], [ 144.78582763671875, -7.497499942779541 ], [ 144.794723510742301, -7.498610019683781 ], [ 144.800827026367301, -7.492221832275391 ], [ 144.785003662109489, -7.496387958526554 ], [ 144.754714965820312, -7.540555000305119 ], [ 144.761276245117415, -7.569625854492131 ], [ 144.751480102539062, -7.553059101104736 ], [ 144.722503662109375, -7.534722805023193 ], [ 144.730560302734489, -7.507777214050236 ], [ 144.745285034180142, -7.515833854675293 ], [ 144.759719848632812, -7.510554790496769 ], [ 144.752548217773551, -7.441336154937744 ], [ 144.714050292968864, -7.441948890685978 ], [ 144.68861389160179, -7.469443798065186 ], [ 144.68305969238304, -7.46083402633667 ], [ 144.675277709961165, -7.459167957305908 ], [ 144.67388916015625, -7.453888893127441 ], [ 144.69305419921875, -7.449722766876221 ], [ 144.698257446289062, -7.443397998809814 ], [ 144.691238403320312, -7.432861804962101 ], [ 144.673583984375114, -7.423298835754395 ], [ 144.6795654296875, -7.407771110534668 ], [ 144.676635742187614, -7.399730205535889 ], [ 144.672195434570426, -7.422741889953613 ], [ 144.696395874023438, -7.444722175598031 ], [ 144.673049926757926, -7.452776908874455 ], [ 144.682220458984716, -7.487220764160099 ], [ 144.661392211914062, -7.490555763244629 ], [ 144.595932006836165, -7.414475917816105 ], [ 144.58917236328125, -7.434442996978703 ], [ 144.573883056640966, -7.423333168029728 ], [ 144.588882446289517, -7.404720783233586 ], [ 144.592498779297102, -7.377499103546143 ], [ 144.573745727539062, -7.349321842193604 ], [ 144.589447021484602, -7.379446029663086 ], [ 144.571105957031364, -7.422777175903263 ], [ 144.568328857421989, -7.400555133819466 ], [ 144.54804992675804, -7.40861177444458 ], [ 144.56027221679733, -7.400277137756291 ], [ 144.560562133789062, -7.378055095672607 ], [ 144.531951904296875, -7.398333072662354 ], [ 144.526107788086165, -7.387499809265137 ], [ 144.536117553711279, -7.38361215591425 ], [ 144.536239624023892, -7.354893207550049 ], [ 144.525558471680142, -7.361112117767334 ], [ 144.524993896484489, -7.389443874359131 ], [ 144.548919677734375, -7.431629180908146 ], [ 144.521392822265625, -7.434999942779484 ], [ 144.5574951171875, -7.475000858306885 ], [ 144.52955627441429, -7.50599479675293 ], [ 144.51277160644554, -7.503611087799072 ], [ 144.524444580078125, -7.575555801391545 ], [ 144.508605957031364, -7.620276927947998 ], [ 144.485549926757926, -7.592220783233586 ], [ 144.500549316406477, -7.571387767791748 ], [ 144.503936767578125, -7.54185676574707 ], [ 144.496139526367415, -7.537836074829102 ], [ 144.474746704101562, -7.532003879547062 ], [ 144.503448486328239, -7.54455995559681 ], [ 144.481674194336165, -7.549722194671574 ], [ 144.47027587890625, -7.561944961547795 ], [ 144.467773437500114, -7.559444904327393 ], [ 144.471389770508267, -7.551109790801945 ], [ 144.46888732910179, -7.538610935211182 ], [ 144.464447021484375, -7.536110877990723 ], [ 144.458328247070312, -7.537776947021371 ], [ 144.45166015625, -7.534166812896729 ], [ 144.458328247070312, -7.539166927337646 ], [ 144.467773437500114, -7.539445877075082 ], [ 144.470001220703352, -7.547778129577637 ], [ 144.46638488769554, -7.559444904327393 ], [ 144.468338012695767, -7.562499046325684 ], [ 144.496109008789062, -7.556666851043701 ], [ 144.498886108398438, -7.566946029663086 ], [ 144.48388671875, -7.585277080535889 ], [ 144.484161376953352, -7.596943855285645 ], [ 144.55389404296875, -7.679165840148926 ], [ 144.518890380859489, -7.684999942779541 ], [ 144.475830078125114, -7.603055953979379 ], [ 144.446670532226562, -7.581387996673527 ], [ 144.441116333007926, -7.53694486618042 ], [ 144.397216796875114, -7.553331851959229 ], [ 144.388885498046875, -7.537498950958195 ], [ 144.376937866211051, -7.539999008178654 ], [ 144.396667480468864, -7.575277805328369 ], [ 144.398895263672102, -7.602221965789738 ], [ 144.3619384765625, -7.559444904327393 ], [ 144.353881835937727, -7.560554981231633 ], [ 144.342498779296989, -7.568056106567269 ], [ 144.335281372070312, -7.568334102630615 ], [ 144.32833862304733, -7.561666965484562 ], [ 144.330001831054915, -7.558332920074406 ], [ 144.339172363281364, -7.563055038452148 ], [ 144.3427734375, -7.56138896942133 ], [ 144.3427734375, -7.557222843170166 ], [ 144.33749389648483, -7.548056125640869 ], [ 144.341659545898665, -7.560832977294865 ], [ 144.33111572265625, -7.556944847106934 ], [ 144.327774047851676, -7.558888912200814 ], [ 144.326110839843864, -7.564167022705021 ], [ 144.336944580078239, -7.570278167724553 ], [ 144.346664428711051, -7.568056106567269 ], [ 144.36083984375, -7.5602769851684 ], [ 144.383895874023551, -7.59944391250599 ], [ 144.354171752929688, -7.635831832885685 ], [ 144.343612670898551, -7.629444122314453 ], [ 144.355560302734602, -7.594442844390869 ], [ 144.321670532226676, -7.580832004547062 ], [ 144.316390991211279, -7.563611030578556 ], [ 144.303604125976676, -7.576387882232666 ], [ 144.28138732910179, -7.562499046325684 ], [ 144.279998779296875, -7.583333015441895 ], [ 144.255828857422102, -7.591667175292969 ], [ 144.2459716796875, -7.58882999420166 ], [ 144.242095947265852, -7.570213794708138 ], [ 144.233917236328352, -7.557511806488037 ], [ 144.227523803710938, -7.552799224853516 ], [ 144.24421691894554, -7.58828687667841 ], [ 144.220550537109602, -7.607501029968262 ], [ 144.215744018554688, -7.597115039825439 ], [ 144.206390380859375, -7.594168186187687 ], [ 144.218612670898665, -7.629444122314453 ], [ 144.197784423828125, -7.64611101150507 ], [ 144.17304992675804, -7.605000019073429 ], [ 144.191390991211392, -7.606110095977783 ], [ 144.195007324218977, -7.599721908569336 ], [ 144.187774658203239, -7.571944236755371 ], [ 144.176940917968864, -7.565277099609375 ], [ 144.193328857421875, -7.602221965789738 ], [ 144.173889160156364, -7.602221965789738 ], [ 144.162200927734602, -7.617351055145264 ], [ 144.172775268554688, -7.610001087188721 ], [ 144.206390380859375, -7.676390171050969 ], [ 144.256393432617301, -7.685277938842773 ], [ 144.258331298828352, -7.710278034210148 ], [ 144.2288818359375, -7.740277767181283 ], [ 144.20472717285179, -7.741387844085637 ], [ 144.153610229492415, -7.6875 ], [ 144.143890380859602, -7.695555210113469 ], [ 144.180557250976676, -7.741109848022461 ], [ 144.171356201172102, -7.763377189636174 ], [ 144.155838012695312, -7.741943836212101 ], [ 144.124160766601562, -7.726110935211182 ], [ 144.171356201172102, -7.768246173858643 ], [ 144.150054931640739, -7.79797887802124 ], [ 144.107833862304915, -7.778800010681152 ], [ 144.08123779296875, -7.722352981567326 ], [ 144.036392211914404, -7.717223167419377 ], [ 144.080551147461165, -7.731871128082275 ], [ 144.078887939453125, -7.771944999694767 ], [ 143.988815307617415, -7.726801872253418 ], [ 143.905380249023438, -7.712495803833008 ], [ 143.825836181640625, -7.65472221374506 ], [ 143.765548706055029, -7.526356220245361 ], [ 143.749542236328125, -7.514832973480225 ], [ 143.731185913086051, -7.510601043701172 ], [ 143.695510864257812, -7.515478134155217 ], [ 143.700607299804915, -7.533194065093994 ], [ 143.746063232421989, -7.543087959289551 ], [ 143.744232177734375, -7.591330051422062 ], [ 143.820358276367415, -7.713730812072697 ], [ 143.841812133789176, -7.770157814025879 ], [ 143.838973999023551, -7.812693119049072 ], [ 143.911911010742415, -7.952212810516301 ], [ 143.891220092773551, -7.944035053253117 ], [ 143.05610656738304, -7.083835124969482 ], [ 142.995513916015625, -6.999135017394963 ], [ 142.99472045898483, -6.822734832763672 ], [ 143.934707641601676, -6.822734832763672 ], [ 144.703109741211165, -6.712035179138127 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-HLA", "NAME_1": "Hela" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 142.389816284179688, -4.993134021759033 ], [ 142.452117919921989, -4.96263408660883 ], [ 142.560806274414176, -4.991934776306152 ], [ 142.66511535644554, -4.982234954833984 ], [ 142.706405639648438, -5.001235961914062 ], [ 142.750717163086165, -5.042234897613469 ], [ 142.755615234375, -5.581134796142578 ], [ 143.254608154296875, -5.751334190368652 ], [ 143.331207275390625, -5.85403394699091 ], [ 143.396316528320312, -5.909033775329533 ], [ 143.394012451171875, -6.070633888244572 ], [ 143.417007446289517, -6.093635082244873 ], [ 143.375808715820767, -6.094034194946232 ], [ 143.376007080078239, -6.155035018920898 ], [ 143.17181396484375, -6.165235996246338 ], [ 143.16120910644554, -6.293034076690617 ], [ 143.080413818359489, -6.30323600769043 ], [ 143.080215454101676, -6.358434200286865 ], [ 142.886520385742415, -6.242636203765812 ], [ 142.683517456054688, -6.18023490905756 ], [ 142.627212524414176, -6.179833889007568 ], [ 142.626007080078352, -5.903635025024414 ], [ 142.570114135742415, -5.882334232330265 ], [ 142.06697082519554, -5.469642162322998 ], [ 142.081817626953352, -5.412435054778996 ], [ 142.1815185546875, -5.32333517074585 ], [ 142.303115844727017, -5.325634002685433 ], [ 142.321105957031364, -5.186134815216064 ], [ 142.290512084961165, -5.109734058380013 ], [ 142.320816040039176, -5.069036006927377 ], [ 142.324310302734489, -4.941134929656982 ], [ 142.389816284179688, -4.993134021759033 ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-JWK", "NAME_1": "Jiwaka" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 144.75701904296875, -5.494135856628418 ], [ 144.779510498046875, -5.536135196685734 ], [ 144.879608154296989, -5.601233959197884 ], [ 144.91731262207054, -5.650634765624943 ], [ 144.9840087890625, -5.661633968353215 ], [ 144.994720458984602, -5.719933986663818 ], [ 145.026412963867415, -5.775935173034554 ], [ 144.881820678711165, -5.809534072875977 ], [ 144.8297119140625, -5.783133983612061 ], [ 144.81031799316429, -5.805533885955811 ], [ 144.79200744628929, -5.835433959960881 ], [ 144.816314697265625, -5.895534992217961 ], [ 144.802505493164517, -5.931334972381592 ], [ 144.778610229492415, -5.970334053039494 ], [ 144.694213867187614, -6.036633968353158 ], [ 144.751312255859375, -6.093635082244873 ], [ 144.72991943359375, -6.11573600769043 ], [ 144.741714477539176, -6.164634227752629 ], [ 144.725814819336165, -6.243435859680176 ], [ 144.688110351562614, -6.268733978271484 ], [ 144.682113647461051, -6.300836086273193 ], [ 144.64491271972679, -6.30973577499384 ], [ 144.592910766601676, -6.389835834503117 ], [ 144.416809082031477, -6.279036045074463 ], [ 144.370315551757926, -6.232935905456429 ], [ 144.479705810546875, -6.161435127258244 ], [ 144.4757080078125, -6.003835201263428 ], [ 144.419113159179915, -5.993934154510441 ], [ 144.376510620117188, -6.023734092712402 ], [ 144.325408935546875, -6.023134231567383 ], [ 144.274505615234602, -5.921333789825439 ], [ 144.3004150390625, -5.860835075378418 ], [ 144.370010375976562, -5.811334133148193 ], [ 144.383209228515625, -5.75353479385376 ], [ 144.489013671875, -5.762633800506592 ], [ 144.513916015625227, -5.711733818054142 ], [ 144.50971984863304, -5.679834842681885 ], [ 144.469711303711051, -5.659835815429688 ], [ 144.462814331054801, -5.523235797882023 ], [ 144.298110961914062, -5.514035224914551 ], [ 144.302810668945312, -5.457933902740422 ], [ 144.375411987304801, -5.321434020996037 ], [ 144.282516479492415, -5.219533920288029 ], [ 144.506713867187614, -5.291035175323486 ], [ 144.581115722656364, -5.369033813476562 ], [ 144.75701904296875, -5.494135856628418 ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-MPM", "NAME_1": "Madang" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 145.780838012695426, -5.299445152282658 ], [ 145.778610229492188, -5.298333168029785 ], [ 145.781387329101562, -5.295001029968262 ], [ 145.781951904296989, -5.296111106872502 ], [ 145.780838012695426, -5.299445152282658 ] ] ], [ [ [ 145.787658691406364, -5.254936218261662 ], [ 145.787826538086165, -5.257168769836369 ], [ 145.785400390625114, -5.258316040039062 ], [ 145.784713745117188, -5.256082057952881 ], [ 145.787658691406364, -5.254936218261662 ] ] ], [ [ [ 145.79119873046875, -5.244953155517464 ], [ 145.790313720703352, -5.246356964111271 ], [ 145.790863037109602, -5.243291854858398 ], [ 145.791748046875, -5.243835926055908 ], [ 145.79119873046875, -5.244953155517464 ] ] ], [ [ [ 145.797256469726904, -5.207542896270752 ], [ 145.796478271484489, -5.206942081451359 ], [ 145.7974853515625, -5.205537796020508 ], [ 145.798141479492642, -5.206971168518066 ], [ 145.797256469726904, -5.207542896270752 ] ] ], [ [ [ 147.093048095703239, -5.203889846801701 ], [ 147.134719848632812, -5.242500782012939 ], [ 147.188888549804688, -5.264165878295842 ], [ 147.179168701171875, -5.298333168029785 ], [ 147.21833801269554, -5.351666927337646 ], [ 147.200561523437727, -5.362220764160099 ], [ 147.217773437500227, -5.403611183166504 ], [ 147.164657592773438, -5.413952827453556 ], [ 147.134170532226562, -5.442221164703312 ], [ 146.994995117187727, -5.35027885437006 ], [ 146.997619628906477, -5.244856834411621 ], [ 147.031661987304801, -5.244166851043644 ], [ 147.093048095703239, -5.203889846801701 ] ] ], [ [ [ 145.807495117187614, -5.197220802307129 ], [ 145.80555725097679, -5.195001125335637 ], [ 145.806671142578352, -5.193889141082707 ], [ 145.807785034179688, -5.196389198303223 ], [ 145.807495117187614, -5.197220802307129 ] ] ], [ [ [ 145.82666015625, -5.195001125335637 ], [ 145.8175048828125, -5.207777976989746 ], [ 145.81304931640625, -5.205277919769287 ], [ 145.825836181640739, -5.187778949737549 ], [ 145.82666015625, -5.195001125335637 ] ] ], [ [ [ 145.806671142578352, -5.188333034515324 ], [ 145.804718017578125, -5.187222957611084 ], [ 145.80555725097679, -5.184443950653019 ], [ 145.807220458984375, -5.185834884643555 ], [ 145.806671142578352, -5.188333034515324 ] ] ], [ [ [ 145.829437255859489, -5.180555820465088 ], [ 145.827774047851904, -5.180277824401855 ], [ 145.830001831054801, -5.173890113830566 ], [ 145.83222961425804, -5.173055171966496 ], [ 145.829437255859489, -5.180555820465088 ] ] ], [ [ [ 145.839996337890625, -5.171946048736515 ], [ 145.83833312988304, -5.170833110809269 ], [ 145.840560913085938, -5.166944980621338 ], [ 145.842498779296875, -5.170833110809269 ], [ 145.839996337890625, -5.171946048736515 ] ] ], [ [ [ 145.791427612304801, -5.153297901153508 ], [ 145.790191650390739, -5.15262508392334 ], [ 145.791168212890625, -5.151315212249699 ], [ 145.792098999023551, -5.152629852294865 ], [ 145.791427612304801, -5.153297901153508 ] ] ], [ [ [ 145.80952453613304, -5.144303798675537 ], [ 145.808197021484602, -5.146958827972412 ], [ 145.807235717773665, -5.146684169769287 ], [ 145.806655883789062, -5.144676208496094 ], [ 145.80952453613304, -5.144303798675537 ] ] ], [ [ [ 145.813705444335938, -5.137173175811711 ], [ 145.81292724609375, -5.138031959533691 ], [ 145.811737060546989, -5.13754415512085 ], [ 145.813339233398665, -5.136598110198975 ], [ 145.813705444335938, -5.137173175811711 ] ] ], [ [ [ 145.822219848632926, -5.136944770812988 ], [ 145.820556640625, -5.135001182556152 ], [ 145.821395874023665, -5.133889198303223 ], [ 145.822784423828239, -5.135557174682617 ], [ 145.822219848632926, -5.136944770812988 ] ] ], [ [ [ 145.806076049804688, -5.13489818572998 ], [ 145.80555725097679, -5.135279178619385 ], [ 145.803466796875227, -5.133609771728516 ], [ 145.805038452148438, -5.133297920226994 ], [ 145.806076049804688, -5.13489818572998 ] ] ], [ [ [ 145.813690185546875, -5.131461143493652 ], [ 145.813995361328239, -5.133314132690373 ], [ 145.8114013671875, -5.131461143493652 ], [ 145.81195068359375, -5.130504131317139 ], [ 145.813690185546875, -5.131461143493652 ] ] ], [ [ [ 145.80548095703125, -5.132153987884465 ], [ 145.804229736328352, -5.131597995758 ], [ 145.80694580078125, -5.130138874053898 ], [ 145.806533813477017, -5.131388187408447 ], [ 145.80548095703125, -5.132153987884465 ] ] ], [ [ [ 145.80726623535179, -5.121312141418457 ], [ 145.80780029296875, -5.123844146728516 ], [ 145.804809570312727, -5.123874187469482 ], [ 145.8056640625, -5.121868133544922 ], [ 145.80726623535179, -5.121312141418457 ] ] ], [ [ [ 145.806854248047102, -5.112436771392765 ], [ 145.805679321289062, -5.113039016723633 ], [ 145.805603027343864, -5.111547946929932 ], [ 145.806976318359489, -5.11132097244257 ], [ 145.806854248047102, -5.112436771392765 ] ] ], [ [ [ 145.805252075195426, -5.098566055297852 ], [ 145.803741455078466, -5.098354816436711 ], [ 145.804367065429688, -5.096825122833195 ], [ 145.80538940429733, -5.097592830657959 ], [ 145.805252075195426, -5.098566055297852 ] ] ], [ [ [ 146.959350585937614, -5.091061115264893 ], [ 146.976348876953239, -5.110335826873779 ], [ 146.959396362304801, -5.133674144744873 ], [ 146.939834594726676, -5.113733768463135 ], [ 146.959350585937614, -5.091061115264893 ] ] ], [ [ [ 145.819168090820426, -5.075555801391602 ], [ 145.822784423828239, -5.083889007568359 ], [ 145.822494506836165, -5.1058349609375 ], [ 145.814727783203352, -5.078887939453068 ], [ 145.819168090820426, -5.075555801391602 ] ] ], [ [ [ 145.7965087890625, -5.010763168334904 ], [ 145.79560852050804, -5.010207176208439 ], [ 145.796096801757926, -5.009094238281193 ], [ 145.796661376953239, -5.00923299789423 ], [ 145.7965087890625, -5.010763168334904 ] ] ], [ [ [ 145.796310424804688, -5.008123874664307 ], [ 145.795471191406705, -5.008123874664307 ], [ 145.795333862304801, -5.006665229797363 ], [ 145.79623413085983, -5.0068039894104 ], [ 145.796310424804688, -5.008123874664307 ] ] ], [ [ [ 145.7947998046875, -4.988418102264404 ], [ 145.793960571289176, -4.987304210662842 ], [ 145.794662475586165, -4.985427856445256 ], [ 145.795074462890852, -4.986261844634953 ], [ 145.7947998046875, -4.988418102264404 ] ] ], [ [ [ 145.70361328125, -4.77027702331543 ], [ 145.701385498047102, -4.770555973052922 ], [ 145.699722290039517, -4.768610954284668 ], [ 145.703048706054688, -4.769167900085449 ], [ 145.70361328125, -4.77027702331543 ] ] ], [ [ [ 146.23883056640625, -4.762860774993896 ], [ 146.256912231445426, -4.80616903305048 ], [ 146.241928100586165, -4.822244167327881 ], [ 146.228012084961165, -4.80835485458374 ], [ 146.231887817382926, -4.828641891479492 ], [ 146.213562011719205, -4.82755708694458 ], [ 146.199401855468977, -4.781435966491642 ], [ 146.23883056640625, -4.762860774993896 ] ] ], [ [ [ 145.993835449219205, -4.521083831787053 ], [ 146.062225341796875, -4.582499980926457 ], [ 146.068328857421875, -4.650001049041748 ], [ 146.053894042968977, -4.705554962158089 ], [ 145.995178222656364, -4.743017196655273 ], [ 145.925384521484489, -4.753864765167236 ], [ 145.887466430664176, -4.72855281829834 ], [ 145.880661010742188, -4.644320964813232 ], [ 145.917785644531364, -4.567738056182804 ], [ 145.993835449219205, -4.521083831787053 ] ] ], [ [ [ 144.942535400390625, -4.23003101348877 ], [ 144.94174194335983, -4.228332996368351 ], [ 144.943054199218977, -4.227499008178654 ], [ 144.944808959961051, -4.228868961334172 ], [ 144.942535400390625, -4.23003101348877 ] ] ], [ [ [ 144.873474121093864, -4.175020217895508 ], [ 144.872558593750114, -4.173456192016488 ], [ 144.874343872070312, -4.169704914093018 ], [ 144.874069213867301, -4.174339771270695 ], [ 144.873474121093864, -4.175020217895508 ] ] ], [ [ [ 145.040481567382812, -4.033036231994572 ], [ 145.073745727539176, -4.050741195678711 ], [ 145.079284667968864, -4.084305763244629 ], [ 145.067626953125455, -4.112383842468262 ], [ 145.026138305664062, -4.124133110046387 ], [ 144.99972534179733, -4.111110210418644 ], [ 144.989440917968864, -4.065557003021183 ], [ 144.995590209961051, -4.04393291473383 ], [ 145.040481567382812, -4.033036231994572 ] ] ], [ [ [ 144.57861328125, -4.0 ], [ 144.661392211914062, -4.011666774749699 ], [ 144.662338256836051, -4.023490905761605 ], [ 144.85638427734375, -4.113333225250244 ], [ 144.868331909179801, -4.136943817138615 ], [ 144.844451904297102, -4.147221088409424 ], [ 144.851943969726676, -4.183055877685547 ], [ 144.884170532226562, -4.20111083984375 ], [ 144.91139221191429, -4.191666126251221 ], [ 144.93499755859375, -4.229721069335938 ], [ 144.975830078125227, -4.255833148956299 ], [ 144.970840454101562, -4.296666145324707 ], [ 144.991104125976676, -4.29555606842041 ], [ 145.032852172851562, -4.348848819732552 ], [ 145.103897094726562, -4.382452964782715 ], [ 145.168151855468864, -4.384764194488469 ], [ 145.185394287109375, -4.403883934020882 ], [ 145.22100830078125, -4.382352828979492 ], [ 145.322204589843977, -4.385091781616211 ], [ 145.365249633789062, -4.434384822845459 ], [ 145.358825683593977, -4.446434974670353 ], [ 145.414443969726676, -4.463684082031193 ], [ 145.420135498046875, -4.500501155853271 ], [ 145.453704833984375, -4.492603778839054 ], [ 145.528076171875114, -4.587175846099854 ], [ 145.546066284179688, -4.581357955932617 ], [ 145.597366333008154, -4.675765991210881 ], [ 145.670562744140739, -4.75579118728632 ], [ 145.805801391601562, -4.847601890563908 ], [ 145.77944946289108, -4.943713188171387 ], [ 145.814727783203352, -5.068334102630558 ], [ 145.774749755859716, -5.075568199157715 ], [ 145.806396484375114, -5.089445114135685 ], [ 145.7869873046875, -5.124404907226506 ], [ 145.806396484375114, -5.125833988189697 ], [ 145.799163818359716, -5.134167194366455 ], [ 145.802474975586165, -5.155960083007756 ], [ 145.790557861328239, -5.147500038146916 ], [ 145.788055419921989, -5.152222156524658 ], [ 145.80694580078125, -5.162222862243596 ], [ 145.791671752929801, -5.195555210113525 ], [ 145.806671142578352, -5.202499866485539 ], [ 145.798889160156477, -5.202221870422306 ], [ 145.792922973632812, -5.206943988800049 ], [ 145.791107177734489, -5.218332767486572 ], [ 145.810272216796875, -5.207221984863281 ], [ 145.815551757812614, -5.218610763549805 ], [ 145.777496337890852, -5.256112098693791 ], [ 145.743606567382926, -5.325554847717228 ], [ 145.755554199218977, -5.320831775665283 ], [ 145.760559082031477, -5.351388931274414 ], [ 145.73194885253929, -5.422500133514347 ], [ 145.760284423828125, -5.477777957916203 ], [ 145.795562744140625, -5.494444847106934 ], [ 145.851669311523438, -5.472499847411996 ], [ 145.869186401367188, -5.492032051086426 ], [ 145.91676330566429, -5.496956825256348 ], [ 145.932266235351676, -5.474729061126595 ], [ 145.983337402343977, -5.469442844390869 ], [ 146.000274658203352, -5.496942996978703 ], [ 146.07861328125, -5.506666183471623 ], [ 146.119171142578239, -5.541110992431641 ], [ 146.1602783203125, -5.531943798065186 ], [ 146.186386108398438, -5.560833930969125 ], [ 146.26666259765625, -5.573054790496826 ], [ 146.284729003906364, -5.595832824707031 ], [ 146.341110229492415, -5.573332786560059 ], [ 146.378326416015852, -5.614999771118107 ], [ 146.460830688476562, -5.606112003326416 ], [ 146.479446411133267, -5.645833015441895 ], [ 146.540069580078352, -5.666914939880314 ], [ 146.630554199218864, -5.761944770812931 ], [ 146.70027160644554, -5.772500038146973 ], [ 146.755889892578466, -5.808039188384953 ], [ 146.768112182617188, -5.840333938598633 ], [ 146.716812133789062, -5.884635925292969 ], [ 146.674011230468864, -5.891334056854191 ], [ 146.498611450195312, -5.993234157562199 ], [ 145.862106323242529, -5.996534824371338 ], [ 145.820617675781477, -5.975334167480469 ], [ 145.663818359375227, -5.981535911560002 ], [ 145.6588134765625, -5.921934127807617 ], [ 145.584518432617642, -5.905334949493408 ], [ 145.527114868164176, -5.973533153533879 ], [ 145.479812622070426, -5.978434085845947 ], [ 145.420318603515739, -5.934535026550293 ], [ 145.3712158203125, -5.859635829925537 ], [ 145.302719116210938, -5.884833812713566 ], [ 145.26960754394554, -5.858233928680363 ], [ 145.230209350585938, -5.852434158325195 ], [ 145.16461181640625, -5.876634120941162 ], [ 145.139007568359489, -5.829033851623535 ], [ 145.090606689453125, -5.78893518447876 ], [ 145.026412963867415, -5.775935173034554 ], [ 144.994720458984602, -5.719933986663818 ], [ 144.9840087890625, -5.661633968353215 ], [ 144.91731262207054, -5.650634765624943 ], [ 144.879608154296989, -5.601233959197884 ], [ 144.779510498046875, -5.536135196685734 ], [ 144.741714477539176, -5.478033065795898 ], [ 144.581115722656364, -5.369033813476562 ], [ 144.506713867187614, -5.291035175323486 ], [ 144.181320190429801, -5.191036224365178 ], [ 144.14100646972679, -5.158635139465275 ], [ 144.098312377930142, -5.078934192657471 ], [ 144.012115478515739, -5.054034233093262 ], [ 143.9691162109375, -5.010334014892521 ], [ 144.034820556640739, -4.991835117340088 ], [ 144.10491943359375, -4.943534851074219 ], [ 144.574218750000114, -4.58783483505249 ], [ 144.57861328125, -4.0 ] ] ], [ [ [ 144.96632385253929, -3.990691900253239 ], [ 144.970916748047102, -3.996014118194523 ], [ 144.967315673828239, -4.001597881317139 ], [ 144.956573486328352, -3.993212938308716 ], [ 144.96632385253929, -3.990691900253239 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-MRL", "NAME_1": "Manus" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 145.307220458984375, -0.756389021873474 ], [ 145.307220458984375, -0.760555028915405 ], [ 145.302505493164062, -0.756667017936707 ], [ 145.302993774414176, -0.755904018878937 ], [ 145.307220458984375, -0.756389021873474 ] ] ], [ [ [ 145.565826416015739, -0.87201398611063 ], [ 145.568328857421989, -0.877777993679047 ], [ 145.544097900390739, -0.901112020015603 ], [ 145.54888916015625, -0.881944000720978 ], [ 145.565826416015739, -0.87201398611063 ] ] ], [ [ [ 145.531112670898551, -0.908334970474243 ], [ 145.528884887695312, -0.907500028610229 ], [ 145.532226562500114, -0.904999971389771 ], [ 145.533050537109375, -0.906665980815831 ], [ 145.531112670898551, -0.908334970474243 ] ] ], [ [ [ 143.000274658203239, -1.000277042388859 ], [ 143.0, -1.000555038452092 ], [ 142.999725341796875, -1.000277042388859 ], [ 143.0, -0.999998986721039 ], [ 143.000274658203239, -1.000277042388859 ] ] ], [ [ [ 144.398605346679688, -1.079399943351632 ], [ 144.396392822265739, -1.075500011444092 ], [ 144.398193359375, -1.073758959770146 ], [ 144.399642944336051, -1.074872970580941 ], [ 144.398605346679688, -1.079399943351632 ] ] ], [ [ [ 144.401718139648665, -1.080724000930786 ], [ 144.404998779296989, -1.0938880443573 ], [ 144.396942138671875, -1.094092965125981 ], [ 144.39617919921875, -1.080862998962402 ], [ 144.401718139648665, -1.080724000930786 ] ] ], [ [ [ 144.417083740234375, -1.102753996849003 ], [ 144.412796020507926, -1.099246025085449 ], [ 144.412582397460938, -1.096670985221806 ], [ 144.415908813476676, -1.098273038864079 ], [ 144.417083740234375, -1.102753996849003 ] ] ], [ [ [ 144.41925048828125, -1.108623027801514 ], [ 144.418136596679801, -1.10869300365448 ], [ 144.416625976562614, -1.104096055030823 ], [ 144.418838500976562, -1.104861974716187 ], [ 144.41925048828125, -1.108623027801514 ] ] ], [ [ [ 144.49690246582054, -1.111690044403019 ], [ 144.499206542968864, -1.11868500709528 ], [ 144.481674194336051, -1.11489295959467 ], [ 144.487976074218864, -1.107790946960392 ], [ 144.49690246582054, -1.111690044403019 ] ] ], [ [ [ 144.42034912109375, -1.113361001014653 ], [ 144.418350219726676, -1.112733960151616 ], [ 144.419311523437614, -1.109390974044743 ], [ 144.4208984375, -1.111271023750248 ], [ 144.42034912109375, -1.113361001014653 ] ] ], [ [ [ 144.5035400390625, -1.114685058593636 ], [ 144.500778198242301, -1.114336013793888 ], [ 144.49932861328125, -1.110298037528992 ], [ 144.503265380859489, -1.111271023750248 ], [ 144.5035400390625, -1.114685058593636 ] ] ], [ [ [ 144.4197998046875, -1.122483968734684 ], [ 144.418960571289176, -1.122203946113586 ], [ 144.419586181640625, -1.114197015762329 ], [ 144.421661376953125, -1.11642396450037 ], [ 144.4197998046875, -1.122483968734684 ] ] ], [ [ [ 144.507415771484489, -1.117678046226388 ], [ 144.505477905273665, -1.116704940795842 ], [ 144.505767822265625, -1.115309953689575 ], [ 144.507705688476562, -1.115867972373962 ], [ 144.507415771484489, -1.117678046226388 ] ] ], [ [ [ 144.500228881835938, -1.141216993331909 ], [ 144.496826171875, -1.139613986015263 ], [ 144.504928588867301, -1.118792057037354 ], [ 144.509918212890739, -1.131744980812073 ], [ 144.500228881835938, -1.141216993331909 ] ] ], [ [ [ 144.476837158203125, -1.124781966209412 ], [ 144.474746704101562, -1.124503970146179 ], [ 144.476760864257812, -1.119696974754277 ], [ 144.477661132812614, -1.120046019554138 ], [ 144.476837158203125, -1.124781966209412 ] ] ], [ [ [ 144.403549194335938, -1.165765047073307 ], [ 144.399932861328125, -1.164335966110229 ], [ 144.4188232421875, -1.127218008041382 ], [ 144.420974731445312, -1.151383996009827 ], [ 144.403549194335938, -1.165765047073307 ] ] ], [ [ [ 144.480422973632812, -1.132509946823063 ], [ 144.496078491210938, -1.139474987983704 ], [ 144.495925903320312, -1.140938997268677 ], [ 144.481536865234375, -1.135365962982178 ], [ 144.478912353515625, -1.130839943885803 ], [ 144.480422973632812, -1.132509946823063 ] ] ], [ [ [ 144.395645141601676, -1.167677044868412 ], [ 144.391693115234375, -1.166424036025944 ], [ 144.399108886718864, -1.165169954299927 ], [ 144.398757934570312, -1.166982054710388 ], [ 144.395645141601676, -1.167677044868412 ] ] ], [ [ [ 144.380554199218977, -1.164168000221196 ], [ 144.381942749023551, -1.165555953979435 ], [ 144.380279541015625, -1.166668057441655 ], [ 144.379165649414062, -1.165555953979435 ], [ 144.380554199218977, -1.164168000221196 ] ] ], [ [ [ 144.385559082031364, -1.164721012115365 ], [ 144.388885498046875, -1.166668057441655 ], [ 144.390548706054688, -1.167222023010197 ], [ 144.382507324218864, -1.166668057441655 ], [ 144.385559082031364, -1.164721012115365 ] ] ], [ [ [ 144.370040893554688, -1.207509994506779 ], [ 144.369827270507812, -1.205490946769714 ], [ 144.374526977539062, -1.20173001289362 ], [ 144.373214721679688, -1.205003023147583 ], [ 144.370040893554688, -1.207509994506779 ] ] ], [ [ [ 144.271743774414062, -1.216632962226811 ], [ 144.275070190429915, -1.218026041984501 ], [ 144.275772094726562, -1.224920034408512 ], [ 144.26531982421875, -1.223108053207341 ], [ 144.271743774414062, -1.216632962226811 ] ] ], [ [ [ 144.225448608398438, -1.223873972892704 ], [ 144.220596313476676, -1.22484898567194 ], [ 144.217559814453125, -1.22331798076624 ], [ 144.230712890625, -1.218394994735604 ], [ 144.225448608398438, -1.223873972892704 ] ] ], [ [ [ 144.297576904297102, -1.220173001289311 ], [ 144.292373657226562, -1.223945021629333 ], [ 144.284210205078125, -1.221508026123047 ], [ 144.287261962890625, -1.219625949859562 ], [ 144.297576904297102, -1.220173001289311 ] ] ], [ [ [ 144.354049682617301, -1.227146983146667 ], [ 144.353012084960938, -1.22484898567194 ], [ 144.355224609375114, -1.223667025565987 ], [ 144.355712890625, -1.224781036376953 ], [ 144.354049682617301, -1.227146983146667 ] ] ], [ [ [ 144.316192626953125, -1.237107038497811 ], [ 144.31549072265625, -1.238847970962468 ], [ 144.313690185546875, -1.237941026687622 ], [ 144.314941406250227, -1.236757993698063 ], [ 144.316192626953125, -1.237107038497811 ] ] ], [ [ [ 144.357986450195312, -1.244905948638859 ], [ 144.354736328125, -1.244207978248596 ], [ 144.355148315429688, -1.242328047752324 ], [ 144.357299804687614, -1.242050051689091 ], [ 144.357986450195312, -1.244905948638859 ] ] ], [ [ [ 144.357818603515625, -1.267752051353398 ], [ 144.3568115234375, -1.266144990921021 ], [ 144.358871459961051, -1.25929403305048 ], [ 144.359649658203125, -1.264027953147831 ], [ 144.357818603515625, -1.267752051353398 ] ] ], [ [ [ 144.299362182617301, -1.265447974205017 ], [ 144.297286987304688, -1.265308976173287 ], [ 144.297500610351562, -1.263149976730347 ], [ 144.299789428710938, -1.263149976730347 ], [ 144.299362182617301, -1.265447974205017 ] ] ], [ [ [ 144.332931518554801, -1.27192497253418 ], [ 144.330856323242188, -1.272003054618779 ], [ 144.330795288086051, -1.270329952239933 ], [ 144.332382202148438, -1.269773960113525 ], [ 144.332931518554801, -1.27192497253418 ] ] ], [ [ [ 144.35418701171875, -1.278470993041935 ], [ 144.352523803711051, -1.278331995010376 ], [ 144.356323242187727, -1.270671963691711 ], [ 144.356674194335938, -1.275127053260803 ], [ 144.35418701171875, -1.278470993041935 ] ] ], [ [ [ 144.353179931640625, -1.283565044403019 ], [ 144.352493286132812, -1.28286695480341 ], [ 144.354080200195426, -1.279664993286133 ], [ 144.354278564453239, -1.282101035118046 ], [ 144.353179931640625, -1.283565044403019 ] ] ], [ [ [ 144.347061157226562, -1.286486029624939 ], [ 144.347961425781364, -1.30047595500946 ], [ 144.339370727539176, -1.314404010772705 ], [ 144.345947265625, -1.296298027038574 ], [ 144.347061157226562, -1.286486029624939 ] ] ], [ [ [ 144.263381958007812, -1.292538046836853 ], [ 144.262069702148438, -1.29222297668457 ], [ 144.260955810547102, -1.290518045425358 ], [ 144.263931274414062, -1.290725946426392 ], [ 144.263381958007812, -1.292538046836853 ] ] ], [ [ [ 143.583450317382812, -1.313063025474491 ], [ 143.578536987304801, -1.311254024505558 ], [ 143.578735351562614, -1.307492971420231 ], [ 143.583175659179688, -1.307353973388672 ], [ 143.583450317382812, -1.313063025474491 ] ] ], [ [ [ 144.28912353515625, -1.31275999546051 ], [ 144.28759765625, -1.312103986740112 ], [ 144.287429809570312, -1.310634016990662 ], [ 144.289810180664176, -1.310711026191711 ], [ 144.28912353515625, -1.31275999546051 ] ] ], [ [ [ 144.335464477539062, -1.324695944786072 ], [ 144.334640502929801, -1.32420802116394 ], [ 144.339126586914062, -1.316828966140747 ], [ 144.336715698242301, -1.323443055152893 ], [ 144.335464477539062, -1.324695944786072 ] ] ], [ [ [ 144.1522216796875, -1.318302989006042 ], [ 144.16731262207054, -1.327844023704415 ], [ 144.168350219726562, -1.331743001937866 ], [ 144.154983520507926, -1.326241016387939 ], [ 144.1522216796875, -1.318302989006042 ] ] ], [ [ [ 144.174438476562614, -1.365308046340942 ], [ 144.17359924316429, -1.362174034118652 ], [ 144.175537109375114, -1.357228994369507 ], [ 144.175964355468864, -1.358901023864632 ], [ 144.174438476562614, -1.365308046340942 ] ] ], [ [ [ 144.190567016601562, -1.408759951591435 ], [ 144.215560913086165, -1.40103101730341 ], [ 144.181015014648438, -1.412520051002502 ], [ 144.171463012695312, -1.398594975471497 ], [ 144.172744750976562, -1.386127948760986 ], [ 144.190567016601562, -1.408759951591435 ] ] ], [ [ [ 144.083068847656364, -1.391003012657166 ], [ 144.088821411132812, -1.39392697811121 ], [ 144.087158203125, -1.400056004524174 ], [ 144.082382202148438, -1.39330005645752 ], [ 144.083068847656364, -1.391003012657166 ] ] ], [ [ [ 144.082595825195312, -1.395320057868901 ], [ 144.082534790039062, -1.396088004112187 ], [ 144.07746887207054, -1.397549033164978 ], [ 144.079193115234602, -1.392117977142277 ], [ 144.082595825195312, -1.395320057868901 ] ] ], [ [ [ 144.519332885742188, -1.404304027557259 ], [ 144.51593017578125, -1.412312984466553 ], [ 144.505477905273665, -1.417812943458557 ], [ 144.506927490234375, -1.400666952133122 ], [ 144.519332885742188, -1.404304027557259 ] ] ], [ [ [ 144.052886962890739, -1.469380021095219 ], [ 144.060775756835938, -1.482959032058716 ], [ 144.05108642578125, -1.490479946136475 ], [ 144.041259765625114, -1.452386975288391 ], [ 144.052886962890739, -1.469380021095219 ] ] ], [ [ [ 143.055831909179688, -1.454167008399963 ], [ 143.072784423828125, -1.458333015441895 ], [ 143.082138061523438, -1.46402204036707 ], [ 143.049163818359375, -1.476667046546822 ], [ 143.055831909179688, -1.454167008399963 ] ] ], [ [ [ 145.124160766601562, -1.473055958747807 ], [ 145.126663208007812, -1.475278973579407 ], [ 145.123611450195312, -1.478610992431527 ], [ 145.121948242187614, -1.474166035652161 ], [ 145.124160766601562, -1.473055958747807 ] ] ], [ [ [ 145.016662597656364, -1.486945986747685 ], [ 145.014450073242188, -1.487776994705143 ], [ 145.009445190429801, -1.486111044883671 ], [ 145.016937255859375, -1.484722971916199 ], [ 145.016662597656364, -1.486945986747685 ] ] ], [ [ [ 145.004165649414062, -1.485972046852112 ], [ 145.00502014160179, -1.486013054847604 ], [ 145.006393432617301, -1.487776994705143 ], [ 145.003326416015739, -1.487498998641911 ], [ 145.004165649414062, -1.485972046852112 ] ] ], [ [ [ 145.078887939453239, -1.503054022788888 ], [ 145.077499389648665, -1.502223014831486 ], [ 145.078399658203125, -1.499444007873535 ], [ 145.079925537109375, -1.500764012336674 ], [ 145.078887939453239, -1.503054022788888 ] ] ], [ [ [ 145.083328247070312, -1.506389021873417 ], [ 145.095977783203125, -1.519029021263066 ], [ 145.078887939453239, -1.514999032020569 ], [ 145.067214965820426, -1.547222018241825 ], [ 145.04083251953125, -1.538054943084717 ], [ 145.083328247070312, -1.506389021873417 ] ] ], [ [ [ 145.004440307617415, -1.528331995010319 ], [ 145.00062561035179, -1.529306054115239 ], [ 144.998687744140625, -1.521309971809387 ], [ 145.002227783203239, -1.523609995841923 ], [ 145.004440307617415, -1.528331995010319 ] ] ], [ [ [ 145.031661987304688, -1.532222986221257 ], [ 145.0352783203125, -1.538054943084717 ], [ 145.016113281250114, -1.554721951484623 ], [ 145.015838623046875, -1.547500014305058 ], [ 145.031661987304688, -1.532222986221257 ] ] ], [ [ [ 145.004440307617415, -1.536388993263245 ], [ 145.014999389648551, -1.546388030052128 ], [ 145.013885498046875, -1.548056006431523 ], [ 145.000274658203239, -1.539167046546936 ], [ 145.004440307617415, -1.536388993263245 ] ] ], [ [ [ 144.969131469726562, -1.566066026687565 ], [ 144.970657348632812, -1.570659995079041 ], [ 144.974472045898438, -1.577206015586739 ], [ 144.969818115234375, -1.571913957595825 ], [ 144.966918945312614, -1.563698053359929 ], [ 144.969131469726562, -1.566066026687565 ] ] ], [ [ [ 144.987548828125, -1.58820998668665 ], [ 144.99737548828125, -1.591689944267159 ], [ 144.987823486328125, -1.590437054634037 ], [ 144.9752197265625, -1.578737974166813 ], [ 144.987548828125, -1.58820998668665 ] ] ], [ [ [ 144.027694702148665, -1.655588030815125 ], [ 144.023681640625227, -1.641453027725106 ], [ 144.025833129882926, -1.64068496227253 ], [ 144.032333374023551, -1.645979046821594 ], [ 144.027694702148665, -1.655588030815125 ] ] ], [ [ [ 144.017105102539062, -1.660045981407109 ], [ 144.021530151367188, -1.659209012985229 ], [ 144.022369384765739, -1.659765958786011 ], [ 144.017456054687614, -1.661856055259705 ], [ 144.013580322265852, -1.658514022827092 ], [ 144.017105102539062, -1.660045981407109 ] ] ], [ [ [ 142.845520019531477, -1.727622032165527 ], [ 142.881332397460938, -1.728561043739262 ], [ 142.873580932617301, -1.751757979393005 ], [ 142.84942626953125, -1.739964008331299 ], [ 142.828765869140739, -1.760316014289856 ], [ 142.83111572265625, -1.720000982284489 ], [ 142.845520019531477, -1.727622032165527 ] ] ], [ [ [ 146.580001831054688, -1.902500033378601 ], [ 146.58583068847679, -1.903609991073495 ], [ 146.586227416992301, -1.905336022376957 ], [ 146.579193115234489, -1.905472040176392 ], [ 146.580001831054688, -1.902500033378601 ] ] ], [ [ [ 146.875000000000114, -1.905557036399784 ], [ 146.897506713867301, -1.916946053504944 ], [ 146.898071289062614, -1.918071031570378 ], [ 146.88250732421875, -1.914723038673401 ], [ 146.875000000000114, -1.905557036399784 ] ] ], [ [ [ 146.601669311523551, -1.906388998031559 ], [ 146.605270385742188, -1.906110048294011 ], [ 146.607101440429688, -1.908709049224854 ], [ 146.598785400390625, -1.907050013542175 ], [ 146.601669311523551, -1.906388998031559 ] ] ], [ [ [ 146.662506103515852, -1.928609967231694 ], [ 146.668060302734489, -1.930835008621159 ], [ 146.673049926757926, -1.932222962379456 ], [ 146.662994384765625, -1.9322429895401 ], [ 146.662506103515852, -1.928609967231694 ] ] ], [ [ [ 146.998336791992188, -1.933889031410217 ], [ 147.006393432617415, -1.938333034515381 ], [ 147.006942749023438, -1.940276980400085 ], [ 147.001449584961051, -1.939445018768311 ], [ 146.998336791992188, -1.933889031410217 ] ] ], [ [ [ 146.599716186523438, -1.93416702747345 ], [ 146.604446411132812, -1.936944961547852 ], [ 146.603607177734489, -1.939998984336853 ], [ 146.596389770507926, -1.938055038452148 ], [ 146.599716186523438, -1.93416702747345 ] ] ], [ [ [ 147.019439697265625, -1.938333034515381 ], [ 147.020553588867301, -1.939723014831543 ], [ 147.017227172851562, -1.939167022705078 ], [ 147.017227172851562, -1.938611030578613 ], [ 147.019439697265625, -1.938333034515381 ] ] ], [ [ [ 147.103057861328125, -1.938611030578613 ], [ 147.104446411132926, -1.943333029747009 ], [ 147.097229003906364, -1.940554976463318 ], [ 147.099716186523551, -1.938889026641846 ], [ 147.103057861328125, -1.938611030578613 ] ] ], [ [ [ 147.132217407226562, -1.942221045493966 ], [ 147.136108398437614, -1.944442987442017 ], [ 147.136672973632926, -1.945834040641728 ], [ 147.129165649414062, -1.943055033683777 ], [ 147.132217407226562, -1.942221045493966 ] ] ], [ [ [ 146.6119384765625, -1.944167971610909 ], [ 146.626647949218977, -1.954033970832768 ], [ 146.623748779296875, -1.959864020347482 ], [ 146.6119384765625, -1.953888058662415 ], [ 146.6119384765625, -1.944167971610909 ] ] ], [ [ [ 146.494171142578125, -1.949444055557251 ], [ 146.493606567382812, -1.951388001441956 ], [ 146.491104125976676, -1.950834035873356 ], [ 146.49249267578125, -1.948609948158207 ], [ 146.494171142578125, -1.949444055557251 ] ] ], [ [ [ 147.189437866210938, -1.948609948158207 ], [ 147.19000244140625, -1.950278043746891 ], [ 147.187225341796989, -1.949722051620483 ], [ 147.187774658203125, -1.948609948158207 ], [ 147.189437866210938, -1.948609948158207 ] ] ], [ [ [ 146.839996337890625, -1.951110005378723 ], [ 146.97528076171875, -1.976943969726562 ], [ 147.109451293945426, -1.973611950874272 ], [ 147.140213012695312, -2.008317947387638 ], [ 147.153884887695426, -1.982777953147888 ], [ 147.266265869140625, -2.017549037933293 ], [ 147.318511962890625, -2.050409078597966 ], [ 147.334716796875114, -2.02594089508051 ], [ 147.346939086914062, -2.040556907653752 ], [ 147.337783813476562, -2.060277938842717 ], [ 147.29638671875, -2.061666011810303 ], [ 147.303604125976676, -2.07694506645197 ], [ 147.278060913086051, -2.10055494308466 ], [ 147.264724731445312, -2.093332052230778 ], [ 147.286117553710938, -2.077498912811222 ], [ 147.270004272461051, -2.078888893127441 ], [ 147.259994506835938, -2.100832939147892 ], [ 147.2611083984375, -2.106389999389648 ], [ 147.278335571289062, -2.115000009536629 ], [ 147.256805419921875, -2.151108026504517 ], [ 147.183609008789176, -2.208122968673649 ], [ 147.116256713867415, -2.174026966094914 ], [ 147.062500000000114, -2.205554962158203 ], [ 147.026947021484375, -2.208055019378662 ], [ 147.030548095703125, -2.194721937179565 ], [ 147.007217407226676, -2.192500114440861 ], [ 146.971939086914176, -2.214720964431763 ], [ 146.875549316406477, -2.203888893127385 ], [ 146.856948852539062, -2.184998989105168 ], [ 146.782867431640739, -2.180182933807316 ], [ 146.7388916015625, -2.15305495262146 ], [ 146.737503051757926, -2.127499103546029 ], [ 146.710281372070312, -2.141665935516301 ], [ 146.696105957031364, -2.123054981231689 ], [ 146.694442749023438, -2.14416599273676 ], [ 146.684722900390625, -2.126389026641846 ], [ 146.669998168945426, -2.132220983505249 ], [ 146.679412841796875, -2.154267072677612 ], [ 146.716659545898438, -2.170000076293945 ], [ 146.701385498046875, -2.197499990463257 ], [ 146.648330688476562, -2.208055019378662 ], [ 146.633895874023665, -2.184444904327393 ], [ 146.598892211914062, -2.183054924011174 ], [ 146.573059082031364, -2.218333959579468 ], [ 146.574066162109489, -2.248399972915593 ], [ 146.553604125976676, -2.255831956863403 ], [ 146.511108398437614, -2.214168071746712 ], [ 146.507781982421875, -2.17750096321106 ], [ 146.520828247070426, -2.166110038757324 ], [ 146.505554199218864, -2.154999017715397 ], [ 146.534500122070312, -2.134653091430607 ], [ 146.526809692382812, -2.117778062820378 ], [ 146.546951293945426, -2.131942987442017 ], [ 146.596389770507926, -2.12944507598877 ], [ 146.610275268554801, -2.113611936569214 ], [ 146.562591552734489, -2.042871952056885 ], [ 146.570281982421875, -1.985556960105896 ], [ 146.601394653320312, -2.025554895401001 ], [ 146.636672973632812, -1.969998955726567 ], [ 146.696670532226676, -1.999168038368225 ], [ 146.716949462890625, -1.985556960105896 ], [ 146.751663208007812, -1.996945023536625 ], [ 146.839996337890625, -1.951110005378723 ] ] ], [ [ [ 146.581665039062614, -1.953333973884526 ], [ 146.585281372070426, -1.959166049957275 ], [ 146.580825805664062, -1.961666941642761 ], [ 146.578048706054801, -1.957779049873352 ], [ 146.581665039062614, -1.953333973884526 ] ] ], [ [ [ 147.211669921875114, -1.954236984252873 ], [ 147.229446411132812, -1.963889002799988 ], [ 147.245559692382812, -1.963889002799988 ], [ 147.227218627929688, -1.967499017715397 ], [ 147.211669921875114, -1.954236984252873 ] ] ], [ [ [ 146.479095458984375, -1.959581017494145 ], [ 146.477783203125, -1.959792971610966 ], [ 146.478500366211051, -1.957587003707886 ], [ 146.479324340820312, -1.95807504653925 ], [ 146.479095458984375, -1.959581017494145 ] ] ], [ [ [ 147.288055419921875, -1.958610057830811 ], [ 147.291381835937614, -1.960832953453064 ], [ 147.279724121093864, -1.962501049041748 ], [ 147.283889770507812, -1.958888053894043 ], [ 147.288055419921875, -1.958610057830811 ] ] ], [ [ [ 147.318328857421875, -1.959166049957275 ], [ 147.336395263671989, -1.965276956558114 ], [ 147.34027099609375, -1.971390008926335 ], [ 147.322219848632812, -1.96722304821003 ], [ 147.318328857421875, -1.959166049957275 ] ] ], [ [ [ 146.799026489257812, -1.963564991950989 ], [ 146.798049926757812, -1.962242960929871 ], [ 146.79840087890625, -1.960572957992497 ], [ 146.799499511718864, -1.961964964866638 ], [ 146.799026489257812, -1.963564991950989 ] ] ], [ [ [ 146.906692504882926, -1.964421987533569 ], [ 146.906417846679688, -1.966122031211853 ], [ 146.905838012695312, -1.966109037399235 ], [ 146.905563354492301, -1.964714050292969 ], [ 146.906692504882926, -1.964421987533569 ] ] ], [ [ [ 146.477218627929688, -1.972777009010258 ], [ 146.476104736328125, -1.970201969146729 ], [ 146.477279663085938, -1.967442035674992 ], [ 146.47784423828125, -1.969799041748047 ], [ 146.477218627929688, -1.972777009010258 ] ] ], [ [ [ 147.34722900390625, -1.969720959663334 ], [ 147.3538818359375, -1.971390008926335 ], [ 147.355560302734375, -1.977221965789795 ], [ 147.342498779296989, -1.973333954811039 ], [ 147.34722900390625, -1.969720959663334 ] ] ], [ [ [ 146.655929565429688, -1.971367001533451 ], [ 146.655380249023438, -1.972522020339909 ], [ 146.654220581054688, -1.972509026527405 ], [ 146.653961181640739, -1.971631050109863 ], [ 146.655929565429688, -1.971367001533451 ] ] ], [ [ [ 148.07025146484375, -1.97438204288477 ], [ 148.068374633789062, -1.975842952728271 ], [ 148.064163208007812, -1.9734770059585 ], [ 148.068099975585938, -1.971526026725769 ], [ 148.07025146484375, -1.97438204288477 ] ] ], [ [ [ 147.377029418945426, -2.073939085006714 ], [ 147.410552978515625, -2.06555700302124 ], [ 147.41485595703125, -2.031692981719971 ], [ 147.402572631836051, -2.041889905929509 ], [ 147.405487060546875, -2.011459112167302 ], [ 147.366744995117301, -1.972844004631042 ], [ 147.419723510742301, -1.999721050262451 ], [ 147.439727783203125, -2.031666040420475 ], [ 147.419998168945312, -2.04222297668457 ], [ 147.423049926757812, -2.080276966094914 ], [ 147.314437866211051, -2.077776908874398 ], [ 147.345977783203125, -2.06555700302124 ], [ 147.351104736328239, -2.037777900695801 ], [ 147.4085693359375, -2.051376104354858 ], [ 147.377029418945426, -2.073939085006714 ] ] ], [ [ [ 148.032943725586051, -1.986081004142761 ], [ 148.028656005859375, -1.986081004142761 ], [ 148.026992797851562, -1.983641982078552 ], [ 148.032318115234375, -1.982597947120667 ], [ 148.032943725586051, -1.986081004142761 ] ] ], [ [ [ 146.695648193359375, -1.986929059028625 ], [ 146.696487426757926, -1.989449024200439 ], [ 146.693939208984375, -1.989433050155583 ], [ 146.693954467773438, -1.987514019012451 ], [ 146.695648193359375, -1.986929059028625 ] ] ], [ [ [ 146.608612060546875, -1.995833039283752 ], [ 146.606109619140739, -1.9911110401153 ], [ 146.609725952148551, -1.988888978958073 ], [ 146.611114501953125, -1.991667032241764 ], [ 146.608612060546875, -1.995833039283752 ] ] ], [ [ [ 147.930526733398551, -2.001473903656006 ], [ 147.928802490234489, -1.998886942863464 ], [ 147.929565429687614, -1.996940970420837 ], [ 147.931396484375, -1.999999046325684 ], [ 147.930526733398551, -2.001473903656006 ] ] ], [ [ [ 147.771209716796875, -2.034992933273315 ], [ 147.795562744140625, -2.049721002578622 ], [ 147.777770996093864, -2.06833291053772 ], [ 147.70953369140625, -2.052779912948608 ], [ 147.714996337890739, -2.041085004806519 ], [ 147.751312255859375, -2.049931049346867 ], [ 147.727493286132812, -2.027307987213078 ], [ 147.754089355468864, -2.04596304893488 ], [ 147.767791748046875, -2.036581993102914 ], [ 147.763442993164176, -2.003499984741211 ], [ 147.771209716796875, -2.034992933273315 ] ] ], [ [ [ 147.284729003906364, -2.015554904937687 ], [ 147.283889770507812, -2.015554904937687 ], [ 147.283615112304688, -2.013889074325562 ], [ 147.285278320312614, -2.014167070388794 ], [ 147.284729003906364, -2.015554904937687 ] ] ], [ [ [ 147.31298828125, -2.028194904327336 ], [ 147.311843872070312, -2.02827000617981 ], [ 147.311950683593977, -2.024442911148071 ], [ 147.313888549804801, -2.025832891464177 ], [ 147.31298828125, -2.028194904327336 ] ] ], [ [ [ 147.3094482421875, -2.031110048294067 ], [ 147.30999755859375, -2.032778024673405 ], [ 147.30694580078125, -2.034166097640991 ], [ 147.307357788085938, -2.031527042388916 ], [ 147.3094482421875, -2.031110048294067 ] ] ], [ [ [ 146.460556030273551, -2.05472207069397 ], [ 146.462493896484489, -2.056387901306096 ], [ 146.461105346679801, -2.059165954589844 ], [ 146.459030151367301, -2.05604100227356 ], [ 146.460556030273551, -2.05472207069397 ] ] ], [ [ [ 147.32049560546875, -2.064913988113403 ], [ 147.315933227539062, -2.067210912704468 ], [ 147.312606811523438, -2.065263032913151 ], [ 147.320571899414176, -2.063659906387329 ], [ 147.32049560546875, -2.064913988113403 ] ] ], [ [ [ 147.65692138671875, -2.066837072372437 ], [ 147.650375366211051, -2.088677883148137 ], [ 147.581390380859375, -2.091109991073608 ], [ 147.587493896484375, -2.083333969116211 ], [ 147.65692138671875, -2.066837072372437 ] ] ], [ [ [ 147.591888427734375, -2.080517053604069 ], [ 147.589736938476562, -2.080096960067692 ], [ 147.589462280273438, -2.078566074371338 ], [ 147.59222412109375, -2.078427076339665 ], [ 147.591888427734375, -2.080517053604069 ] ] ], [ [ [ 146.552780151367188, -2.084444046020508 ], [ 146.556671142578239, -2.087500095367432 ], [ 146.555557250976676, -2.093056917190552 ], [ 146.550277709960938, -2.088609933853149 ], [ 146.552780151367188, -2.084444046020508 ] ] ], [ [ [ 146.426391601562614, -2.087222099304086 ], [ 146.431396484375114, -2.096667051315251 ], [ 146.423889160156477, -2.10166692733759 ], [ 146.420272827148665, -2.091387987136841 ], [ 146.426391601562614, -2.087222099304086 ] ] ], [ [ [ 146.569824218750114, -2.095367908477783 ], [ 146.570831298828239, -2.096667051315251 ], [ 146.568893432617301, -2.098054885864201 ], [ 146.567779541015739, -2.096667051315251 ], [ 146.569824218750114, -2.095367908477783 ] ] ], [ [ [ 146.390838623046875, -2.100276947021428 ], [ 146.404449462890739, -2.10944390296936 ], [ 146.400833129882926, -2.118887901306152 ], [ 146.390838623046875, -2.115210056304875 ], [ 146.390838623046875, -2.100276947021428 ] ] ], [ [ [ 147.284713745117301, -2.103274106979313 ], [ 147.283187866211051, -2.102857112884521 ], [ 147.284027099609375, -2.100908041000366 ], [ 147.2847900390625, -2.101952075958252 ], [ 147.284713745117301, -2.103274106979313 ] ] ], [ [ [ 146.556671142578239, -2.118887901306152 ], [ 146.554992675781364, -2.11972188949585 ], [ 146.553054809570426, -2.117500066757145 ], [ 146.555770874023438, -2.117639064788818 ], [ 146.556671142578239, -2.118887901306152 ] ] ], [ [ [ 146.272872924804801, -2.159049034118652 ], [ 146.272109985351676, -2.159049034118652 ], [ 146.271209716796875, -2.157588005065861 ], [ 146.272872924804801, -2.158076047897339 ], [ 146.272872924804801, -2.159049034118652 ] ] ], [ [ [ 145.923553466796875, -2.160362005233765 ], [ 145.92529296875, -2.160571098327637 ], [ 145.925643920898438, -2.161756992340031 ], [ 145.923492431640625, -2.161336898803711 ], [ 145.923553466796875, -2.160362005233765 ] ] ], [ [ [ 146.293060302734489, -2.16416597366333 ], [ 146.290283203125, -2.164026975631657 ], [ 146.289581298828125, -2.162847995758057 ], [ 146.292221069335938, -2.162777900695744 ], [ 146.293060302734489, -2.16416597366333 ] ] ], [ [ [ 146.508605957031364, -2.162777900695744 ], [ 146.510284423828125, -2.164999961853027 ], [ 146.506103515625227, -2.167222023010254 ], [ 146.505004882812614, -2.164443969726562 ], [ 146.508605957031364, -2.162777900695744 ] ] ], [ [ [ 146.498611450195312, -2.166944026947021 ], [ 146.500000000000227, -2.170207977294865 ], [ 146.499160766601562, -2.170834064483643 ], [ 146.497772216796989, -2.168610095977783 ], [ 146.498611450195312, -2.166944026947021 ] ] ], [ [ [ 147.726943969726562, -2.18416690826416 ], [ 147.735549926757812, -2.191109895706177 ], [ 147.726943969726562, -2.201387882232666 ], [ 147.716949462890739, -2.196111917495728 ], [ 147.726943969726562, -2.18416690826416 ] ] ], [ [ [ 147.745285034179688, -2.189722061157227 ], [ 147.744171142578239, -2.18861198425293 ], [ 147.745895385742301, -2.186875104904061 ], [ 147.7469482421875, -2.18861198425293 ], [ 147.745285034179688, -2.189722061157227 ] ] ], [ [ [ 147.753326416015739, -2.190278053283691 ], [ 147.759445190429801, -2.197777986526489 ], [ 147.757781982421875, -2.204998970031738 ], [ 147.753326416015739, -2.199444055557194 ], [ 147.753326416015739, -2.190278053283691 ] ] ], [ [ [ 147.766113281250114, -2.194721937179565 ], [ 147.781951904296989, -2.205554962158203 ], [ 147.783340454101562, -2.228888988494873 ], [ 147.764724731445312, -2.202501058578434 ], [ 147.766113281250114, -2.194721937179565 ] ] ], [ [ [ 146.60882568359375, -2.197231054305973 ], [ 146.610015869140625, -2.199040889739933 ], [ 146.608474731445312, -2.200989961624089 ], [ 146.605712890625114, -2.198067903518677 ], [ 146.60882568359375, -2.197231054305973 ] ] ], [ [ [ 147.149581909179688, -2.200417995452881 ], [ 147.149444580078352, -2.198610067367497 ], [ 147.150283813476562, -2.198055982589722 ], [ 147.1507568359375, -2.199515104293823 ], [ 147.149581909179688, -2.200417995452881 ] ] ], [ [ [ 147.762161254882812, -2.202018022537231 ], [ 147.760894775390625, -2.201733112335205 ], [ 147.762771606445312, -2.199023008346501 ], [ 147.762710571289176, -2.199928045272827 ], [ 147.762161254882812, -2.202018022537231 ] ] ], [ [ [ 146.335006713867415, -2.202223062515259 ], [ 146.333953857421875, -2.201387882232666 ], [ 146.334716796875, -2.199444055557194 ], [ 146.335632324218864, -2.200692892074528 ], [ 146.335006713867415, -2.202223062515259 ] ] ], [ [ [ 147.151229858398551, -2.202239036560059 ], [ 147.150741577148438, -2.200778007507267 ], [ 147.153030395507812, -2.199594974517822 ], [ 147.153717041015625, -2.20042896270752 ], [ 147.151229858398551, -2.202239036560059 ] ] ], [ [ [ 147.743606567382926, -2.20055699348444 ], [ 147.7530517578125, -2.204444885253849 ], [ 147.756668090820312, -2.211389064788818 ], [ 147.743606567382926, -2.205832958221379 ], [ 147.743606567382926, -2.20055699348444 ] ] ], [ [ [ 147.1484375, -2.201191902160645 ], [ 147.14996337890625, -2.201749086379948 ], [ 147.149688720703239, -2.202583074569588 ], [ 147.147323608398438, -2.202166080474854 ], [ 147.1484375, -2.201191902160645 ] ] ], [ [ [ 146.23333740234375, -2.201041936874333 ], [ 146.236663818359489, -2.201109886169434 ], [ 146.237228393554801, -2.201667070388794 ], [ 146.23388671875, -2.202779054641667 ], [ 146.23333740234375, -2.201041936874333 ] ] ], [ [ [ 148.2005615234375, -2.204998970031738 ], [ 148.208328247070312, -2.21389007568348 ], [ 148.202499389648551, -2.222500085830632 ], [ 148.191390991210938, -2.211389064788818 ], [ 148.2005615234375, -2.204998970031738 ] ] ], [ [ [ 146.588470458984375, -2.206101894378605 ], [ 146.588165283203239, -2.207159042358342 ], [ 146.58648681640625, -2.206346035003662 ], [ 146.58648681640625, -2.206011056900024 ], [ 146.588470458984375, -2.206101894378605 ] ] ], [ [ [ 146.733337402343864, -2.210277080535889 ], [ 146.731674194335938, -2.212223052978516 ], [ 146.726669311523438, -2.209444999694767 ], [ 146.731948852539176, -2.207500934600773 ], [ 146.733337402343864, -2.210277080535889 ] ] ], [ [ [ 146.275833129882812, -2.208333015441895 ], [ 146.284439086914062, -2.211945056915283 ], [ 146.290283203125, -2.218055963516235 ], [ 146.270278930664062, -2.210555076599121 ], [ 146.275833129882812, -2.208333015441895 ] ] ], [ [ [ 147.234939575195426, -2.216041088104191 ], [ 147.2388916015625, -2.223056077957096 ], [ 147.224716186523438, -2.222500085830632 ], [ 147.229446411132812, -2.218055963516235 ], [ 147.234939575195426, -2.216041088104191 ] ] ], [ [ [ 147.217498779296875, -2.231667041778564 ], [ 147.214721679687614, -2.223887920379582 ], [ 147.224441528320426, -2.217777967453003 ], [ 147.217773437500114, -2.227778911590519 ], [ 147.217498779296875, -2.231667041778564 ] ] ], [ [ [ 146.980743408203125, -2.222743988037053 ], [ 146.980819702148438, -2.227406978607178 ], [ 146.98858642578125, -2.229495048522892 ], [ 146.981033325195426, -2.229703903198242 ], [ 146.978118896484375, -2.226640939712468 ], [ 146.980743408203125, -2.222743988037053 ] ] ], [ [ [ 147.798339843750114, -2.237498998641968 ], [ 147.796951293945312, -2.236944913864136 ], [ 147.794998168945312, -2.231667041778564 ], [ 147.798248291015625, -2.235630035400334 ], [ 147.798339843750114, -2.237498998641968 ] ] ], [ [ [ 147.737228393554688, -2.346667051315308 ], [ 147.704345703125114, -2.370276927947941 ], [ 147.726394653320312, -2.319998979568481 ], [ 147.736175537109489, -2.331880092620793 ], [ 147.782501220703239, -2.314445018768311 ], [ 147.787216186523438, -2.271389961242619 ], [ 147.811111450195426, -2.249166011810303 ], [ 147.801391601562614, -2.238054990768433 ], [ 147.878616333007812, -2.293055057525635 ], [ 147.869461059570312, -2.309807062149048 ], [ 147.847778320312614, -2.310278892517033 ], [ 147.858062744140739, -2.328612089157048 ], [ 147.849090576171989, -2.330564975738469 ], [ 147.83111572265625, -2.346389055251962 ], [ 147.737228393554688, -2.346667051315308 ] ] ], [ [ [ 146.574798583984489, -2.249098062515259 ], [ 146.577499389648551, -2.251110076904297 ], [ 146.578338623046875, -2.259444952011108 ], [ 146.573333740234375, -2.256944894790649 ], [ 146.574798583984489, -2.249098062515259 ] ] ], [ [ [ 146.829437255859489, -2.265554904937744 ], [ 146.831939697265739, -2.267498970031681 ], [ 146.830551147461051, -2.271389961242619 ], [ 146.824447631836051, -2.268054962158146 ], [ 146.829437255859489, -2.265554904937744 ] ] ], [ [ [ 147.557357788085938, -2.269375085830688 ], [ 147.55389404296875, -2.278609991073608 ], [ 147.544174194335938, -2.277777910232544 ], [ 147.551391601562614, -2.267498970031681 ], [ 147.557357788085938, -2.269375085830688 ] ] ], [ [ [ 146.798614501953125, -2.271111965179387 ], [ 146.799240112304688, -2.273890018463135 ], [ 146.79638671875, -2.273888111114388 ], [ 146.796112060546875, -2.27222204208374 ], [ 146.798614501953125, -2.271111965179387 ] ] ], [ [ [ 147.553039550781477, -2.280736923217773 ], [ 147.551803588867188, -2.28129506111145 ], [ 147.550750732422102, -2.280875921249333 ], [ 147.552627563476562, -2.279344081878605 ], [ 147.553039550781477, -2.280736923217773 ] ] ], [ [ [ 147.857437133789062, -2.281524896621647 ], [ 147.855422973632926, -2.282080888748112 ], [ 147.855010986328239, -2.280968904495239 ], [ 147.8568115234375, -2.280133008956852 ], [ 147.857437133789062, -2.281524896621647 ] ] ], [ [ [ 147.545761108398438, -2.281737089157104 ], [ 147.548049926757812, -2.282222986221257 ], [ 147.548049926757812, -2.282778978347665 ], [ 147.545837402343864, -2.284167051315251 ], [ 147.545761108398438, -2.281737089157104 ] ] ], [ [ [ 147.550598144531364, -2.297916889190617 ], [ 147.549804687500114, -2.298125982284489 ], [ 147.548065185546875, -2.296525955200082 ], [ 147.55035400390625, -2.297221899032593 ], [ 147.550598144531364, -2.297916889190617 ] ] ], [ [ [ 147.553604125976562, -2.301111936569214 ], [ 147.551940917968864, -2.299165964126587 ], [ 147.553054809570426, -2.297499895095825 ], [ 147.554855346679688, -2.298887968063354 ], [ 147.553604125976562, -2.301111936569214 ] ] ], [ [ [ 147.537261962890739, -2.312340974807739 ], [ 147.535598754882812, -2.30976390838623 ], [ 147.53961181640625, -2.309207916259766 ], [ 147.538772583007926, -2.311644077301025 ], [ 147.537261962890739, -2.312340974807739 ] ] ], [ [ [ 146.86083984375, -2.311944961547795 ], [ 146.863616943359375, -2.313889026641846 ], [ 146.8619384765625, -2.31583309173584 ], [ 146.859451293945312, -2.313611030578613 ], [ 146.86083984375, -2.311944961547795 ] ] ], [ [ [ 146.861801147460938, -2.336041927337646 ], [ 146.864715576171989, -2.33611011505127 ], [ 146.865280151367301, -2.337223052978516 ], [ 146.861114501953239, -2.337501049041748 ], [ 146.859939575195426, -2.333542108535767 ], [ 146.861801147460938, -2.336041927337646 ] ] ], [ [ [ 146.869445800781477, -2.339720964431763 ], [ 146.871383666992301, -2.34249901771534 ], [ 146.868331909179801, -2.347223997116032 ], [ 146.866668701171875, -2.343888998031616 ], [ 146.869445800781477, -2.339720964431763 ] ] ], [ [ [ 147.839508056640625, -2.343560934066716 ], [ 147.838638305664176, -2.343590974807739 ], [ 147.839218139648438, -2.341036081314087 ], [ 147.840072631835938, -2.341551065444946 ], [ 147.839508056640625, -2.343560934066716 ] ] ], [ [ [ 147.377426147461051, -2.372987031936646 ], [ 147.4215087890625, -2.383104085922241 ], [ 147.333190917968864, -2.407181024551392 ], [ 147.304443359375, -2.442779064178467 ], [ 147.317535400390739, -2.401335000991821 ], [ 147.288864135742188, -2.386131048202458 ], [ 147.309844970703125, -2.354249954223633 ], [ 147.333389282226562, -2.377151012420541 ], [ 147.33990478515625, -2.365575075149479 ], [ 147.360046386718864, -2.375159025192204 ], [ 147.359649658203239, -2.341298103332463 ], [ 147.378067016601562, -2.342271089553833 ], [ 147.377426147461051, -2.372987031936646 ] ] ], [ [ [ 147.467071533203239, -2.379534959793091 ], [ 147.461395263671875, -2.384824991226196 ], [ 147.430923461914062, -2.366168022155648 ], [ 147.45556640625, -2.345285892486572 ], [ 147.480224609375114, -2.351830005645752 ], [ 147.467071533203239, -2.379534959793091 ] ] ], [ [ [ 146.828887939453239, -2.364722967147827 ], [ 146.829727172851562, -2.37388896942133 ], [ 146.817779541015739, -2.378334045410156 ], [ 146.816665649414176, -2.376389980316162 ], [ 146.828887939453239, -2.364722967147827 ] ] ], [ [ [ 147.697219848632812, -2.37611198425293 ], [ 147.696670532226676, -2.373332977294865 ], [ 147.699996948242188, -2.370832920074349 ], [ 147.700836181640625, -2.373332977294865 ], [ 147.697219848632812, -2.37611198425293 ] ] ], [ [ [ 146.837295532226562, -2.377917051315251 ], [ 146.835830688476562, -2.377222061157227 ], [ 146.835830688476562, -2.37611198425293 ], [ 146.83778381347679, -2.376667976379395 ], [ 146.837295532226562, -2.377917051315251 ] ] ], [ [ [ 147.474029541015625, -2.381117105484009 ], [ 147.503387451171875, -2.404057979583683 ], [ 147.483169555664062, -2.423549890518132 ], [ 147.462661743164176, -2.391388893127385 ], [ 147.474029541015625, -2.381117105484009 ] ] ], [ [ [ 146.839172363281364, -2.381665945053101 ], [ 146.838333129882812, -2.379722118377572 ], [ 146.839447021484375, -2.378887891769409 ], [ 146.839935302734489, -2.379513978958073 ], [ 146.839172363281364, -2.381665945053101 ] ] ], [ [ [ 146.82611083984375, -2.381665945053101 ], [ 146.832504272461051, -2.385555982589722 ], [ 146.829727172851562, -2.39166688919056 ], [ 146.822494506835938, -2.387222051620483 ], [ 146.82611083984375, -2.381665945053101 ] ] ], [ [ [ 146.842498779296875, -2.388609886169434 ], [ 146.842224121093864, -2.386110067367497 ], [ 146.843826293945312, -2.385416984558049 ], [ 146.84388732910179, -2.38805699348444 ], [ 146.842498779296875, -2.388609886169434 ] ] ], [ [ [ 147.46405029296875, -2.398657083511353 ], [ 147.458999633789062, -2.402208089828434 ], [ 147.455261230468864, -2.40012001991272 ], [ 147.463363647460938, -2.396910905837956 ], [ 147.46405029296875, -2.398657083511353 ] ] ], [ [ [ 147.09027099609375, -2.43055605888361 ], [ 147.09027099609375, -2.434165954589787 ], [ 147.083892822265739, -2.432221889495736 ], [ 147.086944580078239, -2.430624008178711 ], [ 147.09027099609375, -2.43055605888361 ] ] ], [ [ [ 147.108261108398551, -2.435026884078979 ], [ 147.107315063476676, -2.434864997863713 ], [ 147.10786437988304, -2.432985067367554 ], [ 147.10870361328125, -2.43333196640009 ], [ 147.108261108398551, -2.435026884078979 ] ] ], [ [ [ 147.398330688476562, -2.452498912811279 ], [ 147.400283813476676, -2.454998970031681 ], [ 147.395278930664062, -2.456943035125676 ], [ 147.39472961425804, -2.454166889190674 ], [ 147.398330688476562, -2.452498912811279 ] ] ], [ [ [ 147.414443969726676, -2.456667900085392 ], [ 147.412216186523438, -2.456943035125676 ], [ 147.413055419921989, -2.454444885253906 ], [ 147.413894653320312, -2.455276966094857 ], [ 147.414443969726676, -2.456667900085392 ] ] ], [ [ [ 147.307785034179801, -2.45638990402216 ], [ 147.310272216796989, -2.458333969116154 ], [ 147.308609008789062, -2.46083402633667 ], [ 147.305557250976562, -2.458889961242619 ], [ 147.307785034179801, -2.45638990402216 ] ] ], [ [ [ 147.3397216796875, -2.498043060302734 ], [ 147.337493896484375, -2.494165897369385 ], [ 147.341384887695426, -2.492222070693913 ], [ 147.3427734375, -2.49472188949585 ], [ 147.3397216796875, -2.498043060302734 ] ] ], [ [ [ 147.331558227539062, -2.508435964584351 ], [ 147.327270507812614, -2.505791902542001 ], [ 147.333084106445312, -2.501823902130127 ], [ 147.334472656250114, -2.505165100097656 ], [ 147.331558227539062, -2.508435964584351 ] ] ], [ [ [ 147.267547607421989, -2.51173210144043 ], [ 147.277511596679688, -2.542484045028687 ], [ 147.302291870117301, -2.54192590713501 ], [ 147.286239624023551, -2.576314926147404 ], [ 147.262969970703239, -2.571304082870483 ], [ 147.265335083007812, -2.551964998245239 ], [ 147.23736572265625, -2.53651309013361 ], [ 147.267547607421989, -2.51173210144043 ] ] ], [ [ [ 147.305252075195312, -2.535933971404916 ], [ 147.303375244140739, -2.535865068435612 ], [ 147.306976318359375, -2.532453060150033 ], [ 147.307327270507812, -2.534679889678955 ], [ 147.305252075195312, -2.535933971404916 ] ] ], [ [ [ 147.295379638671989, -2.536148071289062 ], [ 147.295440673828125, -2.538444995880127 ], [ 147.29302978515625, -2.53587007522583 ], [ 147.29510498046875, -2.535660028457642 ], [ 147.295379638671989, -2.536148071289062 ] ] ], [ [ [ 147.347671508789176, -2.730638027191162 ], [ 147.349075317382812, -2.730671882629395 ], [ 147.349334716797102, -2.731477022171021 ], [ 147.3465576171875, -2.730916023254395 ], [ 147.347671508789176, -2.730638027191162 ] ] ], [ [ [ 146.236114501953125, -2.840833902358952 ], [ 146.238128662109489, -2.841665983200073 ], [ 146.235137939453239, -2.842916965484619 ], [ 146.234451293945312, -2.841387987136841 ], [ 146.236114501953125, -2.840833902358952 ] ] ], [ [ [ 146.23388671875, -2.848889112472477 ], [ 146.232498168945312, -2.851388931274414 ], [ 146.228057861328239, -2.84833288192749 ], [ 146.233062744140625, -2.846388101577759 ], [ 146.23388671875, -2.848889112472477 ] ] ], [ [ [ 146.457504272461051, -2.867500066757202 ], [ 146.45916748046875, -2.868334054946899 ], [ 146.466949462890625, -2.87388801574707 ], [ 146.456939697265739, -2.871665954589844 ], [ 146.457504272461051, -2.867500066757202 ] ] ], [ [ [ 147.0574951171875, -2.903888940811157 ], [ 147.056671142578125, -2.893333911895752 ], [ 147.06056213378929, -2.885833024978638 ], [ 147.062225341796875, -2.891665935516357 ], [ 147.0574951171875, -2.903888940811157 ] ] ], [ [ [ 146.402770996093864, -2.894999980926514 ], [ 146.405273437500114, -2.897222042083683 ], [ 146.403335571289176, -2.899722099304142 ], [ 146.400558471679688, -2.896666049957219 ], [ 146.402770996093864, -2.894999980926514 ] ] ], [ [ [ 146.357070922851562, -2.932179927825928 ], [ 146.359359741210938, -2.924243927001953 ], [ 146.362258911132812, -2.921946048736515 ], [ 146.357910156250114, -2.929743051528931 ], [ 146.357070922851562, -2.932179927825928 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-MBA", "NAME_1": "Milne Bay" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 153.51690673828125, -11.615481376647949 ], [ 153.508621215820312, -11.619959831237793 ], [ 153.506759643555029, -11.619292259216309 ], [ 153.515090942382926, -11.608474731445312 ], [ 153.51690673828125, -11.615481376647949 ] ] ], [ [ [ 153.571807861328125, -11.479016304016056 ], [ 153.57012939453125, -11.478189468383732 ], [ 153.570190429687727, -11.476605415344238 ], [ 153.572433471679915, -11.477639198303223 ], [ 153.571807861328125, -11.479016304016056 ] ] ], [ [ [ 153.165420532226676, -11.464864730834847 ], [ 153.162246704101562, -11.462795257568303 ], [ 153.161849975586051, -11.46163272857666 ], [ 153.168380737304801, -11.46356296539301 ], [ 153.165420532226676, -11.464864730834847 ] ] ], [ [ [ 154.39778137207054, -11.450555801391488 ], [ 154.39472961425804, -11.448612213134766 ], [ 154.397216796875227, -11.445278167724609 ], [ 154.399719238281364, -11.448056221008187 ], [ 154.39778137207054, -11.450555801391488 ] ] ], [ [ [ 153.230438232421875, -11.454758644104004 ], [ 153.228424072265739, -11.450098037719727 ], [ 153.238754272461051, -11.444993019103947 ], [ 153.238449096679688, -11.452369689941406 ], [ 153.230438232421875, -11.454758644104004 ] ] ], [ [ [ 154.285232543945426, -11.390815734863281 ], [ 154.283767700195312, -11.389302253723088 ], [ 154.284881591797102, -11.386754035949707 ], [ 154.286834716796989, -11.387578964233342 ], [ 154.285232543945426, -11.390815734863281 ] ] ], [ [ [ 153.336303710937727, -11.359085083007812 ], [ 153.3353271484375, -11.357193946838379 ], [ 153.336578369140625, -11.35493278503418 ], [ 153.339797973633267, -11.357372283935547 ], [ 153.336303710937727, -11.359085083007812 ] ] ], [ [ [ 153.203887939453125, -11.323422431945801 ], [ 153.263900756836051, -11.366751670837289 ], [ 153.289794921875227, -11.363666534423828 ], [ 153.496109008789062, -11.464443206787109 ], [ 153.692962646484375, -11.513125419616642 ], [ 153.708908081054801, -11.544005393981877 ], [ 153.746673583984489, -11.561665534973145 ], [ 153.775390625000114, -11.613405227661133 ], [ 153.763671875000114, -11.626899719238281 ], [ 153.724716186523551, -11.617778778076115 ], [ 153.698043823242301, -11.632749557495117 ], [ 153.673202514648892, -11.620876312255859 ], [ 153.670242309570312, -11.640362739562988 ], [ 153.634719848632926, -11.61805534362793 ], [ 153.586669921875114, -11.617263793945312 ], [ 153.550933837890852, -11.655380249023438 ], [ 153.526382446289176, -11.635556221008301 ], [ 153.556198120117188, -11.633316040039006 ], [ 153.555587768555029, -11.601767539978027 ], [ 153.532028198242415, -11.617211341857853 ], [ 153.505264282226562, -11.586693763732853 ], [ 153.450592041015852, -11.58806324005127 ], [ 153.471343994140852, -11.577095985412598 ], [ 153.456390380859489, -11.548890113830566 ], [ 153.439620971680029, -11.566054344177189 ], [ 153.411529541015739, -11.542951583862248 ], [ 153.415969848633154, -11.569561004638672 ], [ 153.358078002929915, -11.558357238769474 ], [ 153.34780883789108, -11.52137565612793 ], [ 153.359680175781364, -11.493135452270508 ], [ 153.306549072265852, -11.487515449523869 ], [ 153.268035888671989, -11.50407695770258 ], [ 153.300155639648438, -11.473365783691349 ], [ 153.263702392578239, -11.461607933044377 ], [ 153.245056152343864, -11.42835807800293 ], [ 153.224411010742301, -11.44100379943842 ], [ 153.205154418945426, -11.413942337036133 ], [ 153.214828491211051, -11.400161743164062 ], [ 153.185714721679688, -11.392017364501896 ], [ 153.1756591796875, -11.34536075592041 ], [ 153.203887939453125, -11.323422431945801 ] ] ], [ [ [ 153.116195678711165, -11.324403762817383 ], [ 153.114166259765739, -11.322786331176758 ], [ 153.116210937500114, -11.318444252014103 ], [ 153.119674682617415, -11.322150230407715 ], [ 153.116195678711165, -11.324403762817383 ] ] ], [ [ [ 153.406387329101562, -11.312432289123478 ], [ 153.441360473632812, -11.314120292663574 ], [ 153.480895996093864, -11.344844818115121 ], [ 153.416152954101676, -11.332935333251953 ], [ 153.406387329101562, -11.312432289123478 ] ] ], [ [ [ 152.30140686035179, -11.305086135864201 ], [ 152.299346923828239, -11.302654266357365 ], [ 152.30230712890625, -11.301813125610352 ], [ 152.303207397461051, -11.303462982177734 ], [ 152.30140686035179, -11.305086135864201 ] ] ], [ [ [ 154.031112670898438, -11.301667213439828 ], [ 154.027496337890625, -11.308055877685547 ], [ 154.008331298828239, -11.303333282470646 ], [ 154.011672973632812, -11.301944732666016 ], [ 154.031112670898438, -11.301667213439828 ] ] ], [ [ [ 153.257446289062614, -11.293543815612793 ], [ 153.244827270507926, -11.321766853332463 ], [ 153.233612060546989, -11.316219329833928 ], [ 153.247772216796875, -11.307626724243164 ], [ 153.242584228515739, -11.292795181274357 ], [ 153.257446289062614, -11.293543815612793 ] ] ], [ [ [ 154.211395263672102, -11.293332099914494 ], [ 154.262496948242188, -11.327501296997013 ], [ 154.28334045410179, -11.372221946716309 ], [ 154.285003662109375, -11.37944507598877 ], [ 154.283050537109716, -11.382223129272461 ], [ 154.284164428711051, -11.393888473510685 ], [ 154.250839233398438, -11.418334007263127 ], [ 154.149673461914176, -11.388504981994629 ], [ 154.150558471679915, -11.404444694519043 ], [ 154.129714965820312, -11.415555953979379 ], [ 154.112228393554801, -11.387778282165527 ], [ 154.103881835937955, -11.419721603393498 ], [ 154.050552368164062, -11.420277595519963 ], [ 154.016113281250227, -11.40916728973383 ], [ 153.996948242187841, -11.379166603088322 ], [ 153.9727783203125, -11.377498626708984 ], [ 153.979171752929688, -11.361944198608342 ], [ 154.009445190429915, -11.361390113830566 ], [ 154.011947631836392, -11.3397216796875 ], [ 154.042343139648779, -11.364945411682129 ], [ 154.047500610351562, -11.353055000305119 ], [ 154.122390747070426, -11.348893165588379 ], [ 154.06361389160179, -11.325277328491211 ], [ 154.08416748046875, -11.319723129272461 ], [ 154.057220458984716, -11.296667098999023 ], [ 154.114715576171989, -11.295832633972168 ], [ 154.123657226562727, -11.307975769042969 ], [ 154.135833740234375, -11.297779083251953 ], [ 154.128936767578466, -11.32658672332758 ], [ 154.150558471679915, -11.298054695129395 ], [ 154.211395263672102, -11.293332099914494 ] ] ], [ [ [ 152.371719360351562, -11.281917572021484 ], [ 152.370254516601676, -11.278404235839844 ], [ 152.378204345703125, -11.275468826293945 ], [ 152.3758544921875, -11.27993106842041 ], [ 152.371719360351562, -11.281917572021484 ] ] ], [ [ [ 152.355468750000114, -11.286123275756779 ], [ 152.353561401367301, -11.2815647125243 ], [ 152.358978271484602, -11.274042129516602 ], [ 152.360488891601562, -11.282597541809082 ], [ 152.355468750000114, -11.286123275756779 ] ] ], [ [ [ 152.38954162597679, -11.276680946349984 ], [ 152.381576538085938, -11.277310371398869 ], [ 152.381210327148551, -11.276213645935002 ], [ 152.392074584961051, -11.273681640624943 ], [ 152.38954162597679, -11.276680946349984 ] ] ], [ [ [ 152.139785766601562, -11.262415885925236 ], [ 152.134552001953239, -11.253896713256779 ], [ 152.137832641601676, -11.247124671936035 ], [ 152.140228271484489, -11.252057075500431 ], [ 152.139785766601562, -11.262415885925236 ] ] ], [ [ [ 153.100219726562727, -11.246892929077148 ], [ 153.105682373046875, -11.263183593749943 ], [ 153.09754943847679, -11.269082069396973 ], [ 153.0902099609375, -11.247257232665959 ], [ 153.100219726562727, -11.246892929077148 ] ] ], [ [ [ 153.100982666015852, -11.242345809936467 ], [ 153.10041809082054, -11.242345809936467 ], [ 153.098602294921875, -11.24041843414301 ], [ 153.101196289062614, -11.240107536315804 ], [ 153.100982666015852, -11.242345809936467 ] ] ], [ [ [ 152.176910400390625, -11.244659423828125 ], [ 152.174224853515739, -11.240923881530762 ], [ 152.174667358398779, -11.238726615905762 ], [ 152.17718505859375, -11.240617752075138 ], [ 152.176910400390625, -11.244659423828125 ] ] ], [ [ [ 153.107238769531477, -11.233877182006779 ], [ 153.105636596679801, -11.233395576477051 ], [ 153.105422973632926, -11.23236083984375 ], [ 153.107666015625227, -11.231947898864746 ], [ 153.107238769531477, -11.233877182006779 ] ] ], [ [ [ 153.094360351562614, -11.2127809524535 ], [ 153.089065551757812, -11.212388992309513 ], [ 153.09278869628929, -11.207466125488281 ], [ 153.095443725586165, -11.209506034851074 ], [ 153.094360351562614, -11.2127809524535 ] ] ], [ [ [ 152.027999877929688, -11.194232940673771 ], [ 152.027236938476562, -11.187260627746582 ], [ 152.030792236328239, -11.184272766113281 ], [ 152.033020019531477, -11.188847541808968 ], [ 152.027999877929688, -11.194232940673771 ] ] ], [ [ [ 152.017929077148438, -11.185661315917912 ], [ 152.011978149414062, -11.186302185058594 ], [ 152.011901855469205, -11.185118675231934 ], [ 152.01454162597679, -11.182561874389592 ], [ 152.017929077148438, -11.185661315917912 ] ] ], [ [ [ 151.997650146484489, -11.184823036193791 ], [ 151.99542236328125, -11.184426307678166 ], [ 151.99282836914108, -11.181384086608887 ], [ 151.99720764160179, -11.182584762573242 ], [ 151.997650146484489, -11.184823036193791 ] ] ], [ [ [ 153.097930908203352, -11.183327674865723 ], [ 153.115371704101904, -11.180298805236816 ], [ 153.241867065429688, -11.262625694274902 ], [ 153.188095092773438, -11.29368782043457 ], [ 153.16729736328125, -11.275593757629338 ], [ 153.185821533203352, -11.274263381958008 ], [ 153.167587280273438, -11.25283241271967 ], [ 153.13356018066429, -11.24848556518549 ], [ 153.116790771484489, -11.224056243896484 ], [ 153.103637695312727, -11.224120140075684 ], [ 153.106231689453125, -11.227713584899902 ], [ 153.10052490234375, -11.238697052001839 ], [ 153.102203369140739, -11.20953464508051 ], [ 153.0762939453125, -11.196754455566406 ], [ 153.097930908203352, -11.183327674865723 ] ] ], [ [ [ 151.343551635742415, -11.178819656372013 ], [ 151.34236145019554, -11.178334236144963 ], [ 151.344665527343864, -11.177374839782715 ], [ 151.3446044921875, -11.177854537963867 ], [ 151.343551635742415, -11.178819656372013 ] ] ], [ [ [ 153.08795166015625, -11.179651260375977 ], [ 153.086456298828239, -11.179018020629826 ], [ 153.084930419921989, -11.176289558410645 ], [ 153.089874267578352, -11.17839336395258 ], [ 153.08795166015625, -11.179651260375977 ] ] ], [ [ [ 151.95753479003929, -11.176881790161133 ], [ 151.95648193359375, -11.175960540771484 ], [ 151.957153320312727, -11.174347877502328 ], [ 151.958496093750455, -11.175285339355469 ], [ 151.95753479003929, -11.176881790161133 ] ] ], [ [ [ 151.816665649414062, -11.175833702087402 ], [ 151.816116333007812, -11.174167633056641 ], [ 151.817504882812614, -11.174167633056641 ], [ 151.818328857421875, -11.175000190734806 ], [ 151.816665649414062, -11.175833702087402 ] ] ], [ [ [ 152.950378417968864, -11.174949645996094 ], [ 152.952056884765625, -11.176125526428166 ], [ 152.949295043945312, -11.17693901062006 ], [ 152.949035644531364, -11.173984527587891 ], [ 152.950378417968864, -11.174949645996094 ] ] ], [ [ [ 151.974136352539517, -11.174698829650822 ], [ 151.97271728515625, -11.174429893493652 ], [ 151.97146606445358, -11.173337936401367 ], [ 151.974609375, -11.172109603881836 ], [ 151.974136352539517, -11.174698829650822 ] ] ], [ [ [ 152.970336914062727, -11.170845031738281 ], [ 152.969543457031364, -11.17523193359375 ], [ 152.963546752930029, -11.171751976013184 ], [ 152.966979980469091, -11.169511795043832 ], [ 152.970336914062727, -11.170845031738281 ] ] ], [ [ [ 152.945755004882926, -11.166730880737248 ], [ 152.950180053711051, -11.171998023986816 ], [ 152.930938720703125, -11.177534103393555 ], [ 152.937667846679915, -11.166921615600529 ], [ 152.945755004882926, -11.166730880737248 ] ] ], [ [ [ 152.918930053710938, -11.159298896789551 ], [ 152.927810668945767, -11.16389274597168 ], [ 152.923385620117301, -11.183581352233887 ], [ 152.902587890625114, -11.162406921386605 ], [ 152.918930053710938, -11.159298896789551 ] ] ], [ [ [ 152.89111328125, -11.159723281860352 ], [ 152.889617919921989, -11.158920288085938 ], [ 152.89166259765625, -11.157221794128361 ], [ 152.892227172851562, -11.158887863159123 ], [ 152.89111328125, -11.159723281860352 ] ] ], [ [ [ 152.901535034179801, -11.15955638885498 ], [ 152.898986816406477, -11.154461860656738 ], [ 152.902587890625114, -11.149806022644043 ], [ 152.903747558593977, -11.152422904968262 ], [ 152.901535034179801, -11.15955638885498 ] ] ], [ [ [ 153.020553588867301, -11.148612022399846 ], [ 153.044998168945312, -11.152777671813965 ], [ 153.023895263671989, -11.19194507598877 ], [ 153.03472900390625, -11.208332061767578 ], [ 152.969161987304801, -11.186944961547795 ], [ 152.99249267578125, -11.173055648803711 ], [ 152.995559692382926, -11.15110969543457 ], [ 153.020553588867301, -11.148612022399846 ] ] ], [ [ [ 152.790191650390625, -11.155496597290039 ], [ 152.773788452148438, -11.161986351013127 ], [ 152.768356323242642, -11.153643608093262 ], [ 152.787643432617188, -11.148552894592285 ], [ 152.790191650390625, -11.155496597290039 ] ] ], [ [ [ 152.692092895507812, -11.151041030883789 ], [ 152.691024780273438, -11.14951229095459 ], [ 152.69195556640625, -11.14723968505848 ], [ 152.692703247070654, -11.149612426757756 ], [ 152.692092895507812, -11.151041030883789 ] ] ], [ [ [ 152.82612609863304, -11.157267570495605 ], [ 152.820877075195654, -11.155904769897461 ], [ 152.83099365234375, -11.147067070007324 ], [ 152.831039428710938, -11.154582977294808 ], [ 152.82612609863304, -11.157267570495605 ] ] ], [ [ [ 153.078048706054915, -11.144998550414925 ], [ 153.090560913086051, -11.166666984558049 ], [ 153.051391601562727, -11.16833305358881 ], [ 153.051666259765966, -11.1522216796875 ], [ 153.078048706054915, -11.144998550414925 ] ] ], [ [ [ 151.256576538086165, -11.155081748962402 ], [ 151.253387451171989, -11.151568412780705 ], [ 151.256759643554915, -11.144887924194279 ], [ 151.259201049804915, -11.15173435211176 ], [ 151.256576538086165, -11.155081748962402 ] ] ], [ [ [ 152.869461059570426, -11.151424407958928 ], [ 152.875274658203125, -11.162152290344238 ], [ 152.868347167968864, -11.166685104370117 ], [ 152.860351562500114, -11.15449047088623 ], [ 152.869461059570426, -11.151424407958928 ] ] ], [ [ [ 152.789489746093864, -11.148160934448242 ], [ 152.78887939453125, -11.147862434387207 ], [ 152.791748046875, -11.141939163207951 ], [ 152.792999267578239, -11.143681526184082 ], [ 152.789489746093864, -11.148160934448242 ] ] ], [ [ [ 152.762908935546875, -11.142567634582463 ], [ 152.761749267578466, -11.141426086425668 ], [ 152.764968872070426, -11.140873908996468 ], [ 152.764602661132926, -11.141590118408146 ], [ 152.762908935546875, -11.142567634582463 ] ] ], [ [ [ 152.814056396484375, -11.145668983459473 ], [ 152.812744140625227, -11.145694732665959 ], [ 152.813140869140739, -11.139934539794922 ], [ 152.81549072265625, -11.144372940063477 ], [ 152.814056396484375, -11.145668983459473 ] ] ], [ [ [ 152.767913818359602, -11.140028953552189 ], [ 152.766204833984602, -11.138861656188965 ], [ 152.7681884765625, -11.13636589050293 ], [ 152.769638061523665, -11.138136863708439 ], [ 152.767913818359602, -11.140028953552189 ] ] ], [ [ [ 152.796279907226562, -11.143986701965275 ], [ 152.800338745117415, -11.135224342346135 ], [ 152.802291870117415, -11.134695053100529 ], [ 152.80134582519554, -11.142088890075684 ], [ 152.796279907226562, -11.143986701965275 ] ] ], [ [ [ 152.811203002929688, -11.132175445556527 ], [ 152.814239501953125, -11.136634826660099 ], [ 152.807434082031477, -11.137908935546875 ], [ 152.808685302734375, -11.132612228393555 ], [ 152.811203002929688, -11.132175445556527 ] ] ], [ [ [ 152.714096069335938, -11.138748168945256 ], [ 152.712707519531364, -11.137016296386662 ], [ 152.720779418945312, -11.131008148193303 ], [ 152.721893310546875, -11.134129524230957 ], [ 152.714096069335938, -11.138748168945256 ] ] ], [ [ [ 152.333160400390739, -11.132728576660099 ], [ 152.349349975586051, -11.135975837707463 ], [ 152.335144042968977, -11.139225959777775 ], [ 152.316970825195312, -11.127407073974496 ], [ 152.333160400390739, -11.132728576660099 ] ] ], [ [ [ 152.659866333007926, -11.140691757202092 ], [ 152.65289306640625, -11.134061813354492 ], [ 152.660171508789176, -11.122602462768555 ], [ 152.66421508789108, -11.128999710083008 ], [ 152.659866333007926, -11.140691757202092 ] ] ], [ [ [ 153.08534240722679, -11.122133255004883 ], [ 153.089538574218977, -11.123579978942871 ], [ 153.09010314941429, -11.124337196350098 ], [ 153.084014892578352, -11.121856689453068 ], [ 153.08534240722679, -11.122133255004883 ] ] ], [ [ [ 152.689636230468864, -11.11841964721674 ], [ 152.710754394531705, -11.13349437713623 ], [ 152.678756713867301, -11.150411605834904 ], [ 152.66761779785179, -11.137790679931584 ], [ 152.689636230468864, -11.11841964721674 ] ] ], [ [ [ 152.760742187500114, -11.126341819763184 ], [ 152.758163452148438, -11.12073802947998 ], [ 152.76374816894554, -11.117196083068791 ], [ 152.764099121093977, -11.117586135864258 ], [ 152.760742187500114, -11.126341819763184 ] ] ], [ [ [ 152.306671142578125, -11.123619079589844 ], [ 152.299209594726676, -11.123128890991154 ], [ 152.300460815429915, -11.117118835449219 ], [ 152.306594848632926, -11.120114326477051 ], [ 152.306671142578125, -11.123619079589844 ] ] ], [ [ [ 152.73699951171875, -11.121784210205078 ], [ 152.740234375, -11.132485389709359 ], [ 152.726409912109489, -11.137751579284611 ], [ 152.728164672851676, -11.114706993103027 ], [ 152.73699951171875, -11.121784210205078 ] ] ], [ [ [ 153.066970825195312, -11.108921051025391 ], [ 153.103271484375227, -11.120329856872559 ], [ 153.123992919921875, -11.14162635803217 ], [ 153.101135253906477, -11.123450279235783 ], [ 153.066970825195312, -11.108921051025391 ] ] ], [ [ [ 151.551818847656477, -11.108975410461426 ], [ 151.549743652343977, -11.108040809631291 ], [ 151.54879760742233, -11.104813575744572 ], [ 151.549987792968864, -11.104997634887695 ], [ 151.551818847656477, -11.108975410461426 ] ] ], [ [ [ 152.635955810547102, -11.111003875732308 ], [ 152.634902954101676, -11.10976409912098 ], [ 152.6400146484375, -11.104523658752385 ], [ 152.639053344726676, -11.108296394348145 ], [ 152.635955810547102, -11.111003875732308 ] ] ], [ [ [ 153.061203002930029, -11.104800224304199 ], [ 153.064208984375, -11.105487823486328 ], [ 153.0650634765625, -11.106864929199162 ], [ 153.058410644531477, -11.104867935180664 ], [ 153.061203002930029, -11.104800224304199 ] ] ], [ [ [ 152.497772216797216, -11.103335380554142 ], [ 152.505828857421875, -11.109167098999023 ], [ 152.507171630859375, -11.111943244934025 ], [ 152.493896484375114, -11.108888626098633 ], [ 152.497772216797216, -11.103335380554142 ] ] ], [ [ [ 152.607498168945312, -11.09666633605957 ], [ 152.609588623046875, -11.098213195800724 ], [ 152.606353759765625, -11.104190826416016 ], [ 152.603729248047102, -11.101359367370605 ], [ 152.607498168945312, -11.09666633605957 ] ] ], [ [ [ 151.13240051269554, -11.101332664489689 ], [ 151.12953186035179, -11.099334716796818 ], [ 151.133880615234375, -11.095384597778263 ], [ 151.135131835937614, -11.098570823669377 ], [ 151.13240051269554, -11.101332664489689 ] ] ], [ [ [ 151.148330688476562, -11.091389656066895 ], [ 151.146942138671875, -11.090555191040039 ], [ 151.147506713867301, -11.088889122009277 ], [ 151.148895263672216, -11.089999198913461 ], [ 151.148330688476562, -11.091389656066895 ] ] ], [ [ [ 152.313766479492188, -11.081418037414551 ], [ 152.313964843750227, -11.083211898803711 ], [ 152.311386108398438, -11.083279609680176 ], [ 152.311584472656364, -11.082521438598576 ], [ 152.313766479492188, -11.081418037414551 ] ] ], [ [ [ 152.542892456054915, -11.079569816589299 ], [ 152.53791809082054, -11.085189819335938 ], [ 152.532516479492188, -11.080642700195256 ], [ 152.533798217773551, -11.078838348388615 ], [ 152.542892456054915, -11.079569816589299 ] ] ], [ [ [ 152.355560302734489, -11.079002380371094 ], [ 152.358337402343864, -11.080833435058537 ], [ 152.352264404296875, -11.077898979187012 ], [ 152.353744506836051, -11.078106880187931 ], [ 152.355560302734489, -11.079002380371094 ] ] ], [ [ [ 152.562973022461051, -11.071619987487793 ], [ 152.58648681640625, -11.076393127441406 ], [ 152.59393310546875, -11.096032142639103 ], [ 152.563446044922102, -11.100720405578556 ], [ 152.547760009765625, -11.075252532958984 ], [ 152.562973022461051, -11.071619987487793 ] ] ], [ [ [ 151.541305541992415, -11.073799133300724 ], [ 151.540832519531364, -11.064998626708928 ], [ 151.53901672363304, -11.061341285705453 ], [ 151.542266845703239, -11.065647125244141 ], [ 151.541305541992415, -11.073799133300724 ] ] ], [ [ [ 152.53326416015625, -11.061375617980957 ], [ 152.538604736328125, -11.068333625793457 ], [ 152.533920288086165, -11.071903228759652 ], [ 152.528640747070426, -11.062574386596623 ], [ 152.53326416015625, -11.061375617980957 ] ] ], [ [ [ 152.5872802734375, -11.067964553833008 ], [ 152.58332824707054, -11.060555458068791 ], [ 152.584167480468864, -11.059445381164551 ], [ 152.586685180664062, -11.061875343322697 ], [ 152.5872802734375, -11.067964553833008 ] ] ], [ [ [ 151.532318115234375, -11.064202308654671 ], [ 151.530593872070312, -11.062620162963867 ], [ 151.531188964843977, -11.058502197265625 ], [ 151.534332275390625, -11.062815666198617 ], [ 151.532318115234375, -11.064202308654671 ] ] ], [ [ [ 152.51666259765625, -11.053056716918888 ], [ 152.514450073242301, -11.052779197692814 ], [ 152.515594482421989, -11.050244331359806 ], [ 152.517410278320426, -11.051898956298828 ], [ 152.51666259765625, -11.053056716918888 ] ] ], [ [ [ 152.49664306640625, -11.047778129577637 ], [ 152.499038696289517, -11.048514366149789 ], [ 152.4998779296875, -11.050462722778263 ], [ 152.495086669921989, -11.049216270446777 ], [ 152.49664306640625, -11.047778129577637 ] ] ], [ [ [ 152.452606201171875, -11.050754547119141 ], [ 152.447402954101676, -11.057464599609318 ], [ 152.434341430664176, -11.051135063171387 ], [ 152.459243774414404, -11.043445587158146 ], [ 152.452606201171875, -11.050754547119141 ] ] ], [ [ [ 152.403060913086051, -11.039164543151742 ], [ 152.405838012695654, -11.040834426879826 ], [ 152.401382446289517, -11.044721603393555 ], [ 152.401107788085938, -11.040555953979435 ], [ 152.403060913086051, -11.039164543151742 ] ] ], [ [ [ 152.490707397461051, -11.042763710021973 ], [ 152.491943359375114, -11.049145698547363 ], [ 152.47975158691429, -11.040452957153263 ], [ 152.481719970703239, -11.03866004943842 ], [ 152.490707397461051, -11.042763710021973 ] ] ], [ [ [ 152.559494018554915, -11.037996292114144 ], [ 152.560760498046875, -11.038265228271484 ], [ 152.560836791992642, -11.039443969726506 ], [ 152.558334350586165, -11.039509773254395 ], [ 152.559494018554915, -11.037996292114144 ] ] ], [ [ [ 152.383895874023551, -11.036667823791504 ], [ 152.384719848632812, -11.039164543151742 ], [ 152.381942749023551, -11.041943550109806 ], [ 152.381103515625227, -11.039164543151742 ], [ 152.383895874023551, -11.036667823791504 ] ] ], [ [ [ 152.516326904296875, -11.048215866088867 ], [ 152.508895874023665, -11.038612365722599 ], [ 152.511077880859375, -11.035482406616154 ], [ 152.517868041992415, -11.044021606445256 ], [ 152.516326904296875, -11.048215866088867 ] ] ], [ [ [ 152.545562744140852, -11.035277366638184 ], [ 152.544723510742188, -11.033611297607422 ], [ 152.546386718750114, -11.031389236450138 ], [ 152.546951293945426, -11.033332824707031 ], [ 152.545562744140852, -11.035277366638184 ] ] ], [ [ [ 151.319168090820426, -11.029998779296818 ], [ 151.316116333007926, -11.028332710266056 ], [ 151.317504882812841, -11.02500057220459 ], [ 151.32000732421875, -11.026389122009164 ], [ 151.319168090820426, -11.029998779296818 ] ] ], [ [ [ 152.79086303710983, -10.97815990447998 ], [ 152.789535522461051, -10.977084159850961 ], [ 152.79176330566429, -10.975627899169922 ], [ 152.79241943359375, -10.977051734924316 ], [ 152.79086303710983, -10.97815990447998 ] ] ], [ [ [ 151.083328247070312, -10.965556144714355 ], [ 151.082077026367301, -10.96507453918457 ], [ 151.081115722656705, -10.963890075683594 ], [ 151.083343505859602, -10.964160919189453 ], [ 151.083328247070312, -10.965556144714355 ] ] ], [ [ [ 152.700271606445426, -10.963334083557129 ], [ 152.701385498047102, -10.964165687561035 ], [ 152.70083618164108, -10.965277671813965 ], [ 152.698883056640739, -10.964165687561035 ], [ 152.700271606445426, -10.963334083557129 ] ] ], [ [ [ 152.6219482421875, -10.956942558288517 ], [ 152.624725341797102, -10.958889961242619 ], [ 152.621383666992188, -10.961943626403809 ], [ 152.6199951171875, -10.959721565246582 ], [ 152.6219482421875, -10.956942558288517 ] ] ], [ [ [ 152.716796875000227, -10.958929061889592 ], [ 152.716033935547102, -10.959550857543945 ], [ 152.715560913086051, -10.956667900085392 ], [ 152.71630859375, -10.957356452941838 ], [ 152.716796875000227, -10.958929061889592 ] ] ], [ [ [ 151.07557678222679, -10.954492568969727 ], [ 151.08753967285179, -10.957182884216309 ], [ 151.044998168945312, -10.961943626403809 ], [ 151.049438476562727, -10.958612442016602 ], [ 151.07557678222679, -10.954492568969727 ] ] ], [ [ [ 151.03582763671875, -10.952220916748047 ], [ 151.036666870117415, -10.954167366027832 ], [ 151.033615112304915, -10.954723358154297 ], [ 151.03285217285179, -10.952781677246037 ], [ 151.03582763671875, -10.952220916748047 ] ] ], [ [ [ 152.743087768554688, -10.954324722289982 ], [ 152.738143920898438, -10.956874847412053 ], [ 152.735687255859602, -10.955534934997559 ], [ 152.740524291992301, -10.950879096984806 ], [ 152.743087768554688, -10.954324722289982 ] ] ], [ [ [ 152.697494506835938, -10.954167366027832 ], [ 152.695831298828239, -10.953055381774902 ], [ 152.696945190429688, -10.950554847717285 ], [ 152.698333740234602, -10.951389312744141 ], [ 152.697494506835938, -10.954167366027832 ] ] ], [ [ [ 152.717987060547102, -10.946331977844238 ], [ 152.717010498046989, -10.944193840026855 ], [ 152.717926025390625, -10.943296432495004 ], [ 152.718856811523438, -10.94423866271967 ], [ 152.717987060547102, -10.946331977844238 ] ] ], [ [ [ 152.712783813476562, -10.943610191345101 ], [ 152.713333129882812, -10.945000648498535 ], [ 152.710052490234489, -10.9434814453125 ], [ 152.711380004882926, -10.942931175231877 ], [ 152.712783813476562, -10.943610191345101 ] ] ], [ [ [ 152.709197998047102, -10.942475318908635 ], [ 152.705490112304688, -10.946040153503418 ], [ 152.704330444336051, -10.945281028747559 ], [ 152.706039428711051, -10.941681861877441 ], [ 152.709197998047102, -10.942475318908635 ] ] ], [ [ [ 151.015670776367415, -10.942960739135742 ], [ 151.014480590820312, -10.941371917724609 ], [ 151.015258789062727, -10.93964672088623 ], [ 151.016372680664062, -10.942338943481388 ], [ 151.015670776367415, -10.942960739135742 ] ] ], [ [ [ 152.667495727539176, -10.924166679382324 ], [ 152.666381835937841, -10.922779083251953 ], [ 152.66888427734375, -10.921944618225098 ], [ 152.668655395507926, -10.923374176025391 ], [ 152.667495727539176, -10.924166679382324 ] ] ], [ [ [ 152.596817016601562, -10.922582626342717 ], [ 152.596038818359375, -10.922500610351562 ], [ 152.594772338867415, -10.920470237731934 ], [ 152.597229003906364, -10.921667098999023 ], [ 152.596817016601562, -10.922582626342717 ] ] ], [ [ [ 152.679992675781477, -10.91805362701416 ], [ 152.684234619140852, -10.919941902160645 ], [ 152.684585571289176, -10.922218322753906 ], [ 152.678894042968977, -10.920276641845703 ], [ 152.679992675781477, -10.91805362701416 ] ] ], [ [ [ 150.78890991210983, -10.922151565551758 ], [ 150.785324096679801, -10.92043399810791 ], [ 150.785171508789062, -10.917672157287598 ], [ 150.788146972656705, -10.91679859161377 ], [ 150.78890991210983, -10.922151565551758 ] ] ], [ [ [ 150.783065795898779, -10.912610054016113 ], [ 150.781463623047102, -10.9119615554809 ], [ 150.781173706054688, -10.910168647766056 ], [ 150.782623291015739, -10.910004615783691 ], [ 150.783065795898779, -10.912610054016113 ] ] ], [ [ [ 150.75794982910179, -10.905501365661621 ], [ 150.75666809082054, -10.904422760009709 ], [ 150.75811767578125, -10.902338027954102 ], [ 150.760162353515739, -10.904017448425236 ], [ 150.75794982910179, -10.905501365661621 ] ] ], [ [ [ 150.74639892578125, -10.90346622467041 ], [ 150.742660522460938, -10.897544860839787 ], [ 150.745666503906364, -10.895910263061523 ], [ 150.74932861328125, -10.899555206298771 ], [ 150.74639892578125, -10.90346622467041 ] ] ], [ [ [ 153.109191894531477, -10.893561363220215 ], [ 153.106597900390966, -10.892730712890625 ], [ 153.105422973632926, -10.891421318054142 ], [ 153.108139038085938, -10.891835212707463 ], [ 153.109191894531477, -10.893561363220215 ] ] ], [ [ [ 153.099411010742415, -10.890042304992619 ], [ 153.092224121094205, -10.890385627746582 ], [ 153.091094970703239, -10.88452243804926 ], [ 153.097671508789062, -10.886866569518929 ], [ 153.099411010742415, -10.890042304992619 ] ] ], [ [ [ 153.159408569336051, -10.884590148925724 ], [ 153.159164428711165, -10.883527755737305 ], [ 153.161148071289404, -10.882450103759766 ], [ 153.161300659179688, -10.88334846496582 ], [ 153.159408569336051, -10.884590148925724 ] ] ], [ [ [ 152.576950073242188, -10.879721641540527 ], [ 152.581665039062614, -10.883609771728459 ], [ 152.580551147461279, -10.884721755981388 ], [ 152.575836181640625, -10.881668090820312 ], [ 152.576950073242188, -10.879721641540527 ] ] ], [ [ [ 150.984283447265739, -10.876912117004395 ], [ 150.98512268066429, -10.877740859985352 ], [ 150.983367919921875, -10.877809524536133 ], [ 150.983230590820426, -10.876843452453613 ], [ 150.984283447265739, -10.876912117004395 ] ] ], [ [ [ 150.978057861328352, -10.878567695617676 ], [ 150.975006103515852, -10.878334045410156 ], [ 150.976470947265966, -10.87373161315918 ], [ 150.979263305664517, -10.876423835754281 ], [ 150.978057861328352, -10.878567695617676 ] ] ], [ [ [ 153.05195617675804, -10.86240291595459 ], [ 153.050415039062614, -10.86240291595459 ], [ 153.049377441406591, -10.861021041870117 ], [ 153.05181884765625, -10.859971046447754 ], [ 153.05195617675804, -10.86240291595459 ] ] ], [ [ [ 153.028427124023438, -10.859466552734375 ], [ 153.039886474609375, -10.860432624816895 ], [ 153.04219055175804, -10.861883163452148 ], [ 153.025344848633154, -10.861399650573617 ], [ 153.022064208984375, -10.857258796691895 ], [ 153.028427124023438, -10.859466552734375 ] ] ], [ [ [ 153.048049926757812, -10.854912757873535 ], [ 153.046905517578125, -10.85456657409668 ], [ 153.0484619140625, -10.852497100830078 ], [ 153.049377441406591, -10.853361129760685 ], [ 153.048049926757812, -10.854912757873535 ] ] ], [ [ [ 152.438522338867415, -10.844000816345215 ], [ 152.437408447265852, -10.843173027038517 ], [ 152.439880371093977, -10.843351364135629 ], [ 152.439804077148438, -10.843626976013127 ], [ 152.438522338867415, -10.844000816345215 ] ] ], [ [ [ 151.873336791992188, -10.834721565246525 ], [ 151.871948242187614, -10.83416557312006 ], [ 151.87689208984375, -10.833886146545296 ], [ 151.876129150390625, -10.834715843200684 ], [ 151.873336791992188, -10.834721565246525 ] ] ], [ [ [ 152.956939697265852, -10.832500457763615 ], [ 152.976943969726562, -10.839445114135629 ], [ 153.003936767578125, -10.857331275939885 ], [ 152.95916748046875, -10.841667175292912 ], [ 152.956939697265852, -10.832500457763615 ] ] ], [ [ [ 152.54833984375, -10.829722404479924 ], [ 152.552505493164176, -10.83166599273676 ], [ 152.553054809570426, -10.832221984863224 ], [ 152.547225952148438, -10.832221984863224 ], [ 152.54833984375, -10.829722404479924 ] ] ], [ [ [ 152.545272827148438, -10.828887939453068 ], [ 152.545562744140852, -10.830834388732796 ], [ 152.543060302734489, -10.829722404479924 ], [ 152.54388427734375, -10.828887939453068 ], [ 152.545272827148438, -10.828887939453068 ] ] ], [ [ [ 152.520553588867301, -10.829443931579533 ], [ 152.5191650390625, -10.829166412353459 ], [ 152.520278930664404, -10.825834274291992 ], [ 152.521118164062614, -10.826665878295785 ], [ 152.520553588867301, -10.829443931579533 ] ] ], [ [ [ 151.840545654296875, -10.825350761413461 ], [ 151.842498779297102, -10.825834274291992 ], [ 151.843048095703352, -10.826390266418457 ], [ 151.838058471679688, -10.824999809265137 ], [ 151.840545654296875, -10.825350761413461 ] ] ], [ [ [ 152.209869384765852, -10.824248313903809 ], [ 152.208160400390852, -10.822948455810547 ], [ 152.208648681640625, -10.82177734375 ], [ 152.209869384765852, -10.823351860046273 ], [ 152.209869384765852, -10.824248313903809 ] ] ], [ [ [ 151.8304443359375, -10.821330070495549 ], [ 151.827499389648551, -10.821260452270508 ], [ 151.827041625976676, -10.820076942443848 ], [ 151.829162597656477, -10.819998741149846 ], [ 151.8304443359375, -10.821330070495549 ] ] ], [ [ [ 152.498672485351676, -10.819450378417912 ], [ 152.506332397461051, -10.821736335754395 ], [ 152.489379882812841, -10.817655563354492 ], [ 152.491058349609375, -10.817033767700082 ], [ 152.498672485351676, -10.819450378417912 ] ] ], [ [ [ 152.995346069336051, -10.818563461303711 ], [ 152.994003295898551, -10.816892623901367 ], [ 152.995269775390852, -10.815395355224609 ], [ 152.996078491211165, -10.817466735839844 ], [ 152.995346069336051, -10.818563461303711 ] ] ], [ [ [ 152.216232299804801, -10.817817687988224 ], [ 152.217437744140625, -10.815359115600586 ], [ 152.218902587890739, -10.814739227294922 ], [ 152.218612670898551, -10.816110610961914 ], [ 152.216232299804801, -10.817817687988224 ] ] ], [ [ [ 152.180847167968864, -10.812683105468693 ], [ 152.190444946289176, -10.812406539916992 ], [ 152.191650390625, -10.813081741333008 ], [ 152.175338745117415, -10.814372062683049 ], [ 152.180847167968864, -10.812683105468693 ] ] ], [ [ [ 152.239624023437727, -10.813073158264103 ], [ 152.23849487304733, -10.813348770141602 ], [ 152.234466552734602, -10.805953025817871 ], [ 152.23695373535179, -10.807438850402775 ], [ 152.239624023437727, -10.813073158264103 ] ] ], [ [ [ 152.202499389648551, -10.806112289428711 ], [ 152.194473266601676, -10.810383796691895 ], [ 152.193557739257812, -10.810315132141056 ], [ 152.196563720703125, -10.807210922241097 ], [ 152.206634521484602, -10.804869651794434 ], [ 152.202499389648551, -10.806112289428711 ] ] ], [ [ [ 152.99110412597679, -10.805000305175781 ], [ 152.994445800781591, -10.808609962463322 ], [ 152.993896484375, -10.810278892517033 ], [ 152.988891601562614, -10.806112289428711 ], [ 152.99110412597679, -10.805000305175781 ] ] ], [ [ [ 152.232635498046989, -10.805113792419377 ], [ 152.221908569336051, -10.808675765991211 ], [ 152.212142944336165, -10.806303977966309 ], [ 152.229202270507926, -10.801856994628906 ], [ 152.232635498046989, -10.805113792419377 ] ] ], [ [ [ 151.92451477050804, -10.80997276306141 ], [ 151.920166015625114, -10.809878349304142 ], [ 151.918472290039062, -10.80142879486084 ], [ 151.929931640625114, -10.807079315185547 ], [ 151.92451477050804, -10.80997276306141 ] ] ], [ [ [ 151.908493041992415, -10.800902366638127 ], [ 151.908569335937614, -10.802194595336914 ], [ 151.898117065429688, -10.799725532531681 ], [ 151.900222778320312, -10.798160552978459 ], [ 151.908493041992415, -10.800902366638127 ] ] ], [ [ [ 152.488815307617188, -10.795564651489201 ], [ 152.487701416015625, -10.79175758361805 ], [ 152.488204956054801, -10.789877891540414 ], [ 152.4896240234375, -10.793834686279297 ], [ 152.488815307617188, -10.795564651489201 ] ] ], [ [ [ 152.395492553710938, -10.793891906738224 ], [ 152.389328002929801, -10.794111251830998 ], [ 152.387008666992188, -10.791601181030273 ], [ 152.392303466796875, -10.787932395935002 ], [ 152.395492553710938, -10.793891906738224 ] ] ], [ [ [ 152.001388549804915, -10.789723396301213 ], [ 151.998886108398551, -10.785000801086426 ], [ 152.007781982421875, -10.786666870117188 ], [ 152.005004882812727, -10.789167404174748 ], [ 152.001388549804915, -10.789723396301213 ] ] ], [ [ [ 150.426330566406364, -10.78477954864502 ], [ 150.425216674804801, -10.784296989440918 ], [ 150.425354003906477, -10.783398628234863 ], [ 150.426895141602017, -10.783742904663029 ], [ 150.426330566406364, -10.78477954864502 ] ] ], [ [ [ 151.829421997070426, -10.783334732055607 ], [ 151.827911376953466, -10.782997131347599 ], [ 151.826568603515739, -10.781081199645939 ], [ 151.830276489257926, -10.782113075256348 ], [ 151.829421997070426, -10.783334732055607 ] ] ], [ [ [ 151.881576538086165, -10.783147811889592 ], [ 151.878616333007926, -10.77944374084467 ], [ 151.879165649414176, -10.778610229492131 ], [ 151.882034301757812, -10.780209541320801 ], [ 151.881576538086165, -10.783147811889592 ] ] ], [ [ [ 150.430526733398551, -10.778154373168945 ], [ 150.43185424804733, -10.778085708618107 ], [ 150.431915283203239, -10.779741287231332 ], [ 150.429824829101904, -10.778429985046273 ], [ 150.430099487304801, -10.776775360107422 ], [ 150.430526733398551, -10.778154373168945 ] ] ], [ [ [ 150.426391601562841, -10.772506713867131 ], [ 150.4288330078125, -10.775068283080941 ], [ 150.428314208984375, -10.776176452636719 ], [ 150.42512512207054, -10.776060104370117 ], [ 150.426391601562841, -10.772506713867131 ] ] ], [ [ [ 151.870285034179688, -10.773056030273438 ], [ 151.871383666992301, -10.774443626403809 ], [ 151.860382080078125, -10.769924163818359 ], [ 151.866104125976562, -10.766432762145996 ], [ 151.870285034179688, -10.773056030273438 ] ] ], [ [ [ 151.688247680664062, -10.766947746276855 ], [ 151.699142456054801, -10.765865325927621 ], [ 151.706924438476676, -10.769707679748421 ], [ 151.677230834961279, -10.765849113464355 ], [ 151.688247680664062, -10.766947746276855 ] ] ], [ [ [ 150.676391601562614, -10.764445304870605 ], [ 150.681716918945767, -10.769774436950684 ], [ 150.681289672851676, -10.771875381469727 ], [ 150.676696777343977, -10.768825531005746 ], [ 150.676391601562614, -10.764445304870605 ] ] ], [ [ [ 151.7711181640625, -10.764720916747933 ], [ 151.770004272461051, -10.76361083984375 ], [ 151.77166748046875, -10.761944770812931 ], [ 151.771942138672102, -10.764166831970215 ], [ 151.7711181640625, -10.764720916747933 ] ] ], [ [ [ 152.445724487304688, -10.757413864135685 ], [ 152.443344116211392, -10.756851196289062 ], [ 152.44313049316429, -10.756022453307992 ], [ 152.444717407226676, -10.756110191345158 ], [ 152.445724487304688, -10.757413864135685 ] ] ], [ [ [ 150.420837402343864, -10.767498970031681 ], [ 150.411788940429801, -10.767759323120117 ], [ 150.409072875976562, -10.754356384277344 ], [ 150.420486450195312, -10.760547637939453 ], [ 150.420837402343864, -10.767498970031681 ] ] ], [ [ [ 152.40283203125, -10.755214691162109 ], [ 152.415756225586279, -10.782511711120549 ], [ 152.377395629882926, -10.776201248168888 ], [ 152.395477294921989, -10.75456523895258 ], [ 152.40283203125, -10.755214691162109 ] ] ], [ [ [ 151.833221435546989, -10.750859260559082 ], [ 151.829971313476562, -10.753874778747559 ], [ 151.828109741210938, -10.752780914306584 ], [ 151.829040527343864, -10.751151084899846 ], [ 151.833221435546989, -10.750859260559082 ] ] ], [ [ [ 150.39837646484375, -10.749794960021973 ], [ 150.384246826171875, -10.761762619018555 ], [ 150.359725952148665, -10.767498970031681 ], [ 150.383529663085938, -10.751941680908089 ], [ 150.39837646484375, -10.749794960021973 ] ] ], [ [ [ 151.314865112304688, -10.747644424438477 ], [ 151.317108154296989, -10.757694244384766 ], [ 151.304534912109716, -10.746354103088379 ], [ 151.306686401367188, -10.745083808898869 ], [ 151.314865112304688, -10.747644424438477 ] ] ], [ [ [ 151.721725463867188, -10.746328353881779 ], [ 151.72149658203125, -10.735962867736816 ], [ 151.730117797851562, -10.738742828369141 ], [ 151.728927612304688, -10.741061210632324 ], [ 151.721725463867188, -10.746328353881779 ] ] ], [ [ [ 151.819442749023665, -10.732222557067871 ], [ 151.83111572265625, -10.743612289428711 ], [ 151.829162597656477, -10.747777938842717 ], [ 151.816390991211165, -10.733332633972168 ], [ 151.819442749023665, -10.732222557067871 ] ] ], [ [ [ 150.684188842773665, -10.734716415405217 ], [ 150.682632446289176, -10.734365463256836 ], [ 150.682815551757926, -10.732028961181641 ], [ 150.684005737305142, -10.732753753662053 ], [ 150.684188842773665, -10.734716415405217 ] ] ], [ [ [ 151.737945556640852, -10.734025955200138 ], [ 151.737030029297102, -10.73367881774891 ], [ 151.743606567383154, -10.726710319518986 ], [ 151.743606567383154, -10.727469444274846 ], [ 151.737945556640852, -10.734025955200138 ] ] ], [ [ [ 150.233154296875114, -10.72817325592041 ], [ 150.23231506347679, -10.72822284698475 ], [ 150.230911254882812, -10.726343154907227 ], [ 150.233795166015625, -10.725497245788517 ], [ 150.233154296875114, -10.72817325592041 ] ] ], [ [ [ 150.755096435547102, -10.726433753967285 ], [ 150.753479003906364, -10.72544002532959 ], [ 150.756790161132812, -10.725411415100098 ], [ 150.756591796875, -10.725918769836369 ], [ 150.755096435547102, -10.726433753967285 ] ] ], [ [ [ 152.414733886719205, -10.729941368103027 ], [ 152.412109375000114, -10.727516174316349 ], [ 152.41400146484375, -10.722773551940918 ], [ 152.418792724609489, -10.72594165802002 ], [ 152.414733886719205, -10.729941368103027 ] ] ], [ [ [ 151.787506103515625, -10.721112251281738 ], [ 151.789169311523551, -10.7227783203125 ], [ 151.788894653320426, -10.723609924316349 ], [ 151.785278320312727, -10.721112251281738 ], [ 151.787506103515625, -10.721112251281738 ] ] ], [ [ [ 150.302719116211165, -10.722046852111816 ], [ 150.301971435546989, -10.73103141784668 ], [ 150.28096008300804, -10.729160308837891 ], [ 150.290740966796875, -10.720615386962891 ], [ 150.302719116211165, -10.722046852111816 ] ] ], [ [ [ 151.747222900390739, -10.723008155822754 ], [ 151.74806213378929, -10.719444274902344 ], [ 151.754241943359375, -10.718135833740234 ], [ 151.753906250000341, -10.71903133392334 ], [ 151.747222900390739, -10.723008155822754 ] ] ], [ [ [ 151.777374267578125, -10.718465805053711 ], [ 151.77113342285179, -10.719120025634709 ], [ 151.768234252929688, -10.717909812927246 ], [ 151.771102905273438, -10.715446472167969 ], [ 151.777374267578125, -10.718465805053711 ] ] ], [ [ [ 150.640518188477017, -10.717739105224609 ], [ 150.636962890625341, -10.717652320861816 ], [ 150.636032104492188, -10.713013648986816 ], [ 150.639144897461051, -10.714529991149846 ], [ 150.640518188477017, -10.717739105224609 ] ] ], [ [ [ 150.632369995117301, -10.710787773132267 ], [ 150.630966186523665, -10.714269638061523 ], [ 150.628479003906477, -10.713946342468205 ], [ 150.628707885742301, -10.711419105529728 ], [ 150.632369995117301, -10.710787773132267 ] ] ], [ [ [ 151.241668701171989, -10.709453582763672 ], [ 151.251617431640852, -10.713569641113224 ], [ 151.231338500976562, -10.714802742004395 ], [ 151.238723754882926, -10.709718704223576 ], [ 151.241668701171989, -10.709453582763672 ] ] ], [ [ [ 150.437698364257812, -10.702808380126896 ], [ 150.438339233398892, -10.70472335815424 ], [ 150.434722900390739, -10.70141410827631 ], [ 150.437149047851676, -10.700512886047363 ], [ 150.437698364257812, -10.702808380126896 ] ] ], [ [ [ 150.740234375000114, -10.704062461853027 ], [ 150.73738098144554, -10.704998970031738 ], [ 150.734481811523438, -10.699920654296875 ], [ 150.736770629882812, -10.699353218078613 ], [ 150.740234375000114, -10.704062461853027 ] ] ], [ [ [ 150.258300781250114, -10.697065353393555 ], [ 150.27593994140625, -10.709808349609375 ], [ 150.251678466797216, -10.705092430114632 ], [ 150.235931396484489, -10.722842216491699 ], [ 150.258300781250114, -10.697065353393555 ] ] ], [ [ [ 150.687011718750114, -10.695957183837834 ], [ 150.685943603515625, -10.695737838745117 ], [ 150.684936523437727, -10.694092750549316 ], [ 150.687728881835938, -10.694643974304199 ], [ 150.687011718750114, -10.695957183837834 ] ] ], [ [ [ 152.874099731445312, -10.690876960754395 ], [ 152.875839233398438, -10.69111156463623 ], [ 152.87611389160179, -10.691665649414006 ], [ 152.873672485351562, -10.691843032836914 ], [ 152.874099731445312, -10.690876960754395 ] ] ], [ [ [ 152.850555419922102, -10.691665649414006 ], [ 152.848327636718864, -10.690555572509766 ], [ 152.848617553711051, -10.689722061157227 ], [ 152.850830078125, -10.69111156463623 ], [ 152.850555419922102, -10.691665649414006 ] ] ], [ [ [ 150.434570312500114, -10.687351226806584 ], [ 150.441543579101676, -10.692892074584961 ], [ 150.436309814453466, -10.699261665344238 ], [ 150.432800292968977, -10.69437313079834 ], [ 150.434570312500114, -10.687351226806584 ] ] ], [ [ [ 150.732345581054688, -10.700045585632324 ], [ 150.711746215820312, -10.710320472717285 ], [ 150.697662353515625, -10.699466705322209 ], [ 150.719665527343977, -10.686760902404785 ], [ 150.732345581054688, -10.700045585632324 ] ] ], [ [ [ 152.88592529296875, -10.685381889343262 ], [ 152.888015747070654, -10.688828468322697 ], [ 152.883163452148665, -10.691328048705998 ], [ 152.881698608398551, -10.685076713562012 ], [ 152.88592529296875, -10.685381889343262 ] ] ], [ [ [ 150.676986694336051, -10.685057640075627 ], [ 150.681289672851676, -10.687148094177189 ], [ 150.682815551757926, -10.690632820129338 ], [ 150.67449951171875, -10.68828105926508 ], [ 150.676986694336051, -10.685057640075627 ] ] ], [ [ [ 150.313522338867188, -10.675083160400391 ], [ 150.3140869140625, -10.67619514465332 ], [ 150.312423706054915, -10.676470756530705 ], [ 150.312423706054915, -10.675639152526855 ], [ 150.313522338867188, -10.675083160400391 ] ] ], [ [ [ 151.123672485351562, -10.672902107238713 ], [ 151.120040893554801, -10.670166969299316 ], [ 151.120346069336165, -10.668662071227914 ], [ 151.12397766113304, -10.670660972595158 ], [ 151.123672485351562, -10.672902107238713 ] ] ], [ [ [ 151.111267089843864, -10.678222656249886 ], [ 151.10791015625, -10.676513671875 ], [ 151.109832763671875, -10.66776180267334 ], [ 151.115646362304801, -10.670987129211369 ], [ 151.111267089843864, -10.678222656249886 ] ] ], [ [ [ 151.066116333008154, -10.676944732666016 ], [ 151.06086730957054, -10.678214073181152 ], [ 151.056396484375, -10.670000076293945 ], [ 151.060714721679801, -10.668402671813965 ], [ 151.066116333008154, -10.676944732666016 ] ] ], [ [ [ 150.67599487304733, -10.670322418212891 ], [ 150.674331665039176, -10.669216156005859 ], [ 150.673828125, -10.667351722717228 ], [ 150.67599487304733, -10.669216156005859 ], [ 150.67599487304733, -10.670322418212891 ] ] ], [ [ [ 150.895660400390852, -10.666893959045353 ], [ 150.901046752929915, -10.673615455627441 ], [ 150.877166748047102, -10.6656236648559 ], [ 150.887512207031477, -10.661439895629883 ], [ 150.895660400390852, -10.666893959045353 ] ] ], [ [ [ 152.376358032226676, -10.661925315856934 ], [ 152.413391113281477, -10.691542625427189 ], [ 152.411071777343864, -10.724182128906193 ], [ 152.38507080078125, -10.700925827026367 ], [ 152.341690063476676, -10.707945823669377 ], [ 152.353195190430029, -10.667244911193791 ], [ 152.376358032226676, -10.661925315856934 ] ] ], [ [ [ 150.467773437500114, -10.659445762634277 ], [ 150.469299316406364, -10.660916328430176 ], [ 150.469421386718977, -10.662276268005257 ], [ 150.466659545898438, -10.661390304565316 ], [ 150.467773437500114, -10.659445762634277 ] ] ], [ [ [ 150.79959106445358, -10.659974098205566 ], [ 150.800079345703125, -10.661285400390625 ], [ 150.79841613769554, -10.659075736999512 ], [ 150.799041748046875, -10.659075736999512 ], [ 150.79959106445358, -10.659974098205566 ] ] ], [ [ [ 150.924118041992415, -10.659672737121582 ], [ 150.934158325195312, -10.670987129211369 ], [ 150.934234619140852, -10.681562423706055 ], [ 150.917236328125114, -10.673735618591309 ], [ 150.924118041992415, -10.659672737121582 ] ] ], [ [ [ 151.098007202148438, -10.658291816711369 ], [ 151.100936889648665, -10.672349929809513 ], [ 151.075561523437727, -10.664999961853027 ], [ 151.079513549804688, -10.657822608947697 ], [ 151.098007202148438, -10.658291816711369 ] ] ], [ [ [ 150.797821044922102, -10.65738487243641 ], [ 150.797286987304915, -10.657902717590275 ], [ 150.796310424804801, -10.654590606689453 ], [ 150.797286987304915, -10.655006408691406 ], [ 150.797821044922102, -10.65738487243641 ] ] ], [ [ [ 150.081512451171989, -10.653022766113224 ], [ 150.082550048828125, -10.653988838195744 ], [ 150.082000732421989, -10.655092239379826 ], [ 150.080398559570654, -10.653853416442814 ], [ 150.081512451171989, -10.653022766113224 ] ] ], [ [ [ 150.675003051757926, -10.648056983947754 ], [ 150.674438476562727, -10.649997711181527 ], [ 150.671951293945426, -10.64777946472168 ], [ 150.673614501953125, -10.646665573120117 ], [ 150.675003051757926, -10.648056983947754 ] ] ], [ [ [ 151.112991333007812, -10.649613380432072 ], [ 151.107223510742415, -10.649167060852051 ], [ 151.108459472656591, -10.642581939697266 ], [ 151.114257812500114, -10.647830963134766 ], [ 151.112991333007812, -10.649613380432072 ] ] ], [ [ [ 150.7430419921875, -10.641053199767953 ], [ 150.740798950195426, -10.640294075012093 ], [ 150.740737915039062, -10.639052391052246 ], [ 150.741363525390852, -10.638913154602051 ], [ 150.7430419921875, -10.641053199767953 ] ] ], [ [ [ 150.020614624023665, -10.63329029083252 ], [ 150.019729614257926, -10.63305473327631 ], [ 150.019500732421989, -10.631134033203125 ], [ 150.021179199218977, -10.631340980529785 ], [ 150.020614624023665, -10.63329029083252 ] ] ], [ [ [ 150.571823120117415, -10.629472732543945 ], [ 150.569671630859375, -10.631076812744084 ], [ 150.566604614257812, -10.626258850097656 ], [ 150.567626953125227, -10.625907897949219 ], [ 150.571823120117415, -10.629472732543945 ] ] ], [ [ [ 150.025894165039062, -10.625199317932072 ], [ 150.025833129882926, -10.626944541931152 ], [ 150.022781372070426, -10.626944541931152 ], [ 150.023605346679688, -10.625556945800724 ], [ 150.025894165039062, -10.625199317932072 ] ] ], [ [ [ 150.70668029785179, -10.626673698425236 ], [ 150.705062866210938, -10.625571250915527 ], [ 150.705551147461165, -10.624879837036133 ], [ 150.706954956054801, -10.625019073486328 ], [ 150.70668029785179, -10.626673698425236 ] ] ], [ [ [ 150.855865478515739, -10.623416900634766 ], [ 150.857803344726676, -10.625361442565861 ], [ 150.856689453125341, -10.626749038696232 ], [ 150.854476928711051, -10.624526977539006 ], [ 150.855865478515739, -10.623416900634766 ] ] ], [ [ [ 150.910903930664062, -10.622920036315918 ], [ 150.9095458984375, -10.622191429138127 ], [ 150.911361694336392, -10.620451927185059 ], [ 150.911804199218864, -10.621777534484806 ], [ 150.910903930664062, -10.622920036315918 ] ] ], [ [ [ 150.801773071289062, -10.622093200683594 ], [ 150.800567626953125, -10.622368812561035 ], [ 150.801513671875114, -10.618687629699707 ], [ 150.803085327148551, -10.620794296264648 ], [ 150.801773071289062, -10.622093200683594 ] ] ], [ [ [ 150.0167236328125, -10.617972373962402 ], [ 150.015396118164062, -10.618523597717228 ], [ 150.015045166015852, -10.617488861083984 ], [ 150.015884399414062, -10.617108345031681 ], [ 150.0167236328125, -10.617972373962402 ] ] ], [ [ [ 151.369003295898779, -10.619179725646916 ], [ 151.366912841796875, -10.6181383132934 ], [ 151.368881225586165, -10.616506576538086 ], [ 151.370193481445312, -10.617123603820801 ], [ 151.369003295898779, -10.619179725646916 ] ] ], [ [ [ 151.281997680664176, -10.618015289306584 ], [ 151.303833007812727, -10.619194030761605 ], [ 151.305267333984489, -10.626270294189453 ], [ 151.272277832031364, -10.620981216430664 ], [ 151.281997680664176, -10.618015289306584 ] ] ], [ [ [ 150.793807983398665, -10.619510650634766 ], [ 150.792633056640625, -10.618200302124023 ], [ 150.793960571289062, -10.616130828857365 ], [ 150.795074462890739, -10.618751525878906 ], [ 150.793807983398665, -10.619510650634766 ] ] ], [ [ [ 150.626113891601562, -10.616109848022461 ], [ 150.65625, -10.63227367401123 ], [ 150.672241210937614, -10.665988922119084 ], [ 150.634643554687614, -10.641925811767578 ], [ 150.626113891601562, -10.616109848022461 ] ] ], [ [ [ 150.020599365234602, -10.613869667053166 ], [ 150.019088745117415, -10.614353179931641 ], [ 150.018753051757812, -10.613799095153752 ], [ 150.019439697265739, -10.613249778747502 ], [ 150.020599365234602, -10.613869667053166 ] ] ], [ [ [ 150.893692016601904, -10.614143371582031 ], [ 150.893066406250114, -10.613315582275391 ], [ 150.894943237304915, -10.612900733947697 ], [ 150.895156860351676, -10.613452911376896 ], [ 150.893692016601904, -10.614143371582031 ] ] ], [ [ [ 150.62428283691429, -10.614242553710938 ], [ 150.62257385253929, -10.612709999084416 ], [ 150.62249755859375, -10.61139011383051 ], [ 150.625061035156477, -10.612216949462834 ], [ 150.62428283691429, -10.614242553710938 ] ] ], [ [ [ 150.0198974609375, -10.610015869140568 ], [ 150.019165039062614, -10.611577033996525 ], [ 150.017227172851562, -10.610834121704045 ], [ 150.017639160156364, -10.610138893127385 ], [ 150.0198974609375, -10.610015869140568 ] ] ], [ [ [ 152.792648315430029, -10.609356880187931 ], [ 152.878875732421875, -10.672062873840332 ], [ 152.83770751953125, -10.694956779479924 ], [ 152.768753051757926, -10.697096824645996 ], [ 152.759780883789176, -10.718280792236214 ], [ 152.682830810546875, -10.698370933532715 ], [ 152.648178100586165, -10.673517227172852 ], [ 152.623260498046989, -10.682223320007324 ], [ 152.518112182617642, -10.624959945678597 ], [ 152.542785644531591, -10.610224723815918 ], [ 152.684158325195312, -10.658238410949707 ], [ 152.792648315430029, -10.609356880187931 ] ] ], [ [ [ 150.665466308593864, -10.611691474914551 ], [ 150.666656494140739, -10.616314888000488 ], [ 150.660156250000227, -10.611759185791016 ], [ 150.661834716796989, -10.608725547790527 ], [ 150.665466308593864, -10.611691474914551 ] ] ], [ [ [ 150.633392333984375, -10.612928390502873 ], [ 150.638229370117642, -10.613651275634709 ], [ 150.63201904296875, -10.615758895874023 ], [ 150.627120971679801, -10.608771324157601 ], [ 150.633392333984375, -10.612928390502873 ] ] ], [ [ [ 150.011703491211051, -10.608379364013615 ], [ 150.010787963867188, -10.608102798461914 ], [ 150.010787963867188, -10.607136726379395 ], [ 150.012390136718864, -10.607688903808594 ], [ 150.011703491211051, -10.608379364013615 ] ] ], [ [ [ 150.653732299804801, -10.604721069335938 ], [ 150.652893066406477, -10.605411529541016 ], [ 150.652053833007812, -10.603894233703613 ], [ 150.652969360351676, -10.603754997253418 ], [ 150.653732299804801, -10.604721069335938 ] ] ], [ [ [ 150.01008605957054, -10.603820800781193 ], [ 150.011123657226562, -10.604651451110783 ], [ 150.009445190430029, -10.605685234069767 ], [ 150.009109497070312, -10.604442596435547 ], [ 150.01008605957054, -10.603820800781193 ] ] ], [ [ [ 151.380828857422216, -10.604124069213867 ], [ 151.37940979003929, -10.608025550842228 ], [ 151.371185302734489, -10.615691184997559 ], [ 151.373443603515625, -10.604434013366699 ], [ 151.380828857422216, -10.604124069213867 ] ] ], [ [ [ 151.369445800781477, -10.603333473205566 ], [ 151.368057250976562, -10.602223396301213 ], [ 151.368057250976562, -10.601111412048283 ], [ 151.369171142578239, -10.601111412048283 ], [ 151.369445800781477, -10.603333473205566 ] ] ], [ [ [ 151.305236816406364, -10.602390289306584 ], [ 151.303771972656591, -10.601185798644963 ], [ 151.30464172363304, -10.599866867065373 ], [ 151.306304931640625, -10.601056098937988 ], [ 151.305236816406364, -10.602390289306584 ] ] ], [ [ [ 151.226943969726562, -10.598054885864201 ], [ 151.245788574219091, -10.605570793151855 ], [ 151.256469726562841, -10.61878585815424 ], [ 151.230270385742642, -10.612500190734863 ], [ 151.226943969726562, -10.598054885864201 ] ] ], [ [ [ 149.935180664062955, -10.59576225280756 ], [ 149.934280395507926, -10.59451961517334 ], [ 149.935882568359602, -10.593484878539982 ], [ 149.93629455566429, -10.594244003295842 ], [ 149.935180664062955, -10.59576225280756 ] ] ], [ [ [ 150.68450927734375, -10.59691143035883 ], [ 150.682052612304801, -10.595598220825195 ], [ 150.682403564453125, -10.591595649719238 ], [ 150.68450927734375, -10.596287727355957 ], [ 150.68450927734375, -10.59691143035883 ] ] ], [ [ [ 150.022216796875114, -10.589165687560978 ], [ 150.022781372070426, -10.59083366394043 ], [ 150.019729614257926, -10.59416675567627 ], [ 150.019729614257926, -10.590554237365723 ], [ 150.022216796875114, -10.589165687560978 ] ] ], [ [ [ 151.041671752929801, -10.587571144104004 ], [ 151.039718627929915, -10.587778091430664 ], [ 151.039718627929915, -10.586668014526367 ], [ 151.042358398437614, -10.586112022399902 ], [ 151.041671752929801, -10.587571144104004 ] ] ], [ [ [ 150.64680480957054, -10.588855743408146 ], [ 150.641052246093864, -10.58641529083252 ], [ 150.640533447265739, -10.583245277404728 ], [ 150.642059326171989, -10.58348560333252 ], [ 150.64680480957054, -10.588855743408146 ] ] ], [ [ [ 150.734222412109489, -10.583434104919434 ], [ 150.736160278320312, -10.59121036529541 ], [ 150.727279663086165, -10.595657348632812 ], [ 150.728103637695426, -10.584821701049805 ], [ 150.734222412109489, -10.583434104919434 ] ] ], [ [ [ 151.367767333984602, -10.59458065032959 ], [ 151.361694335937614, -10.584076881408691 ], [ 151.362594604492301, -10.582939147949162 ], [ 151.371765136718977, -10.58728981018055 ], [ 151.367767333984602, -10.59458065032959 ] ] ], [ [ [ 151.20375061035179, -10.588580131530762 ], [ 151.211395263671989, -10.597500801086426 ], [ 151.185760498046875, -10.584987640380859 ], [ 151.194900512695312, -10.579777717590332 ], [ 151.20375061035179, -10.588580131530762 ] ] ], [ [ [ 151.280654907226562, -10.583161354064885 ], [ 151.280639648437614, -10.579925537109375 ], [ 151.28364562988304, -10.57895565032959 ], [ 151.282928466796989, -10.581884384155273 ], [ 151.280654907226562, -10.583161354064885 ] ] ], [ [ [ 149.917221069336165, -10.578888893127441 ], [ 149.916671752929915, -10.579721450805607 ], [ 149.913558959960938, -10.579463958740234 ], [ 149.913833618164176, -10.578634262084961 ], [ 149.917221069336165, -10.578888893127441 ] ] ], [ [ [ 150.620147705078239, -10.581191062927189 ], [ 150.61343383789108, -10.585082054138184 ], [ 150.611984252929688, -10.582346916198674 ], [ 150.6165771484375, -10.578380584716797 ], [ 150.620147705078239, -10.581191062927189 ] ] ], [ [ [ 151.027496337890852, -10.58552169799799 ], [ 151.041381835937727, -10.60916805267334 ], [ 151.06939697265625, -10.594119071960449 ], [ 151.073272705078352, -10.617301940917969 ], [ 151.049179077148438, -10.619464874267521 ], [ 151.037811279297102, -10.641597747802678 ], [ 151.069122314453125, -10.648754119872933 ], [ 151.042327880859375, -10.664096832275334 ], [ 151.051239013672216, -10.672992706298828 ], [ 151.010086059570312, -10.671465873718262 ], [ 150.987899780273551, -10.633910179138184 ], [ 150.971847534179688, -10.645620346069279 ], [ 150.934906005859375, -10.632609367370549 ], [ 150.905166625976562, -10.656510353088379 ], [ 150.900558471680029, -10.626388549804688 ], [ 150.919662475585938, -10.604207992553711 ], [ 151.027496337890852, -10.58552169799799 ] ] ], [ [ [ 149.933883666992301, -10.580555915832463 ], [ 149.933929443359375, -10.582989692687988 ], [ 149.929534912109375, -10.577153205871525 ], [ 149.931945800781364, -10.576389312744141 ], [ 149.933883666992301, -10.580555915832463 ] ] ], [ [ [ 150.90333557128929, -10.585277557373047 ], [ 150.893615722656477, -10.584444046020508 ], [ 150.908615112304688, -10.574444770812988 ], [ 150.907501220703239, -10.581386566162109 ], [ 150.90333557128929, -10.585277557373047 ] ] ], [ [ [ 150.706665039062614, -10.586321830749512 ], [ 150.724960327148665, -10.588102340698242 ], [ 150.716430664062955, -10.609092712402344 ], [ 150.754302978515625, -10.605063438415527 ], [ 150.73262023925804, -10.618071556091309 ], [ 150.758331298828352, -10.623332977294922 ], [ 150.757537841796875, -10.634099006652832 ], [ 150.685836791992188, -10.612221717834416 ], [ 150.701370239257926, -10.573434829711857 ], [ 150.706665039062614, -10.586321830749512 ] ] ], [ [ [ 151.198547363281477, -10.575897216796761 ], [ 151.197036743164176, -10.574296951293888 ], [ 151.198287963867301, -10.572450637817383 ], [ 151.199874877929688, -10.57413291931141 ], [ 151.198547363281477, -10.575897216796761 ] ] ], [ [ [ 150.71583557128929, -10.571389198303223 ], [ 150.717498779296875, -10.574444770812988 ], [ 150.713882446289062, -10.57722091674799 ], [ 150.713058471679801, -10.573055267333984 ], [ 150.71583557128929, -10.571389198303223 ] ] ], [ [ [ 150.730529785156477, -10.570308685302734 ], [ 150.72822570800804, -10.574397087097168 ], [ 150.725616455078125, -10.573884010314885 ], [ 150.725631713867301, -10.571235656738281 ], [ 150.730529785156477, -10.570308685302734 ] ] ], [ [ [ 150.802032470703239, -10.567609786987248 ], [ 150.800552368164176, -10.573326110839844 ], [ 150.794464111328125, -10.569803237914982 ], [ 150.795349121093864, -10.564590454101562 ], [ 150.802032470703239, -10.567609786987248 ] ] ], [ [ [ 151.259170532226562, -10.56385612487793 ], [ 151.256454467773551, -10.561788558959961 ], [ 151.258560180664176, -10.560076713562012 ], [ 151.260223388671989, -10.561945915222054 ], [ 151.259170532226562, -10.56385612487793 ] ] ], [ [ [ 151.902496337890625, -10.5625 ], [ 151.901107788085938, -10.560277938842717 ], [ 151.903060913086279, -10.559165954589844 ], [ 151.90388488769554, -10.561112403869572 ], [ 151.902496337890625, -10.5625 ] ] ], [ [ [ 150.775283813476562, -10.566665649414062 ], [ 150.773605346679801, -10.57166671752924 ], [ 150.75381469726608, -10.580500602722168 ], [ 150.75555419921875, -10.557222366332951 ], [ 150.775283813476562, -10.566665649414062 ] ] ], [ [ [ 150.722610473632812, -10.553103446960449 ], [ 150.728713989257812, -10.562019348144531 ], [ 150.725357055664176, -10.567648887634221 ], [ 150.71504211425804, -10.562680244445801 ], [ 150.722610473632812, -10.553103446960449 ] ] ], [ [ [ 150.710678100586165, -10.552695274352914 ], [ 150.712493896484716, -10.555069923400879 ], [ 150.709350585937727, -10.558423042297363 ], [ 150.706832885742415, -10.553869247436523 ], [ 150.710678100586165, -10.552695274352914 ] ] ], [ [ [ 151.121673583984375, -10.552221298217773 ], [ 151.120285034180029, -10.552221298217773 ], [ 151.120285034180029, -10.550555229187012 ], [ 151.122222900390625, -10.55111122131342 ], [ 151.121673583984375, -10.552221298217773 ] ] ], [ [ [ 151.828598022461165, -10.550030708312988 ], [ 151.828338623046875, -10.547875404357853 ], [ 151.829940795898892, -10.546094894409066 ], [ 151.829956054687614, -10.548439979553166 ], [ 151.828598022461165, -10.550030708312988 ] ] ], [ [ [ 151.213394165039062, -10.534917831420842 ], [ 151.211456298828466, -10.534189224243164 ], [ 151.212417602539062, -10.532272338867188 ], [ 151.214263916015739, -10.53344821929926 ], [ 151.213394165039062, -10.534917831420842 ] ] ], [ [ [ 149.853332519531477, -10.533887863159066 ], [ 149.85139465332054, -10.532777786254883 ], [ 149.852783203125455, -10.531665802001953 ], [ 149.853332519531477, -10.53209400177002 ], [ 149.853332519531477, -10.533887863159066 ] ] ], [ [ [ 151.246139526367301, -10.53944015502924 ], [ 151.243499755859716, -10.532595634460449 ], [ 151.245559692382812, -10.529765129089355 ], [ 151.247207641601676, -10.534392356872559 ], [ 151.246139526367301, -10.53944015502924 ] ] ], [ [ [ 150.864501953125114, -10.529520988464242 ], [ 150.901046752929915, -10.558303833007812 ], [ 150.883331298828239, -10.571110725402832 ], [ 150.896209716796875, -10.655139923095646 ], [ 150.813888549804915, -10.639444351196232 ], [ 150.794769287109602, -10.652419090270939 ], [ 150.784896850586165, -10.624303817749023 ], [ 150.760787963867188, -10.623269081115723 ], [ 150.764160156250114, -10.603660583496094 ], [ 150.835494995117301, -10.631745338439941 ], [ 150.838150024414062, -10.639469146728459 ], [ 150.872314453125114, -10.635919570922795 ], [ 150.860702514648438, -10.614056587219181 ], [ 150.828979492187614, -10.607134819030705 ], [ 150.834167480468864, -10.595834732055664 ], [ 150.789306640625114, -10.542819976806641 ], [ 150.807189941406477, -10.532607078552246 ], [ 150.839096069335938, -10.545596122741699 ], [ 150.845947265625114, -10.565773010253849 ], [ 150.849029541015739, -10.548953056335392 ], [ 150.865524291992415, -10.563913345336857 ], [ 150.864501953125114, -10.529520988464242 ] ] ], [ [ [ 151.086746215820312, -10.530268669128361 ], [ 151.085159301757926, -10.529281616210938 ], [ 151.085205078125, -10.526554107665959 ], [ 151.088531494140852, -10.528643608093205 ], [ 151.086746215820312, -10.530268669128361 ] ] ], [ [ [ 151.269195556640739, -10.532184600830021 ], [ 151.268325805664062, -10.526943206787053 ], [ 151.269805908203239, -10.525714874267521 ], [ 151.270828247070312, -10.530555725097656 ], [ 151.269195556640739, -10.532184600830021 ] ] ], [ [ [ 149.982131958007812, -10.5191650390625 ], [ 149.981155395507926, -10.517646789550781 ], [ 149.983673095703239, -10.518198013305664 ], [ 149.983673095703239, -10.518752098083496 ], [ 149.982131958007812, -10.5191650390625 ] ] ], [ [ [ 149.822448730468977, -10.516807556152344 ], [ 149.821914672851562, -10.52291202545166 ], [ 149.820404052734489, -10.523955345153752 ], [ 149.817794799804688, -10.516608238220215 ], [ 149.822448730468977, -10.516807556152344 ] ] ], [ [ [ 149.825149536132812, -10.482430458068791 ], [ 149.823425292968864, -10.480731964111328 ], [ 149.824340820312727, -10.479682922363281 ], [ 149.825469970703239, -10.480647087097168 ], [ 149.825149536132812, -10.482430458068791 ] ] ], [ [ [ 150.659439086914176, -10.480278015136719 ], [ 150.655654907226904, -10.480861663818359 ], [ 150.655273437500341, -10.477499961853027 ], [ 150.656387329101676, -10.477222442626953 ], [ 150.659439086914176, -10.480278015136719 ] ] ], [ [ [ 149.842498779296989, -10.478334426879883 ], [ 149.86468505859375, -10.49193096160883 ], [ 149.846954345703125, -10.524920463561955 ], [ 149.841751098632812, -10.505948066711426 ], [ 149.823944091796989, -10.507349967956543 ], [ 149.827255249023438, -10.478856086730957 ], [ 149.842498779296989, -10.478334426879883 ] ] ], [ [ [ 150.11250305175804, -10.458490371704102 ], [ 150.108337402343977, -10.457777976989689 ], [ 150.110549926757812, -10.451944351196232 ], [ 150.112426757812614, -10.45366001129139 ], [ 150.11250305175804, -10.458490371704102 ] ] ], [ [ [ 150.101104736328352, -10.445834159851074 ], [ 150.099716186523438, -10.464722633361703 ], [ 150.113327026367642, -10.470832824707031 ], [ 150.08721923828125, -10.475833892822209 ], [ 150.101104736328352, -10.445834159851074 ] ] ], [ [ [ 151.221298217773665, -10.432756423950195 ], [ 151.218368530273438, -10.430234909057617 ], [ 151.219879150390625, -10.428402900695801 ], [ 151.223052978515625, -10.429713249206543 ], [ 151.221298217773665, -10.432756423950195 ] ] ], [ [ [ 151.315826416015625, -10.424669265747013 ], [ 151.31721496582054, -10.42722225189209 ], [ 151.310836791992188, -10.427778244018555 ], [ 151.311752319336051, -10.422294616699219 ], [ 151.315826416015625, -10.424669265747013 ] ] ], [ [ [ 151.440277099609489, -10.407501220703125 ], [ 151.443328857421989, -10.409723281860352 ], [ 151.442779541015625, -10.410833358764592 ], [ 151.438888549804801, -10.408611297607365 ], [ 151.440277099609489, -10.407501220703125 ] ] ], [ [ [ 151.436660766601676, -10.406389236450195 ], [ 151.431015014648438, -10.402091979980469 ], [ 151.432327270508154, -10.399929046630803 ], [ 151.438705444336051, -10.402083396911564 ], [ 151.436660766601676, -10.406389236450195 ] ] ], [ [ [ 152.101028442382926, -10.390153884887638 ], [ 152.112686157226562, -10.38979434967041 ], [ 152.12080383300804, -10.392767906188851 ], [ 152.091888427734716, -10.401068687438965 ], [ 152.101028442382926, -10.390153884887638 ] ] ], [ [ [ 151.184509277343864, -10.394095420837346 ], [ 151.181106567382926, -10.390726089477482 ], [ 151.184326171875, -10.388174057006836 ], [ 151.186355590820426, -10.390334129333496 ], [ 151.184509277343864, -10.394095420837346 ] ] ], [ [ [ 151.421356201172102, -10.399979591369629 ], [ 151.411285400390739, -10.394040107726994 ], [ 151.412322998046875, -10.38630485534668 ], [ 151.421936035156477, -10.391058921813965 ], [ 151.421356201172102, -10.399979591369629 ] ] ], [ [ [ 150.359359741211165, -10.357138633728027 ], [ 150.360473632812614, -10.358250617980957 ], [ 150.358810424804801, -10.358804702758789 ], [ 150.358245849609489, -10.357417106628418 ], [ 150.359359741211165, -10.357138633728027 ] ] ], [ [ [ 150.626403808594205, -10.3560791015625 ], [ 150.625213623046989, -10.356425285339299 ], [ 150.623535156250227, -10.355941772460881 ], [ 150.625701904296989, -10.35428524017334 ], [ 150.626403808594205, -10.3560791015625 ] ] ], [ [ [ 151.413330078125114, -10.354166984558105 ], [ 151.416671752929801, -10.358055114746037 ], [ 151.415237426757926, -10.360127449035645 ], [ 151.41146850585983, -10.356123924255314 ], [ 151.413330078125114, -10.354166984558105 ] ] ], [ [ [ 150.617446899414176, -10.354652404785156 ], [ 150.617126464844091, -10.355549812316895 ], [ 150.616088867187727, -10.354375839233342 ], [ 150.616928100586051, -10.353963851928711 ], [ 150.617446899414176, -10.354652404785156 ] ] ], [ [ [ 150.362136840820312, -10.352999687194711 ], [ 150.36212158203125, -10.355469703674316 ], [ 150.35877990722679, -10.355221748351994 ], [ 150.35877990722679, -10.354616165161133 ], [ 150.362136840820312, -10.352999687194711 ] ] ], [ [ [ 151.385498046875227, -10.355413436889648 ], [ 151.384445190429801, -10.354998588561898 ], [ 151.384994506836051, -10.351944923400879 ], [ 151.386383056640625, -10.354166984558105 ], [ 151.385498046875227, -10.355413436889648 ] ] ], [ [ [ 150.662872314453239, -10.352069854736214 ], [ 150.662918090820312, -10.350551605224609 ], [ 150.664077758789062, -10.350241661071777 ], [ 150.66413879394554, -10.351172447204533 ], [ 150.662872314453239, -10.352069854736214 ] ] ], [ [ [ 150.377975463867188, -10.34908390045166 ], [ 150.377975463867188, -10.350193977355957 ], [ 150.376861572265852, -10.350472450256234 ], [ 150.376861572265852, -10.348806381225586 ], [ 150.377975463867188, -10.34908390045166 ] ] ], [ [ [ 150.647216796875, -10.352545738220215 ], [ 150.643051147461051, -10.355833053588754 ], [ 150.640975952148438, -10.355124473571777 ], [ 150.644912719726676, -10.346784591674805 ], [ 150.647216796875, -10.352545738220215 ] ] ], [ [ [ 150.367691040039062, -10.343500137329045 ], [ 150.36964416503929, -10.345722198486328 ], [ 150.367965698242301, -10.349057197570801 ], [ 150.366027832031477, -10.348501205444336 ], [ 150.367691040039062, -10.343500137329045 ] ] ], [ [ [ 151.125000000000114, -10.342499732971191 ], [ 151.126388549805029, -10.343890190124512 ], [ 151.125549316406477, -10.345556259155273 ], [ 151.123611450195426, -10.343609809875488 ], [ 151.125000000000114, -10.342499732971191 ] ] ], [ [ [ 150.671661376953239, -10.341943740844727 ], [ 150.677719116211051, -10.344259262084904 ], [ 150.67860412597679, -10.347222328185978 ], [ 150.67274475097679, -10.345300674438477 ], [ 150.671661376953239, -10.341943740844727 ] ] ], [ [ [ 150.6484375, -10.339856147766056 ], [ 150.648712158203352, -10.342063903808594 ], [ 150.648132324218977, -10.342616081237793 ], [ 150.646789550781477, -10.340408325195256 ], [ 150.6484375, -10.339856147766056 ] ] ], [ [ [ 150.654998779297102, -10.343609809875488 ], [ 150.653335571289176, -10.340000152587891 ], [ 150.661392211914062, -10.3397216796875 ], [ 150.661117553711392, -10.340833663940373 ], [ 150.654998779297102, -10.343609809875488 ] ] ], [ [ [ 151.877456665039062, -10.331171989440918 ], [ 151.883255004882812, -10.336991310119572 ], [ 151.868667602539176, -10.341943740844727 ], [ 151.874252319336051, -10.330698013305664 ], [ 151.877456665039062, -10.331171989440918 ] ] ], [ [ [ 150.962707519531364, -10.323500633239689 ], [ 150.96087646484375, -10.321776390075627 ], [ 150.961090087890852, -10.321294784545842 ], [ 150.96241760253929, -10.321706771850586 ], [ 150.962707519531364, -10.323500633239689 ] ] ], [ [ [ 150.378585815429915, -10.320674896240178 ], [ 150.379150390625227, -10.322123527526855 ], [ 150.376449584960938, -10.321086883544922 ], [ 150.377746582031364, -10.320535659789982 ], [ 150.378585815429915, -10.320674896240178 ] ] ], [ [ [ 150.923004150390739, -10.30702018737793 ], [ 150.918991088867642, -10.306977272033635 ], [ 150.921340942382926, -10.301156044006291 ], [ 150.924545288085938, -10.304686546325684 ], [ 150.923004150390739, -10.30702018737793 ] ] ], [ [ [ 151.04829406738304, -10.310020446777344 ], [ 151.046249389648551, -10.302463531494084 ], [ 151.04876708984375, -10.300399780273438 ], [ 151.05134582519554, -10.304727554321289 ], [ 151.04829406738304, -10.310020446777344 ] ] ], [ [ [ 150.928741455078125, -10.28538703918457 ], [ 150.928344726562614, -10.280267715454045 ], [ 150.932174682617188, -10.27955245971674 ], [ 150.933303833007926, -10.28354454040516 ], [ 150.928741455078125, -10.28538703918457 ] ] ], [ [ [ 151.050399780273665, -10.291072845458984 ], [ 151.047546386719205, -10.287182807922363 ], [ 151.045944213867188, -10.27911472320551 ], [ 151.050247192382812, -10.282271385192871 ], [ 151.050399780273665, -10.291072845458984 ] ] ], [ [ [ 151.033447265625114, -10.267210960388184 ], [ 151.037506103515966, -10.284998893737679 ], [ 151.015060424804915, -10.292841911315918 ], [ 151.018569946289176, -10.309117317199707 ], [ 151.016525268555029, -10.313353538513184 ], [ 150.997558593750227, -10.272750854492188 ], [ 151.033447265625114, -10.267210960388184 ] ] ], [ [ [ 151.850830078125, -10.255210876464844 ], [ 151.849716186523665, -10.255832672119084 ], [ 151.848052978515852, -10.254999160766545 ], [ 151.850204467773551, -10.253829956054631 ], [ 151.850830078125, -10.255210876464844 ] ] ], [ [ [ 151.858886718750114, -10.262222290039006 ], [ 151.853866577148438, -10.258005142211914 ], [ 151.86334228515625, -10.249504089355469 ], [ 151.866149902343977, -10.253306388854924 ], [ 151.858886718750114, -10.262222290039006 ] ] ], [ [ [ 151.860549926757812, -10.243610382080021 ], [ 151.860412597656364, -10.242232322692871 ], [ 151.862640380859375, -10.240921020507812 ], [ 151.862228393554801, -10.242160797119141 ], [ 151.860549926757812, -10.243610382080021 ] ] ], [ [ [ 151.863937377929801, -10.238774299621525 ], [ 151.862869262695312, -10.237629890441838 ], [ 151.864440917968977, -10.234999656677189 ], [ 151.865264892578239, -10.237280845642033 ], [ 151.863937377929801, -10.238774299621525 ] ] ], [ [ [ 150.608612060547102, -10.226667404174805 ], [ 150.60444641113304, -10.240278244018555 ], [ 150.588607788086165, -10.238333702087346 ], [ 150.597503662109375, -10.229446411132812 ], [ 150.608612060547102, -10.226667404174805 ] ] ], [ [ [ 151.866378784179801, -10.227946281433049 ], [ 151.865325927734375, -10.226245880126896 ], [ 151.86726379394554, -10.221774101257211 ], [ 151.869140625, -10.224384307861328 ], [ 151.866378784179801, -10.227946281433049 ] ] ], [ [ [ 150.885086059570426, -10.225601196289006 ], [ 150.87921142578125, -10.226257324218693 ], [ 150.878784179687614, -10.222438812255803 ], [ 150.885116577148438, -10.220906257629395 ], [ 150.885086059570426, -10.225601196289006 ] ] ], [ [ [ 150.905380249023438, -10.208294868469238 ], [ 150.907714843750227, -10.209472656249943 ], [ 150.903839111328125, -10.21099758148182 ], [ 150.903213500976676, -10.209329605102482 ], [ 150.905380249023438, -10.208294868469238 ] ] ], [ [ [ 151.213363647461279, -10.209275245666504 ], [ 151.21112060546875, -10.20770263671875 ], [ 151.210815429687955, -10.205044746398926 ], [ 151.213714599609489, -10.207069396972656 ], [ 151.213363647461279, -10.209275245666504 ] ] ], [ [ [ 151.20416259765625, -10.198055267333984 ], [ 151.206939697265852, -10.200277328491154 ], [ 151.206390380859489, -10.201666831970215 ], [ 151.20222473144554, -10.199723243713379 ], [ 151.20416259765625, -10.198055267333984 ] ] ], [ [ [ 150.910461425781364, -10.019832611083984 ], [ 150.90882873535179, -10.018486022949219 ], [ 150.90882873535179, -10.017107963561955 ], [ 150.910156250000227, -10.01779842376709 ], [ 150.910461425781364, -10.019832611083984 ] ] ], [ [ [ 150.956146240234489, -10.016216278076172 ], [ 150.955245971679801, -10.016491889953556 ], [ 150.954269409179915, -10.015597343444824 ], [ 150.955169677734602, -10.015458106994629 ], [ 150.956146240234489, -10.016216278076172 ] ] ], [ [ [ 150.915039062500114, -10.015381813049316 ], [ 150.913223266601676, -10.014966964721623 ], [ 150.916015625, -10.011448860168457 ], [ 150.917495727539062, -10.012690544128418 ], [ 150.915039062500114, -10.015381813049316 ] ] ], [ [ [ 150.94166564941429, -10.00694465637207 ], [ 150.94500732421875, -10.016665458679199 ], [ 150.93556213378929, -10.019167900085449 ], [ 150.938888549804801, -10.007779121398926 ], [ 150.94166564941429, -10.00694465637207 ] ] ], [ [ [ 151.14642333984375, -9.981095314025822 ], [ 151.146438598632812, -9.982809066772461 ], [ 151.145538330078239, -9.98282337188715 ], [ 151.145538330078239, -9.98137092590332 ], [ 151.14642333984375, -9.981095314025822 ] ] ], [ [ [ 150.849014282226562, -9.954789161682072 ], [ 150.851577758789062, -9.955390930175781 ], [ 150.846237182617188, -9.959400177001953 ], [ 150.846755981445426, -9.955481529235783 ], [ 150.849014282226562, -9.954789161682072 ] ] ], [ [ [ 150.935272216797216, -9.845696449279785 ], [ 150.934722900390625, -9.84486198425293 ], [ 150.934997558593977, -9.843474388122559 ], [ 150.935836791992301, -9.843751907348633 ], [ 150.935272216797216, -9.845696449279785 ] ] ], [ [ [ 150.931961059570767, -9.835042953491211 ], [ 150.933319091796875, -9.835375785827637 ], [ 150.933319091796875, -9.835859298705998 ], [ 150.932022094726676, -9.836441040039062 ], [ 150.931961059570767, -9.835042953491211 ] ] ], [ [ [ 150.805847167968864, -9.817644119262638 ], [ 150.804870605468977, -9.817644119262638 ], [ 150.804595947265739, -9.816815376281738 ], [ 150.8057861328125, -9.816678047180119 ], [ 150.805847167968864, -9.817644119262638 ] ] ], [ [ [ 150.801528930664062, -9.815367698669434 ], [ 150.803756713867415, -9.817720413208008 ], [ 150.798614501953352, -9.820279121398926 ], [ 150.79833984375, -9.817776679992676 ], [ 150.801528930664062, -9.815367698669434 ] ] ], [ [ [ 150.803863525390625, -9.814536094665471 ], [ 150.802719116210938, -9.814328193664551 ], [ 150.80264282226608, -9.81259822845459 ], [ 150.804534912109602, -9.813013076782227 ], [ 150.803863525390625, -9.814536094665471 ] ] ], [ [ [ 149.889633178711051, -9.772000312805176 ], [ 149.890304565429915, -9.77582931518549 ], [ 149.884765625000227, -9.778111457824707 ], [ 149.886978149414176, -9.770355224609375 ], [ 149.889633178711051, -9.772000312805176 ] ] ], [ [ [ 150.889190673828239, -9.76346492767334 ], [ 150.887603759765625, -9.76170825958252 ], [ 150.888778686523438, -9.760316848754883 ], [ 150.890472412109375, -9.761659622192383 ], [ 150.889190673828239, -9.76346492767334 ] ] ], [ [ [ 150.873291015625, -9.741457939147949 ], [ 150.886581420898551, -9.762958526611271 ], [ 150.859207153320312, -9.766087532043457 ], [ 150.851165771484375, -9.741927146911621 ], [ 150.873291015625, -9.741457939147949 ] ] ], [ [ [ 150.739822387695312, -9.730889320373535 ], [ 150.738922119140852, -9.7322998046875 ], [ 150.737854003906364, -9.732007980346623 ], [ 150.739547729492301, -9.729256629943848 ], [ 150.739822387695312, -9.730889320373535 ] ] ], [ [ [ 150.898345947265739, -9.73951339721674 ], [ 150.891860961914176, -9.736015319824219 ], [ 150.894638061523551, -9.726268768310433 ], [ 150.899978637695426, -9.728815078735352 ], [ 150.898345947265739, -9.73951339721674 ] ] ], [ [ [ 150.90467834472679, -9.728833198547306 ], [ 150.903366088867301, -9.725689888000431 ], [ 150.906097412109375, -9.718132972717285 ], [ 150.910720825195312, -9.721455574035645 ], [ 150.90467834472679, -9.728833198547306 ] ] ], [ [ [ 150.759628295898438, -9.711709976196232 ], [ 150.818664550781705, -9.735564231872502 ], [ 150.846115112304915, -9.796950340270996 ], [ 150.899627685546875, -9.813596725463867 ], [ 150.991943359375, -9.916666030883732 ], [ 151.051605224609489, -9.941926002502441 ], [ 151.057296752929688, -9.962929725646973 ], [ 151.032531738281364, -9.945015907287598 ], [ 151.031845092773665, -9.986293792724609 ], [ 151.108688354492188, -10.040748596191406 ], [ 151.144989013672102, -10.034247398376408 ], [ 151.147262573242301, -9.989227294921875 ], [ 151.182785034179801, -9.93751335144043 ], [ 151.273681640625, -9.917057991027832 ], [ 151.294387817382812, -9.981977462768498 ], [ 151.267578125, -10.069696426391602 ], [ 151.237823486328125, -10.109890937805176 ], [ 151.229217529296875, -10.139814376830998 ], [ 151.240829467773779, -10.1522216796875 ], [ 151.222976684570426, -10.150107383728027 ], [ 151.229156494140625, -10.166494369506836 ], [ 151.212310791015852, -10.169466018676701 ], [ 151.22108459472679, -10.191325187683049 ], [ 151.19416809082054, -10.15361213684082 ], [ 151.155914306640625, -10.154430389404297 ], [ 151.151184082031591, -10.140447616577148 ], [ 151.113861083984602, -10.139934539794922 ], [ 151.062271118164176, -10.11309623718256 ], [ 150.956878662109375, -10.100440025329533 ], [ 150.946990966796989, -10.014899253845158 ], [ 150.97052001953125, -10.011919975280762 ], [ 150.960556030273665, -10.025522232055664 ], [ 150.972198486328352, -10.032094955444336 ], [ 150.984909057617188, -9.998377799987793 ], [ 150.946807861328352, -9.96125316619873 ], [ 150.948287963867188, -10.003738403320312 ], [ 150.91250610351608, -10.007223129272461 ], [ 150.890014648437614, -9.990571975707951 ], [ 150.874221801757926, -9.883955955505314 ], [ 150.849227905273551, -9.841447830200195 ], [ 150.795242309570426, -9.797810554504338 ], [ 150.767776489257926, -9.801945686340332 ], [ 150.786407470703352, -9.803016662597599 ], [ 150.773895263671989, -9.812221527099609 ], [ 150.759445190429688, -9.80003833770752 ], [ 150.739837646484602, -9.73437595367426 ], [ 150.759628295898438, -9.711709976196232 ] ] ], [ [ [ 150.99383544921875, -9.670831680297852 ], [ 150.995162963867529, -9.66817569732666 ], [ 150.997406005859375, -9.669403076171818 ], [ 150.996765136718864, -9.670213699340763 ], [ 150.99383544921875, -9.670831680297852 ] ] ], [ [ [ 150.81170654296875, -9.665387153625488 ], [ 150.811431884765739, -9.666492462158203 ], [ 150.809494018554915, -9.665925025939828 ], [ 150.809494018554915, -9.665370941162109 ], [ 150.81170654296875, -9.665387153625488 ] ] ], [ [ [ 150.998336791992642, -9.647603034973088 ], [ 150.998336791992642, -9.648721694946289 ], [ 150.998886108398665, -9.64982891082758 ], [ 150.996948242187727, -9.648419380187988 ], [ 150.998336791992642, -9.647603034973088 ] ] ], [ [ [ 151.00103759765625, -9.640722274780273 ], [ 151.00299072265625, -9.642242431640568 ], [ 150.998611450195312, -9.643716812133732 ], [ 150.998321533203352, -9.641242027282658 ], [ 151.00103759765625, -9.640722274780273 ] ] ], [ [ [ 150.930969238281364, -9.637921333312988 ], [ 150.930221557617415, -9.636772155761719 ], [ 150.931411743164062, -9.636062622070312 ], [ 150.931823730468864, -9.637324333190918 ], [ 150.930969238281364, -9.637921333312988 ] ] ], [ [ [ 150.930023193359602, -9.630949020385629 ], [ 150.929473876953352, -9.633175849914551 ], [ 150.926956176757926, -9.633148193359375 ], [ 150.927810668945426, -9.630965232849064 ], [ 150.930023193359602, -9.630949020385629 ] ] ], [ [ [ 150.02166748046875, -9.631388664245605 ], [ 150.019729614257926, -9.630276679992676 ], [ 150.023056030273665, -9.628610610961914 ], [ 150.023895263671875, -9.62944507598877 ], [ 150.02166748046875, -9.631388664245605 ] ] ], [ [ [ 149.838928222656591, -9.615680694580078 ], [ 149.840301513671875, -9.61594295501709 ], [ 149.840576171875455, -9.617008209228516 ], [ 149.838668823242642, -9.616786956786996 ], [ 149.838928222656591, -9.615680694580078 ] ] ], [ [ [ 149.771240234375, -9.605398178100586 ], [ 149.770019531250114, -9.603186607360783 ], [ 149.77267456054733, -9.601107597351017 ], [ 149.773010253906364, -9.603609085083008 ], [ 149.771240234375, -9.605398178100586 ] ] ], [ [ [ 149.7838134765625, -9.601254463195744 ], [ 149.781875610351676, -9.600424766540471 ], [ 149.781723022460938, -9.599455833435059 ], [ 149.782699584960938, -9.599455833435059 ], [ 149.7838134765625, -9.601254463195744 ] ] ], [ [ [ 149.77552795410179, -9.601023674011174 ], [ 149.773437500000455, -9.599547386169434 ], [ 149.773910522460938, -9.598035812377873 ], [ 149.777130126953466, -9.598842620849553 ], [ 149.77552795410179, -9.601023674011174 ] ] ], [ [ [ 149.781112670898551, -9.590277671813965 ], [ 149.795272827148438, -9.619166374206543 ], [ 149.838333129882926, -9.611667633056641 ], [ 149.830551147460938, -9.620834350585938 ], [ 149.879867553711392, -9.643044471740723 ], [ 150.01222229003929, -9.629722595214787 ], [ 150.012298583984489, -9.665233612060433 ], [ 150.057220458984602, -9.683889389038086 ], [ 150.055831909179688, -9.72389030456543 ], [ 150.012344360351562, -9.726114273071232 ], [ 149.995559692382812, -9.746943473815918 ], [ 149.952499389648551, -9.746943473815918 ], [ 149.925033569336051, -9.769989967346191 ], [ 149.892623901367415, -9.758950233459473 ], [ 149.875305175781364, -9.775803565979004 ], [ 149.769439697265739, -9.784763336181641 ], [ 149.713668823242188, -9.809018135070801 ], [ 149.715698242187614, -9.848771095275879 ], [ 149.758056640625341, -9.899162292480412 ], [ 149.809997558593977, -9.912500381469727 ], [ 149.82795715332054, -9.958764076232853 ], [ 149.86270141601608, -9.99040508270258 ], [ 149.85945129394554, -10.01722240447998 ], [ 149.89430236816429, -10.01777458190918 ], [ 149.929336547851904, -10.059962272644043 ], [ 150.00091552734375, -10.085470199584847 ], [ 150.093002319335938, -10.08620643615717 ], [ 150.12237548828125, -10.119779586791935 ], [ 150.18011474609375, -10.091977119445801 ], [ 150.204833984375114, -10.131487846374512 ], [ 150.246383666992188, -10.13416576385498 ], [ 150.294815063476562, -10.18610954284668 ], [ 150.360183715820426, -10.202178001403809 ], [ 150.425994873046989, -10.21359920501709 ], [ 150.460662841796989, -10.199616432189941 ], [ 150.51899719238304, -10.231644630432015 ], [ 150.545761108398551, -10.205608367919922 ], [ 150.586944580078125, -10.208612442016602 ], [ 150.597793579102017, -10.218320846557617 ], [ 150.567291259765739, -10.247936248779297 ], [ 150.598327636718864, -10.252221107482853 ], [ 150.612319946289062, -10.284957885742188 ], [ 150.653579711914062, -10.283462524414006 ], [ 150.703048706054915, -10.25555515289301 ], [ 150.779724121093977, -10.269444465637207 ], [ 150.837326049804915, -10.228116989135685 ], [ 150.874877929687727, -10.225442886352482 ], [ 150.760955810546875, -10.301300048828068 ], [ 150.734725952148665, -10.296943664550668 ], [ 150.718017578125114, -10.316129684448185 ], [ 150.650283813476676, -10.333333015441895 ], [ 150.632431030273438, -10.351620674133301 ], [ 150.588333129882812, -10.354957580566406 ], [ 150.410003662109375, -10.297779083251896 ], [ 150.343139648437727, -10.334395408630314 ], [ 150.34315490722679, -10.397128105163517 ], [ 150.426269531250227, -10.406169891357422 ], [ 150.595977783203125, -10.470512390136605 ], [ 150.651016235351676, -10.476724624633732 ], [ 150.693603515625114, -10.563887596130371 ], [ 150.658798217773665, -10.585308074951115 ], [ 150.648590087890739, -10.579071998596191 ], [ 150.616104125977017, -10.577776908874398 ], [ 150.554916381836051, -10.630660057067871 ], [ 150.472915649414176, -10.619669914245605 ], [ 150.466033935546989, -10.657586097717285 ], [ 150.418624877929688, -10.664162635803223 ], [ 150.427505493164176, -10.692221641540414 ], [ 150.411621093750227, -10.678358078002873 ], [ 150.362289428711051, -10.68602466583252 ], [ 150.354995727539176, -10.659721374511605 ], [ 150.324172973632812, -10.647223472595215 ], [ 150.30520629882858, -10.681070327758789 ], [ 150.288055419921989, -10.674722671508732 ], [ 150.255569458007926, -10.693015098571777 ], [ 150.241455078125114, -10.668927192687988 ], [ 150.24604797363304, -10.686260223388672 ], [ 150.202499389648438, -10.702778816223145 ], [ 150.205551147460938, -10.684445381164437 ], [ 150.183609008789062, -10.691944122314396 ], [ 150.172836303711392, -10.679012298583984 ], [ 150.198593139648551, -10.661827087402344 ], [ 150.19111633300804, -10.649444580078125 ], [ 150.138900756836051, -10.650403976440373 ], [ 150.115753173828352, -10.673899650573674 ], [ 150.103607177734489, -10.641943931579533 ], [ 150.08222961425804, -10.640000343322697 ], [ 150.080062866210938, -10.652201652526855 ], [ 150.056671142578352, -10.621945381164494 ], [ 150.039718627929801, -10.636112213134766 ], [ 150.033294677734375, -10.618828773498478 ], [ 150.01466369628929, -10.626708030700684 ], [ 150.036117553711051, -10.593963623046875 ], [ 150.019165039062614, -10.573888778686523 ], [ 150.000549316406477, -10.602505683898869 ], [ 149.9791259765625, -10.597979545593205 ], [ 149.975509643554688, -10.579837799072266 ], [ 149.960403442382926, -10.596231460571232 ], [ 149.969390869140966, -10.549868583679199 ], [ 149.952346801758267, -10.583765029907113 ], [ 149.949447631836051, -10.55805587768549 ], [ 149.930282592773551, -10.559165954589844 ], [ 149.926940917968864, -10.578332901000977 ], [ 149.905670166015739, -10.542224884033146 ], [ 149.903335571289176, -10.564722061157227 ], [ 149.881103515625, -10.573055267333984 ], [ 149.876480102539176, -10.55362510681141 ], [ 149.854171752929801, -10.552777290344238 ], [ 149.904861450195426, -10.524171829223633 ], [ 149.86457824707054, -10.526106834411621 ], [ 149.879592895507812, -10.502943992614746 ], [ 149.915542602539176, -10.521060943603402 ], [ 149.956390380859489, -10.51143836975092 ], [ 149.977432250976562, -10.52383899688715 ], [ 150.032211303711165, -10.498688697814941 ], [ 150.035552978515739, -10.513889312744084 ], [ 150.042221069336051, -10.51722335815424 ], [ 150.053222656250227, -10.473479270935059 ], [ 150.087478637695312, -10.47990894317627 ], [ 150.11447143554733, -10.47413444519043 ], [ 150.11468505859375, -10.466132164001465 ], [ 150.102874755859489, -10.464761734008789 ], [ 150.113327026367642, -10.459723472595215 ], [ 150.118835449218977, -10.449790000915471 ], [ 150.102081298828239, -10.439267158508301 ], [ 150.116622924804801, -10.422975540161019 ], [ 150.064407348632812, -10.466349601745605 ], [ 150.023056030273665, -10.464722633361703 ], [ 149.952987670898779, -10.42241096496582 ], [ 149.936096191406364, -10.441153526306152 ], [ 149.932785034179688, -10.431943893432617 ], [ 149.925827026367415, -10.433332443237248 ], [ 149.930465698242301, -10.44793701171875 ], [ 149.942413330078352, -10.44521427154541 ], [ 149.928100585937727, -10.492142677307129 ], [ 149.914306640625, -10.496242523193303 ], [ 149.871902465820426, -10.410915374755859 ], [ 149.800811767578125, -10.367812156677246 ], [ 149.750549316406705, -10.345556259155273 ], [ 149.64144897460983, -10.344300270080566 ], [ 149.66261291503929, -10.317034721374455 ], [ 149.664520263672102, -10.073233604431152 ], [ 149.653106689453125, -10.038134574890137 ], [ 149.521011352539062, -10.028834342956486 ], [ 149.385116577148551, -9.943234443664494 ], [ 149.319915771484489, -9.935934066772347 ], [ 149.324615478515852, -9.856535911560059 ], [ 149.177505493164062, -9.795333862304688 ], [ 149.134918212890739, -9.758234024047795 ], [ 149.023513793945426, -9.800736427307129 ], [ 148.966705322265625, -9.744834899902287 ], [ 148.978118896484489, -9.71253490447998 ], [ 149.005020141601676, -9.696434974670353 ], [ 149.087219238281364, -9.707134246826172 ], [ 149.441925048828352, -9.597958564758301 ], [ 149.456970214843864, -9.613333702087402 ], [ 149.47969055175804, -9.597801208496037 ], [ 149.546951293945312, -9.597776412963867 ], [ 149.616485595703125, -9.622769355773926 ], [ 149.644287109375227, -9.603155136108398 ], [ 149.692749023437727, -9.615399360656738 ], [ 149.744720458984375, -9.592499732971191 ], [ 149.771942138671875, -9.595277786254826 ], [ 149.775115966796989, -9.618110656738224 ], [ 149.781112670898551, -9.590277671813965 ] ] ], [ [ [ 149.77357482910179, -9.594234466552734 ], [ 149.770202636718864, -9.591777801513615 ], [ 149.775680541992301, -9.58994102478016 ], [ 149.774993896484375, -9.593111038208008 ], [ 149.77357482910179, -9.594234466552734 ] ] ], [ [ [ 151.004180908203125, -9.57655143737793 ], [ 151.031829833984375, -9.590825080871582 ], [ 151.022781372070312, -9.595493316650334 ], [ 151.024765014648438, -9.60095310211176 ], [ 151.024658203125455, -9.595631599426213 ], [ 151.036926269531364, -9.596529960632267 ], [ 151.019729614257812, -9.628072738647404 ], [ 151.045043945312727, -9.654148101806584 ], [ 151.025177001953352, -9.669267654418888 ], [ 151.00711059570358, -9.668852806091309 ], [ 151.022109985351562, -9.661110877990723 ], [ 151.013671875, -9.645628929138127 ], [ 151.000625610352017, -9.654191970825138 ], [ 151.006896972656477, -9.642864227294922 ], [ 151.003311157226676, -9.634154319763184 ], [ 150.952468872070312, -9.612910270690918 ], [ 150.963180541992415, -9.583267211914062 ], [ 151.004180908203125, -9.57655143737793 ] ] ], [ [ [ 152.480560302734375, -9.562221527099553 ], [ 152.489868164062727, -9.567703247070312 ], [ 152.490829467773665, -9.569722175598145 ], [ 152.47833251953125, -9.563334465026799 ], [ 152.480560302734375, -9.562221527099553 ] ] ], [ [ [ 150.47027587890625, -9.566111564636174 ], [ 150.469451904296875, -9.566944122314453 ], [ 150.46417236328125, -9.566944122314453 ], [ 150.467773437500114, -9.561389923095703 ], [ 150.47027587890625, -9.566111564636174 ] ] ], [ [ [ 152.43505859375, -9.550742149352971 ], [ 152.445587158203239, -9.549315452575627 ], [ 152.473617553711165, -9.562221527099553 ], [ 152.415283203125227, -9.568054199218636 ], [ 152.43505859375, -9.550742149352971 ] ] ], [ [ [ 150.369720458984489, -9.490556716918888 ], [ 150.376937866211051, -9.498611450195256 ], [ 150.358062744140625, -9.503054618835392 ], [ 150.356674194336165, -9.4977769851684 ], [ 150.369720458984489, -9.490556716918888 ] ] ], [ [ [ 150.989959716796989, -9.466279029846191 ], [ 150.98304748535179, -9.474041938781681 ], [ 150.97222900390625, -9.469850540161076 ], [ 150.978317260742301, -9.46653938293457 ], [ 150.989959716796989, -9.466279029846191 ] ] ], [ [ [ 150.95416259765625, -9.453333854675293 ], [ 150.966110229492301, -9.459444046020451 ], [ 150.970550537109489, -9.469166755676213 ], [ 150.956954956054801, -9.462944984436035 ], [ 150.95416259765625, -9.453333854675293 ] ] ], [ [ [ 151.940551757812727, -9.390276908874512 ], [ 151.938888549804801, -9.389445304870605 ], [ 151.938125610351676, -9.385255813598576 ], [ 151.941421508789062, -9.387352943420353 ], [ 151.940551757812727, -9.390276908874512 ] ] ], [ [ [ 152.063613891601562, -9.383056640625 ], [ 152.062637329102017, -9.381662368774414 ], [ 152.064163208008267, -9.380558967590275 ], [ 152.064880371093864, -9.381864547729492 ], [ 152.063613891601562, -9.383056640625 ] ] ], [ [ [ 151.946670532227017, -9.382500648498535 ], [ 151.945068359375, -9.380096435546875 ], [ 151.948059082031364, -9.37891960144043 ], [ 151.948715209961165, -9.379836082458439 ], [ 151.946670532227017, -9.382500648498535 ] ] ], [ [ [ 150.392776489257812, -9.380398750305176 ], [ 150.391159057617188, -9.377589225769043 ], [ 150.398910522461051, -9.375408172607365 ], [ 150.396438598632926, -9.37885570526123 ], [ 150.392776489257812, -9.380398750305176 ] ] ], [ [ [ 150.40765380859375, -9.367671966552678 ], [ 150.406005859375, -9.371833801269531 ], [ 150.40240478515625, -9.373520851135197 ], [ 150.401535034179801, -9.371005058288574 ], [ 150.40765380859375, -9.367671966552678 ] ] ], [ [ [ 150.408355712890739, -9.366827011108398 ], [ 150.40850830078125, -9.367128372192326 ], [ 150.407958984375227, -9.367294311523381 ], [ 150.407913208007812, -9.366851806640625 ], [ 150.408355712890739, -9.366827011108398 ] ] ], [ [ [ 150.408355712890739, -9.366827011108398 ], [ 150.4090576171875, -9.365179061889648 ], [ 150.413192749023438, -9.362955093383732 ], [ 150.412658691406591, -9.365511894226074 ], [ 150.408355712890739, -9.366827011108398 ] ] ], [ [ [ 152.026260375976676, -9.346529006957951 ], [ 152.024444580078239, -9.34666633605957 ], [ 152.022781372070426, -9.344443321228027 ], [ 152.024932861328239, -9.343900680541992 ], [ 152.026260375976676, -9.346529006957951 ] ] ], [ [ [ 152.49456787109375, -9.340914726257324 ], [ 152.496597290039176, -9.34105396270752 ], [ 152.496948242187614, -9.341388702392578 ], [ 152.494995117187614, -9.343055725097599 ], [ 152.49456787109375, -9.340914726257324 ] ] ], [ [ [ 150.880310058593864, -9.333539962768555 ], [ 150.884231567382926, -9.334912300109863 ], [ 150.884201049804688, -9.335463523864746 ], [ 150.880615234375114, -9.336029052734375 ], [ 150.880310058593864, -9.333539962768555 ] ] ], [ [ [ 150.689865112304915, -9.333745002746525 ], [ 150.691574096679915, -9.337139129638615 ], [ 150.686141967773551, -9.337321281433049 ], [ 150.68695068359375, -9.332815170288029 ], [ 150.689865112304915, -9.333745002746525 ] ] ], [ [ [ 150.713363647461165, -9.335345268249512 ], [ 150.71144104003929, -9.33371639251709 ], [ 150.712982177734602, -9.332039833068791 ], [ 150.714248657226562, -9.332788467407227 ], [ 150.713363647461165, -9.335345268249512 ] ] ], [ [ [ 150.487442016601562, -9.327259063720703 ], [ 150.623336791992415, -9.387777328491211 ], [ 150.63722229003929, -9.419999122619629 ], [ 150.662368774414062, -9.430809020996037 ], [ 150.737533569335938, -9.425236701965332 ], [ 150.763885498046989, -9.399722099304199 ], [ 150.7979736328125, -9.414087295532227 ], [ 150.84222412109375, -9.487500190734863 ], [ 150.89222717285179, -9.5138902664184 ], [ 150.885559082031477, -9.566944122314453 ], [ 150.864715576171875, -9.58083343505848 ], [ 150.902770996093977, -9.594721794128361 ], [ 150.905624389648665, -9.63243293762207 ], [ 150.92274475097679, -9.628890991210881 ], [ 150.93719482421875, -9.650186538696232 ], [ 150.930145263671875, -9.678268432617131 ], [ 150.910400390625227, -9.694404602050724 ], [ 150.881134033203125, -9.678653717040959 ], [ 150.844665527343864, -9.721624374389592 ], [ 150.855468750000227, -9.666799545288029 ], [ 150.843795776367301, -9.656744003295898 ], [ 150.805221557617188, -9.661463737487736 ], [ 150.803436279296875, -9.677727699279728 ], [ 150.780548095703125, -9.683333396911621 ], [ 150.748947143554688, -9.660610198974609 ], [ 150.692428588867188, -9.671945571899357 ], [ 150.635833740234375, -9.659444808959904 ], [ 150.555145263671875, -9.623397827148438 ], [ 150.460800170898551, -9.642222404479924 ], [ 150.436813354492642, -9.631380081176758 ], [ 150.438690185547102, -9.595788955688477 ], [ 150.523056030273438, -9.552779197692871 ], [ 150.511383056640852, -9.505833625793457 ], [ 150.45887756347679, -9.479319572448674 ], [ 150.426132202148892, -9.417906761169377 ], [ 150.425628662109716, -9.370401382446232 ], [ 150.487442016601562, -9.327259063720703 ] ] ], [ [ [ 152.006988525390739, -9.320899963378906 ], [ 152.004440307617415, -9.319443702697697 ], [ 152.005996704101676, -9.31793022155756 ], [ 152.006973266601562, -9.319106101989689 ], [ 152.006988525390739, -9.320899963378906 ] ] ], [ [ [ 152.52949523925804, -9.314725875854492 ], [ 152.527221679687614, -9.315277099609375 ], [ 152.526382446289404, -9.313611030578556 ], [ 152.527618408203352, -9.313332557678166 ], [ 152.52949523925804, -9.314725875854492 ] ] ], [ [ [ 150.875198364257812, -9.319960594177189 ], [ 150.871093750000227, -9.317021369934082 ], [ 150.877487182617188, -9.312815666198674 ], [ 150.881500244140625, -9.317961692810002 ], [ 150.875198364257812, -9.319960594177189 ] ] ], [ [ [ 153.644027709961051, -9.309033393859806 ], [ 153.641937255859489, -9.306388854980469 ], [ 153.646942138671989, -9.303332328796387 ], [ 153.647506713867301, -9.305555343627816 ], [ 153.644027709961051, -9.309033393859806 ] ] ], [ [ [ 153.670379638671989, -9.305349349975529 ], [ 153.669174194336165, -9.305555343627816 ], [ 153.667770385742188, -9.303332328796387 ], [ 153.670700073242415, -9.303417205810547 ], [ 153.670379638671989, -9.305349349975529 ] ] ], [ [ [ 153.673339843750227, -9.305555343627816 ], [ 153.671951293945312, -9.305555343627816 ], [ 153.671539306640739, -9.302992820739689 ], [ 153.674102783203352, -9.303068161010685 ], [ 153.673339843750227, -9.305555343627816 ] ] ], [ [ [ 153.677505493164062, -9.305555343627816 ], [ 153.675460815429915, -9.302620887756348 ], [ 153.678390502929801, -9.301734924316406 ], [ 153.678329467773665, -9.304722785949707 ], [ 153.677505493164062, -9.305555343627816 ] ] ], [ [ [ 153.665283203125, -9.301110267639103 ], [ 153.664718627929688, -9.303332328796387 ], [ 153.654449462890852, -9.303332328796387 ], [ 153.658340454101676, -9.301943778991642 ], [ 153.665283203125, -9.301110267639103 ] ] ], [ [ [ 152.833053588867301, -9.29416561126709 ], [ 152.835830688476676, -9.295833587646484 ], [ 152.831665039062727, -9.297842025756836 ], [ 152.83088684082054, -9.29552173614502 ], [ 152.833053588867301, -9.29416561126709 ] ] ], [ [ [ 151.968460083007926, -9.295385360717773 ], [ 151.975723266601676, -9.300224304199219 ], [ 151.976104736328239, -9.301943778991642 ], [ 151.964172363281364, -9.29555606842041 ], [ 151.961395263671989, -9.288889884948617 ], [ 151.968460083007926, -9.295385360717773 ] ] ], [ [ [ 150.707626342773665, -9.302153587341309 ], [ 150.712295532226676, -9.31107234954834 ], [ 150.721054077148551, -9.311106681823674 ], [ 150.712677001953239, -9.315170288085938 ], [ 150.692901611328125, -9.295931816101017 ], [ 150.705612182617301, -9.287625312805176 ], [ 150.707626342773665, -9.302153587341309 ] ] ], [ [ [ 153.684997558593977, -9.28083324432373 ], [ 153.698608398437614, -9.287220954894906 ], [ 153.690002441406364, -9.302223205566406 ], [ 153.684722900390625, -9.296666145324707 ], [ 153.684997558593977, -9.28083324432373 ] ] ], [ [ [ 150.789215087890625, -9.279390335082951 ], [ 150.801193237304688, -9.293206214904728 ], [ 150.78065490722679, -9.304338455200195 ], [ 150.779235839843864, -9.286307334899846 ], [ 150.789215087890625, -9.279390335082951 ] ] ], [ [ [ 150.896728515625114, -9.264641761779785 ], [ 150.89759826660179, -9.265441894531193 ], [ 150.898162841796989, -9.268277168273926 ], [ 150.895339965820767, -9.265482902526855 ], [ 150.896728515625114, -9.264641761779785 ] ] ], [ [ [ 151.897506713867301, -9.262221336364746 ], [ 151.927764892578352, -9.284625053405762 ], [ 151.95166015625, -9.282007217407227 ], [ 151.959854125976562, -9.292307853698674 ], [ 151.927505493164062, -9.287776947021484 ], [ 151.906387329101676, -9.27500057220459 ], [ 151.871948242187614, -9.285277366638184 ], [ 151.897506713867301, -9.262221336364746 ] ] ], [ [ [ 150.757247924805142, -9.26175594329834 ], [ 150.772750854492301, -9.287153244018555 ], [ 150.757644653320426, -9.302758216857853 ], [ 150.73397827148483, -9.276068687438965 ], [ 150.757247924805142, -9.26175594329834 ] ] ], [ [ [ 152.90834045410179, -9.258889198303166 ], [ 152.907226562500114, -9.264444351196232 ], [ 152.901382446289062, -9.263334274291992 ], [ 152.903884887695312, -9.25999927520752 ], [ 152.90834045410179, -9.258889198303166 ] ] ], [ [ [ 153.675827026367301, -9.263055801391602 ], [ 153.688613891601676, -9.274443626403809 ], [ 153.687500000000227, -9.276389122009221 ], [ 153.666946411132926, -9.261945724487248 ], [ 153.675827026367301, -9.263055801391602 ] ] ], [ [ [ 152.943603515625114, -9.254166603088379 ], [ 152.941940307617301, -9.254722595214844 ], [ 152.939727783203125, -9.251667022705078 ], [ 152.94497680664108, -9.251173973083496 ], [ 152.943603515625114, -9.254166603088379 ] ] ], [ [ [ 152.557220458984489, -9.250832557678223 ], [ 152.55543518066429, -9.252223014831543 ], [ 152.553604125976676, -9.251529693603402 ], [ 152.556289672851562, -9.249760627746582 ], [ 152.557220458984489, -9.250832557678223 ] ] ], [ [ [ 150.755096435547102, -9.254584312438965 ], [ 150.753082275390625, -9.251585006713867 ], [ 150.754669189453125, -9.249073028564453 ], [ 150.75579833984375, -9.252767562866211 ], [ 150.755096435547102, -9.254584312438965 ] ] ], [ [ [ 150.783859252929688, -9.243362426757812 ], [ 150.782333374023438, -9.240362167358398 ], [ 150.78631591796875, -9.239147186279297 ], [ 150.786819458007926, -9.240578651428166 ], [ 150.783859252929688, -9.243362426757812 ] ] ], [ [ [ 150.754638671875114, -9.240829467773381 ], [ 150.753387451171989, -9.240241050720158 ], [ 150.753280639648551, -9.238263130187931 ], [ 150.755096435547102, -9.239059448242188 ], [ 150.754638671875114, -9.240829467773381 ] ] ], [ [ [ 150.789337158203239, -9.237543106079045 ], [ 150.788360595703125, -9.236264228820744 ], [ 150.79023742675804, -9.234034538268986 ], [ 150.791564941406477, -9.236318588256722 ], [ 150.789337158203239, -9.237543106079045 ] ] ], [ [ [ 152.931671142578239, -9.235834121704045 ], [ 152.930282592773665, -9.234721183776742 ], [ 152.930831909179915, -9.233888626098633 ], [ 152.932785034179801, -9.234721183776742 ], [ 152.931671142578239, -9.235834121704045 ] ] ], [ [ [ 152.765838623046989, -9.240555763244572 ], [ 152.75750732421875, -9.245555877685547 ], [ 152.754440307617301, -9.23972225189209 ], [ 152.764114379882926, -9.23254489898676 ], [ 152.765838623046989, -9.240555763244572 ] ] ], [ [ [ 150.907226562500114, -9.230513572692814 ], [ 150.921981811523665, -9.252113342285156 ], [ 150.89617919921875, -9.26408576965332 ], [ 150.896987915039062, -9.235447883605957 ], [ 150.907226562500114, -9.230513572692814 ] ] ], [ [ [ 150.788528442383267, -9.232643127441349 ], [ 150.787139892578352, -9.232008934020996 ], [ 150.786621093750455, -9.230355262756291 ], [ 150.788513183593977, -9.230098724365234 ], [ 150.788528442383267, -9.232643127441349 ] ] ], [ [ [ 153.1129150390625, -9.218753814697266 ], [ 153.110275268554688, -9.228610992431584 ], [ 153.105560302734602, -9.230554580688477 ], [ 153.100280761718864, -9.22166633605957 ], [ 153.1129150390625, -9.218753814697266 ] ] ], [ [ [ 150.859725952148551, -9.204167366027832 ], [ 150.86518859863304, -9.209839820861816 ], [ 150.884735107421875, -9.211820602416992 ], [ 150.867568969726562, -9.225518226623421 ], [ 150.859725952148551, -9.204167366027832 ] ] ], [ [ [ 150.823638916015739, -9.215794563293457 ], [ 150.8162841796875, -9.214593887329102 ], [ 150.815460205078239, -9.2021484375 ], [ 150.819580078125114, -9.204874038696289 ], [ 150.823638916015739, -9.215794563293457 ] ] ], [ [ [ 152.438049316406364, -9.204998970031681 ], [ 152.435836791992188, -9.204998970031681 ], [ 152.435562133789176, -9.200277328491211 ], [ 152.43695068359375, -9.200833320617676 ], [ 152.438049316406364, -9.204998970031681 ] ] ], [ [ [ 150.23194885253929, -9.195832252502385 ], [ 150.336944580078125, -9.271112442016545 ], [ 150.362503051757812, -9.369998931884766 ], [ 150.386672973632812, -9.386944770812931 ], [ 150.333328247070312, -9.46277904510498 ], [ 150.365554809570312, -9.472223281860295 ], [ 150.340835571289176, -9.521110534667912 ], [ 150.30999755859375, -9.521666526794377 ], [ 150.299728393554801, -9.501944541931152 ], [ 150.246109008789062, -9.483612060546875 ], [ 150.243057250976562, -9.452500343322754 ], [ 150.19721984863304, -9.453056335449219 ], [ 150.158050537109375, -9.425833702087346 ], [ 150.125274658203125, -9.372500419616642 ], [ 150.104995727539176, -9.370555877685547 ], [ 150.095001220703352, -9.3102769851684 ], [ 150.124160766601676, -9.249444961547795 ], [ 150.195007324218864, -9.199444770812988 ], [ 150.23194885253929, -9.195832252502385 ] ] ], [ [ [ 150.204010009765625, -9.175276756286564 ], [ 150.205505371093864, -9.183328628540039 ], [ 150.194290161132812, -9.17780876159668 ], [ 150.19992065429733, -9.17370700836176 ], [ 150.204010009765625, -9.175276756286564 ] ] ], [ [ [ 152.42333984375, -9.159166336059457 ], [ 152.422225952148551, -9.158056259155273 ], [ 152.424438476562727, -9.156111717224064 ], [ 152.42500305175804, -9.157221794128418 ], [ 152.42333984375, -9.159166336059457 ] ] ], [ [ [ 152.681976318359375, -9.09945011138916 ], [ 152.682098388671989, -9.10206413269043 ], [ 152.680130004882812, -9.102825164794865 ], [ 152.679244995117301, -9.09945011138916 ], [ 152.681976318359375, -9.09945011138916 ] ] ], [ [ [ 152.423614501953125, -9.112221717834359 ], [ 152.422225952148551, -9.10805606842041 ], [ 152.424163818359375, -9.096667289733887 ], [ 152.427780151367188, -9.092223167419377 ], [ 152.423614501953125, -9.112221717834359 ] ] ], [ [ [ 151.979873657226676, -8.951555252075195 ], [ 152.000411987304801, -8.969754219055176 ], [ 151.99128723144554, -8.989350318908691 ], [ 151.956939697265852, -8.966776847839355 ], [ 151.979873657226676, -8.951555252075195 ] ] ], [ [ [ 152.456619262695312, -8.946816444396973 ], [ 152.512771606445767, -8.993612289428711 ], [ 152.615829467773551, -8.983611106872502 ], [ 152.736938476562614, -9.025278091430664 ], [ 152.793029785156591, -9.003748893737793 ], [ 152.834442138671875, -9.032831192016602 ], [ 152.835556030273551, -9.071879386901855 ], [ 152.889739990234375, -9.085618019104004 ], [ 152.918334960937614, -9.067776679992619 ], [ 152.949447631835938, -9.083332061767578 ], [ 152.94805908203125, -9.125832557678166 ], [ 152.977783203125455, -9.120833396911564 ], [ 153.023605346679801, -9.16139030456543 ], [ 152.991668701171989, -9.16250038146967 ], [ 152.995559692382926, -9.183611869812012 ], [ 152.979721069335938, -9.199723243713379 ], [ 152.947494506836051, -9.174445152282658 ], [ 152.908050537109375, -9.195279121398869 ], [ 152.966659545898665, -9.225001335144043 ], [ 152.965560913086165, -9.256111145019531 ], [ 152.936386108398665, -9.225278854370117 ], [ 152.831665039062727, -9.26249885559082 ], [ 152.80917358398483, -9.255832672119141 ], [ 152.794448852539176, -9.228055000305176 ], [ 152.783340454101562, -9.236944198608398 ], [ 152.783889770507812, -9.211668014526367 ], [ 152.757781982421875, -9.223610877990609 ], [ 152.743896484375114, -9.179443359375 ], [ 152.734161376953352, -9.173054695129338 ], [ 152.727783203125114, -9.211387634277344 ], [ 152.751937866211165, -9.223610877990609 ], [ 152.735412597656364, -9.260133743286076 ], [ 152.718338012695426, -9.226388931274357 ], [ 152.655548095703125, -9.204998970031681 ], [ 152.642379760742188, -9.182324409484863 ], [ 152.662841796875114, -9.164228439331055 ], [ 152.651947021484602, -9.18194580078125 ], [ 152.670272827148551, -9.198332786560059 ], [ 152.710006713867301, -9.175832748413029 ], [ 152.693893432617188, -9.146666526794377 ], [ 152.664993286132926, -9.138888359069824 ], [ 152.700271606445426, -9.088056564331055 ], [ 152.683059692382926, -9.08861064910883 ], [ 152.65083312988304, -9.115276336669922 ], [ 152.529159545898665, -9.036110877990666 ], [ 152.471115112304688, -9.044722557067814 ], [ 152.509719848633267, -8.994999885559025 ], [ 152.447021484375114, -8.963109970092773 ], [ 152.437774658203239, -8.980001449584961 ], [ 152.422775268554688, -8.97389030456543 ], [ 152.429443359375, -9.010832786560059 ], [ 152.424728393554688, -9.084721565246525 ], [ 152.391937255859375, -8.988888740539494 ], [ 152.456619262695312, -8.946816444396973 ] ] ], [ [ [ 151.914718627929688, -8.901389122009221 ], [ 151.925277709961165, -8.916387557983398 ], [ 151.912780761718864, -8.928056716918888 ], [ 151.901947021484375, -8.912776947021428 ], [ 151.914718627929688, -8.901389122009221 ] ] ], [ [ [ 151.133056640625114, -8.799166679382267 ], [ 151.185272216796989, -8.84194374084467 ], [ 151.197494506835938, -8.870278358459473 ], [ 151.1119384765625, -8.875276565551758 ], [ 151.17333984375, -8.852223396301213 ], [ 151.133056640625114, -8.799166679382267 ] ] ], [ [ [ 151.920562744140625, -8.795832633972111 ], [ 151.92416381835983, -8.802498817443848 ], [ 151.912506103515852, -8.807499885559025 ], [ 151.912216186523779, -8.798054695129338 ], [ 151.920562744140625, -8.795832633972111 ] ] ], [ [ [ 151.031661987304915, -8.794445037841797 ], [ 151.02999877929733, -8.79305362701416 ], [ 151.030838012695312, -8.791666030883789 ], [ 151.03277587890625, -8.79333305358881 ], [ 151.031661987304915, -8.794445037841797 ] ] ], [ [ [ 150.96221923828125, -8.740556716918945 ], [ 150.963333129882812, -8.741945266723633 ], [ 150.959716796875, -8.743611335754338 ], [ 150.95916748046875, -8.742222785949707 ], [ 150.96221923828125, -8.740556716918945 ] ] ], [ [ [ 151.004165649414062, -8.75361156463623 ], [ 151.002777099609489, -8.737778663635197 ], [ 151.0302734375, -8.713054656982365 ], [ 151.019439697265625, -8.726112365722656 ], [ 151.004165649414062, -8.75361156463623 ] ] ], [ [ [ 151.676666259765625, -8.692222595214844 ], [ 151.684432983398438, -8.701464653015137 ], [ 151.671386718750227, -8.71250057220459 ], [ 151.6663818359375, -8.705555915832463 ], [ 151.676666259765625, -8.692222595214844 ] ] ], [ [ [ 150.881668090820426, -8.636944770812988 ], [ 150.887496948242415, -8.639445304870605 ], [ 150.868331909179688, -8.637777328491154 ], [ 150.87445068359375, -8.636944770812988 ], [ 150.881668090820426, -8.636944770812988 ] ] ], [ [ [ 151.305831909179688, -8.632779121398869 ], [ 151.303894042969205, -8.63055419921875 ], [ 151.304992675781364, -8.629165649414062 ], [ 151.306915283203352, -8.630839347839299 ], [ 151.305831909179688, -8.632779121398869 ] ] ], [ [ [ 150.78694152832054, -8.61944580078125 ], [ 150.783615112304801, -8.618056297302189 ], [ 150.789443969726676, -8.615554809570312 ], [ 150.790283203125114, -8.616943359374943 ], [ 150.78694152832054, -8.61944580078125 ] ] ], [ [ [ 150.741943359375114, -8.606389045715275 ], [ 150.740554809570312, -8.605278968811035 ], [ 150.742431640625114, -8.603889465331918 ], [ 150.74311828613304, -8.604997634887695 ], [ 150.741943359375114, -8.606389045715275 ] ] ], [ [ [ 151.356109619140739, -8.593055725097656 ], [ 151.352783203125114, -8.635001182556152 ], [ 151.322494506835938, -8.649168014526367 ], [ 151.309417724609602, -8.620500564575138 ], [ 151.356109619140739, -8.593055725097656 ] ] ], [ [ [ 150.848617553711051, -8.584166526794434 ], [ 150.87110900878929, -8.598334312438851 ], [ 150.87110900878929, -8.609723091125431 ], [ 150.848892211914062, -8.590556144714355 ], [ 150.845840454101562, -8.580000877380314 ], [ 150.848617553711051, -8.584166526794434 ] ] ], [ [ [ 150.844161987304915, -8.574166297912598 ], [ 150.845840454101562, -8.575556755065918 ], [ 150.844451904296989, -8.576945304870549 ], [ 150.843048095703352, -8.575556755065918 ], [ 150.844161987304915, -8.574166297912598 ] ] ], [ [ [ 151.091949462890739, -8.566944122314453 ], [ 151.1058349609375, -8.580000877380314 ], [ 151.100006103515739, -8.606389045715275 ], [ 151.093338012695426, -8.602500915527344 ], [ 151.091949462890739, -8.566944122314453 ] ] ], [ [ [ 150.832778930664517, -8.560555458068848 ], [ 150.840270996093864, -8.569443702697754 ], [ 150.83917236328125, -8.57166576385498 ], [ 150.832504272460938, -8.568887710571289 ], [ 150.832778930664517, -8.560555458068848 ] ] ], [ [ [ 150.28277587890625, -8.565278053283635 ], [ 150.278610229492188, -8.56389045715332 ], [ 150.281951904296989, -8.558889389038029 ], [ 150.2852783203125, -8.56389045715332 ], [ 150.28277587890625, -8.565278053283635 ] ] ], [ [ [ 150.326385498046989, -8.553333282470646 ], [ 150.322784423828125, -8.553333282470646 ], [ 150.321105957031591, -8.550554275512695 ], [ 150.324447631836165, -8.549165725707951 ], [ 150.326385498046989, -8.553333282470646 ] ] ], [ [ [ 150.823883056640966, -8.536667823791447 ], [ 150.817779541015966, -8.538056373596191 ], [ 150.816665649414062, -8.535834312438908 ], [ 150.823883056640966, -8.53055477142334 ], [ 150.823883056640966, -8.536667823791447 ] ] ], [ [ [ 150.296112060546989, -8.519444465637207 ], [ 150.302215576171989, -8.521388053894043 ], [ 150.300827026367301, -8.527776718139648 ], [ 150.294998168945312, -8.52722263336176 ], [ 150.296112060546989, -8.519444465637207 ] ] ], [ [ [ 150.957229614257812, -8.47722339630127 ], [ 150.975006103515852, -8.497501373291016 ], [ 150.97138977050804, -8.557777404785156 ], [ 150.92166137695358, -8.579167366027832 ], [ 150.935363769531477, -8.540044784545898 ], [ 150.924728393554801, -8.509167671203613 ], [ 150.957229614257812, -8.47722339630127 ] ] ], [ [ [ 150.882949829101676, -8.45768928527832 ], [ 150.886672973632812, -8.465554237365723 ], [ 150.884368896484375, -8.47381591796875 ], [ 150.876937866210938, -8.45694446563715 ], [ 150.882949829101676, -8.45768928527832 ] ] ], [ [ [ 150.440277099609375, -8.421388626098576 ], [ 150.438888549804915, -8.41833305358881 ], [ 150.443603515625, -8.41250038146967 ], [ 150.443054199218977, -8.41944503784174 ], [ 150.440277099609375, -8.421388626098576 ] ] ], [ [ [ 150.451660156250227, -8.41250038146967 ], [ 150.45582580566429, -8.416945457458382 ], [ 150.453887939453125, -8.419722557067871 ], [ 150.450836181640625, -8.416389465331974 ], [ 150.451660156250227, -8.41250038146967 ] ] ], [ [ [ 150.889724731445312, -8.409999847412053 ], [ 150.893325805664062, -8.416389465331974 ], [ 150.893325805664062, -8.42722129821766 ], [ 150.886383056640739, -8.403889656066895 ], [ 150.889724731445312, -8.409999847412053 ] ] ], [ [ [ 151.114334106445312, -8.400589942932015 ], [ 151.130279541015739, -8.41472339630127 ], [ 151.127777099609375, -8.487500190734863 ], [ 151.107772827148551, -8.50555515289301 ], [ 151.151672363281477, -8.566944122314453 ], [ 151.146942138671875, -8.600831985473633 ], [ 151.120559692382926, -8.632223129272461 ], [ 151.102493286132926, -8.748332977294922 ], [ 151.126663208007926, -8.799445152282658 ], [ 151.041946411132812, -8.724720954894963 ], [ 151.096389770507926, -8.667498588562012 ], [ 151.133331298828239, -8.589999198913574 ], [ 151.108337402343977, -8.577501296997013 ], [ 151.095550537109602, -8.547499656677189 ], [ 151.018051147461279, -8.550278663635254 ], [ 150.994171142578125, -8.531389236450195 ], [ 151.034164428711165, -8.43638801574707 ], [ 151.114334106445312, -8.400589942932015 ] ] ], [ [ [ 149.926467895507926, -8.390846252441406 ], [ 149.927932739258267, -8.391054153442326 ], [ 149.9278564453125, -8.39216136932373 ], [ 149.925628662109602, -8.39112377166748 ], [ 149.926467895507926, -8.390846252441406 ] ] ], [ [ [ 150.649078369140852, -8.388735771179199 ], [ 150.649932861328466, -8.393027305603027 ], [ 150.644210815430029, -8.394827842712402 ], [ 150.644561767578239, -8.390811920165959 ], [ 150.649078369140852, -8.388735771179199 ] ] ], [ [ [ 150.195556640625, -8.386387825012207 ], [ 150.197784423828239, -8.388609886169377 ], [ 150.196945190429688, -8.390001296997013 ], [ 150.19416809082054, -8.388056755065918 ], [ 150.195556640625, -8.386387825012207 ] ] ], [ [ [ 150.663650512695426, -8.370526313781681 ], [ 150.665161132812614, -8.373230934143066 ], [ 150.66181945800804, -8.373714447021484 ], [ 150.66314697265625, -8.370737075805607 ], [ 150.663650512695426, -8.370526313781681 ] ] ], [ [ [ 150.175003051758154, -8.364444732666016 ], [ 150.177291870117529, -8.366040229797306 ], [ 150.177505493164062, -8.367499351501465 ], [ 150.174163818359602, -8.365833282470646 ], [ 150.175003051758154, -8.364444732666016 ] ] ], [ [ [ 150.596389770507812, -8.350000381469727 ], [ 150.599441528320312, -8.352778434753418 ], [ 150.599166870117301, -8.353055953979492 ], [ 150.593887329101562, -8.350277900695801 ], [ 150.596389770507812, -8.350000381469727 ] ] ], [ [ [ 150.117660522461165, -8.345342636108398 ], [ 150.115570068359489, -8.344928741455078 ], [ 150.114868164062614, -8.343403816223145 ], [ 150.1177978515625, -8.344790458679199 ], [ 150.117660522461165, -8.345342636108398 ] ] ], [ [ [ 150.426666259765739, -8.341667175292969 ], [ 150.425003051757926, -8.341667175292969 ], [ 150.4244384765625, -8.340555191040039 ], [ 150.426666259765739, -8.340276718139648 ], [ 150.426666259765739, -8.341667175292969 ] ] ], [ [ [ 150.84527587890625, -8.325278282165471 ], [ 150.863327026367188, -8.341944694519043 ], [ 150.881668090820426, -8.385554313659611 ], [ 150.882217407226676, -8.396389007568359 ], [ 150.84527587890625, -8.325278282165471 ] ] ], [ [ [ 150.71888732910179, -8.32833194732666 ], [ 150.717773437500114, -8.325278282165471 ], [ 150.719451904297102, -8.323612213134766 ], [ 150.720550537109375, -8.326665878295898 ], [ 150.71888732910179, -8.32833194732666 ] ] ], [ [ [ 150.573883056640625, -8.323056221008187 ], [ 150.577774047851676, -8.325278282165471 ], [ 150.589447021484489, -8.337498664855957 ], [ 150.58416748046875, -8.337498664855957 ], [ 150.573883056640625, -8.323056221008187 ] ] ], [ [ [ 150.822219848632812, -8.316389083862248 ], [ 150.828338623047102, -8.319998741149902 ], [ 150.830215454101562, -8.323105812072754 ], [ 150.816116333007812, -8.318611145019474 ], [ 150.822219848632812, -8.316389083862248 ] ] ], [ [ [ 150.111114501953125, -8.306387901306096 ], [ 150.108886718750227, -8.306387901306096 ], [ 150.109725952148438, -8.301112174987793 ], [ 150.111938476562727, -8.303609848022404 ], [ 150.111114501953125, -8.306387901306096 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-MPL", "NAME_1": "Morobe" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 147.724838256835938, -7.922231197357121 ], [ 147.724777221679688, -7.923367977142277 ], [ 147.722915649414404, -7.923062801361027 ], [ 147.723159790039062, -7.921690940856877 ], [ 147.724838256835938, -7.922231197357121 ] ] ], [ [ [ 147.71148681640625, -7.879811763763428 ], [ 147.712600708007926, -7.883593082427979 ], [ 147.709793090820312, -7.885832786560002 ], [ 147.709259033203239, -7.879504203796387 ], [ 147.71148681640625, -7.879811763763428 ] ] ], [ [ [ 147.627410888671875, -7.746890068054142 ], [ 147.626281738281477, -7.746890068054142 ], [ 147.625839233398438, -7.745554924011174 ], [ 147.627838134765852, -7.746475219726562 ], [ 147.627410888671875, -7.746890068054142 ] ] ], [ [ [ 147.610015869140625, -7.733489036560059 ], [ 147.6129150390625, -7.738214015960693 ], [ 147.604232788085938, -7.7376708984375 ], [ 147.60614013671875, -7.731783866882324 ], [ 147.610015869140625, -7.733489036560059 ] ] ], [ [ [ 147.59461975097679, -7.726353168487549 ], [ 147.596618652343864, -7.726418972015324 ], [ 147.596786499023551, -7.727055072784424 ], [ 147.593109130859489, -7.72684288024891 ], [ 147.59461975097679, -7.726353168487549 ] ] ], [ [ [ 147.623657226562727, -7.722755908966064 ], [ 147.618606567382812, -7.724349975585938 ], [ 147.615890502929801, -7.722073078155518 ], [ 147.622116088867415, -7.719192028045654 ], [ 147.623657226562727, -7.722755908966064 ] ] ], [ [ [ 147.610977172851562, -7.720046997070312 ], [ 147.608993530273551, -7.719350814819336 ], [ 147.608047485351562, -7.717562198638916 ], [ 147.611053466797102, -7.717576026916504 ], [ 147.610977172851562, -7.720046997070312 ] ] ], [ [ [ 147.633026123046989, -7.717596054077148 ], [ 147.626800537109375, -7.718902111053467 ], [ 147.63970947265625, -7.706980228424072 ], [ 147.641616821289062, -7.709462165832406 ], [ 147.633026123046989, -7.717596054077148 ] ] ], [ [ [ 147.540451049804915, -7.696845054626465 ], [ 147.536254882812727, -7.697196006774846 ], [ 147.534896850585938, -7.696412086486816 ], [ 147.537948608398438, -7.69476413726801 ], [ 147.540451049804915, -7.696845054626465 ] ] ], [ [ [ 147.532073974609489, -7.693367004394531 ], [ 147.532867431640852, -7.701550960540715 ], [ 147.523788452148779, -7.695704936981201 ], [ 147.527755737304688, -7.693626880645752 ], [ 147.532073974609489, -7.693367004394531 ] ] ], [ [ [ 147.537948608398438, -7.642877101898137 ], [ 147.5291748046875, -7.643000125884953 ], [ 147.529495239257926, -7.637582778930664 ], [ 147.531738281250114, -7.636985778808594 ], [ 147.537948608398438, -7.642877101898137 ] ] ], [ [ [ 147.496368408203125, -7.604026794433537 ], [ 147.497406005859489, -7.604787826538086 ], [ 147.494171142578239, -7.603333950042725 ], [ 147.495285034179915, -7.603055953979379 ], [ 147.496368408203125, -7.604026794433537 ] ] ], [ [ [ 147.433883666992642, -7.565279960632267 ], [ 147.43305969238304, -7.565555095672607 ], [ 147.432495117187727, -7.565141201019287 ], [ 147.433883666992642, -7.563891887664738 ], [ 147.433883666992642, -7.565279960632267 ] ] ], [ [ [ 147.434249877929915, -7.562437057495117 ], [ 147.433746337890739, -7.562644958496037 ], [ 147.434310913086051, -7.560842037200928 ], [ 147.434722900390625, -7.561256885528564 ], [ 147.434249877929915, -7.562437057495117 ] ] ], [ [ [ 147.406082153320426, -7.55128288269043 ], [ 147.405136108398551, -7.549620151519775 ], [ 147.407058715820654, -7.548151969909668 ], [ 147.407760620117301, -7.549190998077393 ], [ 147.406082153320426, -7.55128288269043 ] ] ], [ [ [ 147.39688110351608, -7.511722087860051 ], [ 147.395904541015852, -7.51082181930542 ], [ 147.396957397460938, -7.509244918823242 ], [ 147.398559570312614, -7.510612010955811 ], [ 147.39688110351608, -7.511722087860051 ] ] ], [ [ [ 147.425704956054688, -7.508313179016056 ], [ 147.423248291015739, -7.508307933807373 ], [ 147.421768188476562, -7.507402896881047 ], [ 147.42567443847679, -7.506155967712346 ], [ 147.425704956054688, -7.508313179016056 ] ] ], [ [ [ 147.328262329101676, -7.495965957641602 ], [ 147.328002929687727, -7.502054214477482 ], [ 147.326568603515966, -7.504290103912354 ], [ 147.324645996093864, -7.4945969581604 ], [ 147.328262329101676, -7.495965957641602 ] ] ], [ [ [ 147.402099609375341, -7.493076801300049 ], [ 147.402938842773551, -7.493907928466683 ], [ 147.402801513671989, -7.495154857635498 ], [ 147.401062011718977, -7.49328422546381 ], [ 147.402099609375341, -7.493076801300049 ] ] ], [ [ [ 147.36573791503929, -7.467359066009521 ], [ 147.369064331054688, -7.472664833068734 ], [ 147.361007690429915, -7.472095012664795 ], [ 147.35963439941429, -7.469051837921143 ], [ 147.36573791503929, -7.467359066009521 ] ] ], [ [ [ 147.237350463867188, -7.463509082794189 ], [ 147.236282348633267, -7.46383810043335 ], [ 147.236175537109375, -7.463030815124512 ], [ 147.237365722656477, -7.462337970733586 ], [ 147.237350463867188, -7.463509082794189 ] ] ], [ [ [ 147.325592041015739, -7.443674087524357 ], [ 147.324203491211165, -7.443437099456787 ], [ 147.321426391601562, -7.438835144042969 ], [ 147.326614379882812, -7.441707134246769 ], [ 147.325592041015739, -7.443674087524357 ] ] ], [ [ [ 147.306442260742415, -7.438180923461914 ], [ 147.305145263671989, -7.437785148620549 ], [ 147.305282592773551, -7.436742782592773 ], [ 147.306396484375, -7.437089920043888 ], [ 147.306442260742415, -7.438180923461914 ] ] ], [ [ [ 147.302886962890739, -7.43434476852417 ], [ 147.300628662109716, -7.433004856109562 ], [ 147.301284790039176, -7.431357860565186 ], [ 147.305145263671989, -7.432765960693303 ], [ 147.302886962890739, -7.43434476852417 ] ] ], [ [ [ 147.348342895507812, -7.432319164276123 ], [ 147.350738525390739, -7.440162181854248 ], [ 147.340011596679915, -7.439334869384709 ], [ 147.340789794922102, -7.43341588973999 ], [ 147.348342895507812, -7.432319164276123 ] ] ], [ [ [ 147.270996093750455, -7.431931972503605 ], [ 147.267547607422102, -7.429931163787842 ], [ 147.270492553711279, -7.426266193389893 ], [ 147.272430419921875, -7.43062782287592 ], [ 147.270996093750455, -7.431931972503605 ] ] ], [ [ [ 147.253982543945426, -7.396389007568359 ], [ 147.247482299804915, -7.405550956726017 ], [ 147.275329589843977, -7.399630069732609 ], [ 147.279052734375114, -7.414384841918888 ], [ 147.256240844726562, -7.43360519409174 ], [ 147.23225402832054, -7.411275863647461 ], [ 147.253982543945426, -7.396389007568359 ] ] ], [ [ [ 147.249099731445426, -7.384912967681885 ], [ 147.256011962890625, -7.385453224182129 ], [ 147.256607055664062, -7.386868953704834 ], [ 147.24690246582054, -7.391276836395207 ], [ 147.249099731445426, -7.384912967681885 ] ] ], [ [ [ 147.223937988281364, -7.377755165100041 ], [ 147.220626831054915, -7.374780178070068 ], [ 147.22161865234375, -7.372243881225529 ], [ 147.225997924804801, -7.374950885772705 ], [ 147.223937988281364, -7.377755165100041 ] ] ], [ [ [ 147.224365234375, -7.34819221496582 ], [ 147.217346191406477, -7.35298490524292 ], [ 147.211105346680142, -7.353486061096191 ], [ 147.2169189453125, -7.348121166229248 ], [ 147.224365234375, -7.34819221496582 ] ] ], [ [ [ 147.205566406250227, -7.343903064727726 ], [ 147.206832885742188, -7.339312076568604 ], [ 147.210922241211051, -7.340589046478215 ], [ 147.210739135742301, -7.342764854431152 ], [ 147.205566406250227, -7.343903064727726 ] ] ], [ [ [ 147.160202026367188, -7.244668960571289 ], [ 147.154846191406364, -7.245639801025334 ], [ 147.153472900390852, -7.244720935821476 ], [ 147.156112670898665, -7.240979194641113 ], [ 147.160202026367188, -7.244668960571289 ] ] ], [ [ [ 147.910507202148665, -6.761181831359863 ], [ 147.911941528320312, -6.764791965484619 ], [ 147.910552978515625, -6.766111850738469 ], [ 147.906784057617529, -6.763659954070988 ], [ 147.910507202148665, -6.761181831359863 ] ] ], [ [ [ 147.903060913086165, -6.756872177124023 ], [ 147.904281616211051, -6.762835025787354 ], [ 147.89582824707054, -6.761202812194824 ], [ 147.899841308593977, -6.757160186767521 ], [ 147.903060913086165, -6.756872177124023 ] ] ], [ [ [ 147.918502807617301, -6.760283946990967 ], [ 147.915924072265739, -6.758854866027832 ], [ 147.916915893554688, -6.756567001342717 ], [ 147.918365478515739, -6.757481098174992 ], [ 147.918502807617301, -6.760283946990967 ] ] ], [ [ [ 147.794219970703239, -6.698039054870549 ], [ 147.793182373046989, -6.697761058807316 ], [ 147.793258666992188, -6.697068214416504 ], [ 147.79450988769554, -6.697206974029541 ], [ 147.794219970703239, -6.698039054870549 ] ] ], [ [ [ 147.860900878906364, -6.653679847717285 ], [ 147.86317443847679, -6.655407905578613 ], [ 147.86317443847679, -6.656239032745361 ], [ 147.858810424804915, -6.655901908874512 ], [ 147.860900878906364, -6.653679847717285 ] ] ], [ [ [ 147.859161376953352, -6.647221088409367 ], [ 147.858642578125227, -6.646913051605225 ], [ 147.859725952148438, -6.645555019378548 ], [ 147.860076904296875, -6.646317958831673 ], [ 147.859161376953352, -6.647221088409367 ] ] ], [ [ [ 147.863250732421875, -6.645360946655217 ], [ 147.8638916015625, -6.64770603179926 ], [ 147.862777709960938, -6.64874792098999 ], [ 147.861953735351676, -6.645571231841984 ], [ 147.863250732421875, -6.645360946655217 ] ] ], [ [ [ 147.866622924804801, -6.631700038909855 ], [ 147.867782592773665, -6.634160995483398 ], [ 147.862854003906364, -6.642653942108154 ], [ 147.863113403320312, -6.639460086822453 ], [ 147.866622924804801, -6.631700038909855 ] ] ], [ [ [ 147.863845825195426, -6.628026008605957 ], [ 147.862045288086051, -6.627779960632324 ], [ 147.861663818359489, -6.619722843170109 ], [ 147.86273193359375, -6.625662803649902 ], [ 147.863845825195426, -6.628026008605957 ] ] ], [ [ [ 147.60592651367233, -6.09333610534668 ], [ 147.603637695312955, -6.091877937316895 ], [ 147.603805541992415, -6.090384960174561 ], [ 147.605865478515852, -6.09201717376709 ], [ 147.60592651367233, -6.09333610534668 ] ] ], [ [ [ 147.59846496582054, -6.08316707611084 ], [ 147.594985961914062, -6.080252170562744 ], [ 147.595062255859489, -6.078378200530949 ], [ 147.596038818359375, -6.079101085662785 ], [ 147.59846496582054, -6.08316707611084 ] ] ], [ [ [ 148.117767333984375, -5.973957061767578 ], [ 148.116455078125, -5.974166870117188 ], [ 148.116394042968864, -5.97333288192749 ], [ 148.117492675781364, -5.972846984863281 ], [ 148.117767333984375, -5.973957061767578 ] ] ], [ [ [ 148.184097290039176, -5.97333288192749 ], [ 148.182785034179688, -5.97333288192749 ], [ 148.182296752929915, -5.972498893737793 ], [ 148.183197021484375, -5.971806049346924 ], [ 148.184097290039176, -5.97333288192749 ] ] ], [ [ [ 148.120559692382812, -5.960694789886418 ], [ 148.119232177734489, -5.960416793823185 ], [ 148.119445800781364, -5.959166049957275 ], [ 148.120071411132812, -5.959236145019474 ], [ 148.120559692382812, -5.960694789886418 ] ] ], [ [ [ 148.039093017578239, -5.946874141693058 ], [ 148.032424926757926, -5.950276851654053 ], [ 148.026855468750227, -5.963877201080265 ], [ 148.022750854492529, -5.956669807434025 ], [ 148.029861450195312, -5.948265075683537 ], [ 148.039093017578239, -5.946874141693058 ] ] ], [ [ [ 148.129791259765625, -5.915903091430607 ], [ 148.128540039062955, -5.915278911590462 ], [ 148.129165649414176, -5.91395902633667 ], [ 148.130493164062614, -5.914722919464054 ], [ 148.129791259765625, -5.915903091430607 ] ] ], [ [ [ 147.333053588867529, -5.915555000305176 ], [ 147.331939697265625, -5.911387920379639 ], [ 147.333618164062614, -5.910555839538574 ], [ 147.334716796875114, -5.912221908569336 ], [ 147.333053588867529, -5.915555000305176 ] ] ], [ [ [ 148.090759277343977, -5.911873817443791 ], [ 148.089447021484489, -5.911387920379639 ], [ 148.089233398437727, -5.910346984863281 ], [ 148.090347290039176, -5.910417079925537 ], [ 148.090759277343977, -5.911873817443791 ] ] ], [ [ [ 148.038330078125114, -5.908611774444523 ], [ 148.03778076171875, -5.909790992736816 ], [ 148.033813476562841, -5.90826416015625 ], [ 148.033950805664176, -5.907567977905273 ], [ 148.038330078125114, -5.908611774444523 ] ] ], [ [ [ 148.01333618164108, -5.904097080230599 ], [ 148.013885498047102, -5.901668071746826 ], [ 148.017700195312727, -5.901875019073486 ], [ 148.01673889160179, -5.903021812438965 ], [ 148.01333618164108, -5.904097080230599 ] ] ], [ [ [ 148.051116943359489, -5.895833015441838 ], [ 148.05104064941429, -5.896249771118107 ], [ 148.049377441406477, -5.895902156829834 ], [ 148.050765991211051, -5.895348072051945 ], [ 148.051116943359489, -5.895833015441838 ] ] ], [ [ [ 147.945297241211051, -5.895281791687012 ], [ 147.945144653320312, -5.899951934814453 ], [ 147.931976318359375, -5.898234844207764 ], [ 147.942352294922102, -5.890498161315918 ], [ 147.945297241211051, -5.895281791687012 ] ] ], [ [ [ 147.927322387695426, -5.846471786498967 ], [ 147.926147460937727, -5.845513820648137 ], [ 147.926773071289062, -5.844089984893799 ], [ 147.92823791503929, -5.845056056976318 ], [ 147.927322387695426, -5.846471786498967 ] ] ], [ [ [ 147.931671142578352, -5.840555191039982 ], [ 147.930557250977017, -5.839723110198975 ], [ 147.930557250977017, -5.838333129882812 ], [ 147.931945800781364, -5.838889122009277 ], [ 147.931671142578352, -5.840555191039982 ] ] ], [ [ [ 147.990280151367188, -5.839723110198975 ], [ 147.988616943359375, -5.838611125946045 ], [ 147.989440917968977, -5.837223052978516 ], [ 147.991394042968977, -5.838333129882812 ], [ 147.990280151367188, -5.839723110198975 ] ] ], [ [ [ 148.03472900390625, -5.834929943084717 ], [ 148.033843994140625, -5.833332061767578 ], [ 148.03472900390625, -5.832847118377629 ], [ 148.035278320312614, -5.833611011505127 ], [ 148.03472900390625, -5.834929943084717 ] ] ], [ [ [ 146.774505615234602, -5.843875885009766 ], [ 146.798614501953466, -5.858057022094727 ], [ 146.833694458007926, -5.83567476272583 ], [ 146.865280151367415, -5.836111068725586 ], [ 146.90249633789108, -5.855978012084961 ], [ 146.931671142578352, -5.90388822555542 ], [ 146.999450683593864, -5.938610076904297 ], [ 147.051177978515625, -5.910324096679631 ], [ 147.090698242187727, -5.959664821624699 ], [ 147.140930175781364, -5.948050022125187 ], [ 147.208465576171875, -5.962103843688965 ], [ 147.268890380859602, -5.915555000305176 ], [ 147.316207885742301, -5.937957763671818 ], [ 147.339080810547102, -5.918111801147461 ], [ 147.371948242187614, -5.958889961242619 ], [ 147.445327758789517, -5.966475009918213 ], [ 147.624481201171989, -6.109792232513428 ], [ 147.711883544921875, -6.271092891693115 ], [ 147.773635864257926, -6.291243076324463 ], [ 147.810974121093864, -6.324722766876221 ], [ 147.807907104492415, -6.354538917541504 ], [ 147.852951049804688, -6.431487083435002 ], [ 147.830825805664062, -6.525767803192139 ], [ 147.851104736328125, -6.575139045715275 ], [ 147.819091796875, -6.587868213653564 ], [ 147.855941772461051, -6.592597007751465 ], [ 147.85791015625, -6.624859809875488 ], [ 147.863616943359489, -6.629649162292424 ], [ 147.8104248046875, -6.692864894866943 ], [ 147.765777587890739, -6.697498798370304 ], [ 147.74781799316429, -6.70835018157959 ], [ 147.667602539062841, -6.6966872215271 ], [ 147.647552490234489, -6.711020946502629 ], [ 147.581558227539176, -6.708716869354191 ], [ 147.56867980957054, -6.730445861816406 ], [ 147.577133178711051, -6.74721097946167 ], [ 147.392562866211279, -6.718891143798828 ], [ 147.342987060546875, -6.747253894805851 ], [ 147.20173645019554, -6.737579822540283 ], [ 147.149536132812614, -6.703573226928711 ], [ 147.080490112304801, -6.706124782562256 ], [ 147.032714843750227, -6.736964225769043 ], [ 146.97833251953125, -6.737222194671631 ], [ 146.967330932617415, -6.742928981781006 ], [ 146.969223022461165, -6.747276782989445 ], [ 146.96333312988304, -6.746943950653019 ], [ 146.958618164062614, -6.755506992340031 ], [ 146.95391845703125, -6.755842208862305 ], [ 146.952804565429801, -6.758479118347111 ], [ 146.95440673828125, -6.756466865539551 ], [ 146.957839965820312, -6.756340980529728 ], [ 146.961639404296989, -6.753368854522648 ], [ 146.946685791015852, -6.965589046478215 ], [ 147.039962768554915, -7.058537006378117 ], [ 147.070281982422102, -7.013609886169377 ], [ 147.04591369628929, -7.06144189834589 ], [ 147.047332763672216, -7.076912879943848 ], [ 147.070953369140739, -7.081467151641846 ], [ 147.0736083984375, -7.113334178924561 ], [ 147.055313110351676, -7.146286010742131 ], [ 147.092330932617301, -7.167283058166447 ], [ 147.133941650390625, -7.220541954040471 ], [ 147.125091552734489, -7.299276828765869 ], [ 147.152221679687614, -7.305555820465088 ], [ 147.129028320312727, -7.327003002166634 ], [ 147.156372070312614, -7.34290885925293 ], [ 147.143371582031477, -7.377570152282715 ], [ 147.168609619140739, -7.385025024414062 ], [ 147.17958068847679, -7.426072120666504 ], [ 147.199920654297216, -7.428854942321777 ], [ 147.179931640625, -7.463823795318547 ], [ 147.224060058593977, -7.463366031646729 ], [ 147.221298217773438, -7.495037078857365 ], [ 147.265090942382926, -7.461441993713379 ], [ 147.261993408203239, -7.476381778717041 ], [ 147.292175292968864, -7.477549076080265 ], [ 147.266281127929801, -7.496270179748535 ], [ 147.283889770507812, -7.503849983215218 ], [ 147.300491333007812, -7.489425182342529 ], [ 147.303680419922216, -7.51445484161377 ], [ 147.364166259765625, -7.507777214050236 ], [ 147.345932006836165, -7.529497146606388 ], [ 147.375000000000114, -7.525379180908089 ], [ 147.388153076171989, -7.575813770294133 ], [ 147.413604736328352, -7.554444789886475 ], [ 147.433883666992642, -7.582778930664006 ], [ 147.466094970703352, -7.589176177978459 ], [ 147.444595336914062, -7.594101905822754 ], [ 147.44721984863304, -7.608057022094727 ], [ 147.434249877929915, -7.606465816497746 ], [ 147.434906005859716, -7.588719844818058 ], [ 147.433380126953466, -7.610879898071289 ], [ 147.471939086914062, -7.608889102935791 ], [ 147.508895874023551, -7.643603801727238 ], [ 147.516647338867415, -7.668172836303654 ], [ 147.487594604492188, -7.676030158996582 ], [ 147.504348754882812, -7.684124946594238 ], [ 147.498184204101562, -7.696485042571965 ], [ 147.577056884765625, -7.709963798522892 ], [ 147.591110229492301, -7.742778778076172 ], [ 147.573303222656477, -7.759106159210148 ], [ 147.59222412109375, -7.785417079925537 ], [ 147.595672607421989, -7.756218910217285 ], [ 147.608474731445654, -7.777159214019775 ], [ 147.664550781250341, -7.791488170623779 ], [ 147.678878784179688, -7.821646213531437 ], [ 147.663055419921875, -7.829998970031681 ], [ 147.687423706054801, -7.830358982086182 ], [ 147.69281005859375, -7.908874988555908 ], [ 147.714965820312727, -7.942296028137207 ], [ 147.76191711425804, -7.954988956451416 ], [ 147.786422729492301, -7.930871009826603 ], [ 147.832489013672102, -7.954973220825195 ], [ 147.866134643554801, -7.940064907073918 ], [ 147.961044311523665, -8.010536193847656 ], [ 147.264205932617188, -8.004534721374512 ], [ 147.203613281250227, -8.032334327697754 ], [ 147.161712646484489, -8.005234718322754 ], [ 147.004119873046989, -8.004434585571232 ], [ 146.911117553711051, -7.959935188293457 ], [ 146.863311767578125, -7.988033771514893 ], [ 146.820205688476562, -7.989436149597168 ], [ 146.784210205078352, -7.933434963226318 ], [ 146.73760986328125, -7.950435161590576 ], [ 146.721618652343977, -7.900935173034668 ], [ 146.731811523437614, -7.824034214019662 ], [ 146.490707397461051, -7.651533126831055 ], [ 146.409118652343864, -7.60783576965332 ], [ 146.111206054687841, -7.548233985900879 ], [ 146.07861328125, -7.493234157562256 ], [ 146.063018798828352, -7.376335144042969 ], [ 145.74201965332054, -7.158435821533203 ], [ 145.793411254882926, -7.086533069610596 ], [ 145.905319213867415, -7.095035076141301 ], [ 145.927413940429915, -6.984435081481934 ], [ 146.003509521484602, -6.896535873413086 ], [ 146.015609741210938, -6.841134071350041 ], [ 145.987411499023551, -6.740635871887207 ], [ 146.0294189453125, -6.689435005187988 ], [ 146.136215209960938, -6.220036029815674 ], [ 146.11091613769554, -6.182134151458683 ], [ 145.903717041015625, -6.064033031463566 ], [ 145.862106323242529, -5.996534824371338 ], [ 146.498611450195312, -5.993234157562199 ], [ 146.674011230468864, -5.891334056854191 ], [ 146.716812133789062, -5.884635925292969 ], [ 146.767868041992188, -5.832235813140869 ], [ 146.774505615234602, -5.843875885009766 ] ] ], [ [ [ 148.00416564941429, -5.831805229186955 ], [ 148.006668090820426, -5.832429885864201 ], [ 148.00721740722679, -5.833611011505127 ], [ 148.003753662109489, -5.834167003631592 ], [ 148.00416564941429, -5.831805229186955 ] ] ], [ [ [ 147.99000549316429, -5.833611011505127 ], [ 147.988616943359375, -5.832500934600773 ], [ 147.989715576171875, -5.830834865570068 ], [ 147.991104125976562, -5.832222938537541 ], [ 147.99000549316429, -5.833611011505127 ] ] ], [ [ [ 148.017761230468864, -5.8301100730896 ], [ 148.022262573242301, -5.830733776092529 ], [ 148.02203369140625, -5.832759857177734 ], [ 148.017227172851562, -5.833332061767578 ], [ 148.017761230468864, -5.8301100730896 ] ] ], [ [ [ 147.988143920898665, -5.827219963073674 ], [ 147.98309326171875, -5.82166576385498 ], [ 147.983367919922102, -5.810657024383488 ], [ 147.990264892578239, -5.821741104125977 ], [ 147.988143920898665, -5.827219963073674 ] ] ], [ [ [ 147.984756469726562, -5.804977893829346 ], [ 147.985321044921875, -5.806128978729248 ], [ 147.983871459960938, -5.806671142578125 ], [ 147.983871459960938, -5.804977893829346 ], [ 147.984756469726562, -5.804977893829346 ] ] ], [ [ [ 147.978820800781364, -5.80479097366333 ], [ 147.97651672363304, -5.803850173950138 ], [ 147.976394653320426, -5.801691055297852 ], [ 147.980224609375, -5.80401420593256 ], [ 147.978820800781364, -5.80479097366333 ] ] ], [ [ [ 148.040023803711165, -5.800036907196045 ], [ 148.039459228515852, -5.801437854766846 ], [ 148.038284301757926, -5.800868034362793 ], [ 148.039657592773892, -5.799204826354867 ], [ 148.040023803711165, -5.800036907196045 ] ] ], [ [ [ 147.972579956054801, -5.804257869720459 ], [ 147.969223022461165, -5.800342082977238 ], [ 147.969970703125, -5.79796314239502 ], [ 147.97357177734375, -5.802742004394474 ], [ 147.972579956054801, -5.804257869720459 ] ] ], [ [ [ 148.05194091796875, -5.798612117767334 ], [ 148.050491333007926, -5.797500133514291 ], [ 148.051330566406364, -5.796543121337834 ], [ 148.052154541015625, -5.796944141387883 ], [ 148.05194091796875, -5.798612117767334 ] ] ], [ [ [ 147.967224121093864, -5.797778129577637 ], [ 147.96638488769554, -5.797500133514291 ], [ 147.965560913085938, -5.794722080230713 ], [ 147.9677734375, -5.794722080230713 ], [ 147.967224121093864, -5.797778129577637 ] ] ], [ [ [ 147.944534301757926, -5.789875984191838 ], [ 147.943618774414062, -5.787825107574406 ], [ 147.94476318359375, -5.78673601150507 ], [ 147.946044921875114, -5.788413047790471 ], [ 147.944534301757926, -5.789875984191838 ] ] ], [ [ [ 148.113052368164176, -5.526390075683594 ], [ 148.108901977539176, -5.527567863464299 ], [ 148.114822387695426, -5.513453006744328 ], [ 148.116668701171989, -5.521083831787109 ], [ 148.113052368164176, -5.526390075683594 ] ] ], [ [ [ 147.79035949707054, -5.461064815521183 ], [ 147.843536376953239, -5.465350151062012 ], [ 147.898025512695312, -5.526619911193848 ], [ 147.99090576171875, -5.542810916900578 ], [ 148.048034667968977, -5.582787036895752 ], [ 148.084716796875114, -5.634444236755371 ], [ 148.058258056640625, -5.765340805053711 ], [ 148.034439086914062, -5.818333148956299 ], [ 148.017745971679688, -5.810713768005314 ], [ 148.020721435547102, -5.827950954437199 ], [ 147.99798583984375, -5.831352233886662 ], [ 147.97151184082054, -5.788788795471191 ], [ 147.861694335937727, -5.742736816406193 ], [ 147.858016967773665, -5.696619033813477 ], [ 147.79925537109375, -5.669793128967285 ], [ 147.759826660156477, -5.611560821533203 ], [ 147.749237060547216, -5.501802921295109 ], [ 147.771926879882926, -5.460289955139103 ], [ 147.79035949707054, -5.461064815521183 ] ] ], [ [ [ 147.744522094726562, -5.420785903930664 ], [ 147.744796752929801, -5.421619892120361 ], [ 147.74305725097679, -5.421759128570557 ], [ 147.743133544922216, -5.420993804931584 ], [ 147.744522094726562, -5.420785903930664 ] ] ], [ [ [ 148.080490112304801, -5.37388801574707 ], [ 148.104995727539062, -5.385276794433594 ], [ 148.11555480957054, -5.415555000305119 ], [ 148.087783813476676, -5.447778224945068 ], [ 148.051116943359489, -5.423888206481934 ], [ 148.058334350586165, -5.381667137145939 ], [ 148.080490112304801, -5.37388801574707 ] ] ], [ [ [ 147.543060302734375, -5.298333168029785 ], [ 147.5413818359375, -5.296945095062199 ], [ 147.542495727539062, -5.295557022094727 ], [ 147.543609619140739, -5.296945095062199 ], [ 147.543060302734375, -5.298333168029785 ] ] ], [ [ [ 147.591979980468977, -5.282991886138916 ], [ 147.613082885742188, -5.28488111495966 ], [ 147.628250122070426, -5.314393997192326 ], [ 147.604156494140852, -5.342862129211426 ], [ 147.579299926757812, -5.345884799957219 ], [ 147.55340576171875, -5.330926895141488 ], [ 147.555053710937614, -5.298227787017709 ], [ 147.591979980468977, -5.282991886138916 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-NCD", "NAME_1": "National Capital District" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 147.180282592773438, -9.492222785949707 ], [ 147.143890380859375, -9.48430347442627 ], [ 147.156143188476676, -9.460613250732422 ], [ 147.127227783203125, -9.419999122619629 ], [ 147.084594726562727, -9.422065734863281 ], [ 147.101119995117188, -9.390834808349553 ], [ 147.179519653320312, -9.356835365295353 ], [ 147.271209716796875, -9.40423393249506 ], [ 147.287414550781364, -9.462735176086426 ], [ 147.276947021484375, -9.510556221008244 ], [ 147.260833740234602, -9.484999656677246 ], [ 147.242782592773551, -9.486388206481877 ], [ 147.239715576171989, -9.504443168640137 ], [ 147.258895874023438, -9.521110534667912 ], [ 147.243331909179801, -9.540278434753304 ], [ 147.180282592773438, -9.492222785949707 ] ] ], [ [ [ 147.1246337890625, -9.43253231048584 ], [ 147.1295166015625, -9.436819076538086 ], [ 147.125885009765625, -9.441933631896973 ], [ 147.122116088867188, -9.436540603637695 ], [ 147.1246337890625, -9.43253231048584 ] ] ], [ [ [ 147.0927734375, -9.446925163269043 ], [ 147.110275268554688, -9.433055877685547 ], [ 147.112777709960938, -9.47611141204834 ], [ 147.093612670898551, -9.478886604309025 ], [ 147.092498779296875, -9.461943626403809 ], [ 147.07666015625, -9.46833324432373 ], [ 147.058334350586051, -9.446623802185002 ], [ 147.0927734375, -9.446925163269043 ] ] ], [ [ [ 147.118331909179688, -9.472498893737793 ], [ 147.118606567382926, -9.487777709960938 ], [ 147.117218017578239, -9.488333702087402 ], [ 147.113052368164176, -9.48305606842041 ], [ 147.118331909179688, -9.472498893737793 ] ] ], [ [ [ 147.11749267578125, -9.497501373291016 ], [ 147.11639404296875, -9.49555492401123 ], [ 147.119171142578239, -9.490832328796387 ], [ 147.120559692382812, -9.49305534362793 ], [ 147.11749267578125, -9.497501373291016 ] ] ], [ [ [ 147.047500610351562, -9.508055686950684 ], [ 147.06361389160179, -9.516387939453125 ], [ 147.081390380859489, -9.512778282165471 ], [ 147.063049316406364, -9.523056983947697 ], [ 147.038894653320312, -9.514165878295898 ], [ 147.047500610351562, -9.508055686950684 ] ] ], [ [ [ 147.178604125976562, -9.519166946411076 ], [ 147.17500305175804, -9.514165878295898 ], [ 147.177505493164176, -9.509444236755314 ], [ 147.179718017578125, -9.512222290039062 ], [ 147.178604125976562, -9.519166946411076 ] ] ], [ [ [ 147.091659545898551, -9.51249980926508 ], [ 147.095840454101562, -9.515556335449219 ], [ 147.086395263671875, -9.514721870422363 ], [ 147.086944580078239, -9.514165878295898 ], [ 147.091659545898551, -9.51249980926508 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-NIK", "NAME_1": "New Ireland" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 152.90943908691429, -4.833610057830754 ], [ 152.907226562500114, -4.83055591583252 ], [ 152.908889770507926, -4.826943874359131 ], [ 152.911666870117529, -4.829165935516357 ], [ 152.90943908691429, -4.833610057830754 ] ] ], [ [ [ 152.849700927734375, -4.824644088745117 ], [ 152.845611572265739, -4.822768211364746 ], [ 152.8453369140625, -4.820265769958496 ], [ 152.848129272461051, -4.821097850799504 ], [ 152.849700927734375, -4.824644088745117 ] ] ], [ [ [ 152.85772705078125, -4.799308776855469 ], [ 152.858398437500114, -4.813086032867375 ], [ 152.830230712890625, -4.801795959472656 ], [ 152.847991943359375, -4.78679704666132 ], [ 152.85772705078125, -4.799308776855469 ] ] ], [ [ [ 152.776000976562614, -4.725646972656193 ], [ 152.772949218750114, -4.722589015960693 ], [ 152.773025512695312, -4.717177867889291 ], [ 152.776916503906477, -4.720543861389103 ], [ 152.776000976562614, -4.725646972656193 ] ] ], [ [ [ 152.764495849609489, -4.686642169952393 ], [ 152.771469116211051, -4.693966865539551 ], [ 152.77102661132858, -4.710562229156437 ], [ 152.761184692382812, -4.697495937347412 ], [ 152.764495849609489, -4.686642169952393 ] ] ], [ [ [ 153.070831298828352, -4.209166049957275 ], [ 153.068893432617415, -4.208055973052922 ], [ 153.07000732421875, -4.206111907958928 ], [ 153.072494506835938, -4.207499980926457 ], [ 153.070831298828352, -4.209166049957275 ] ] ], [ [ [ 152.981674194335938, -4.069167137145996 ], [ 152.985839843750114, -4.072778224945068 ], [ 152.986114501953352, -4.074443817138672 ], [ 152.978332519531477, -4.070834159851017 ], [ 152.981674194335938, -4.069167137145996 ] ] ], [ [ [ 153.616668701171875, -4.025832176208439 ], [ 153.613052368164062, -4.025269031524658 ], [ 153.621017456054688, -4.022530078887883 ], [ 153.620391845703125, -4.024336814880371 ], [ 153.616668701171875, -4.025832176208439 ] ] ], [ [ [ 153.64471435546875, -4.011177062988224 ], [ 153.662796020507812, -4.104515075683537 ], [ 153.625274658203352, -4.139388084411621 ], [ 153.568893432617188, -4.086667060852051 ], [ 153.64471435546875, -4.011177062988224 ] ] ], [ [ [ 153.70611572265625, -3.998611927032357 ], [ 153.726104736328466, -3.999444007873478 ], [ 153.743057250976676, -4.030279159545842 ], [ 153.718338012695312, -4.043055057525635 ], [ 153.69374084472679, -4.020471096038705 ], [ 153.6553955078125, -4.024037837982178 ], [ 153.70611572265625, -3.998611927032357 ] ] ], [ [ [ 152.347381591797102, -3.699464082717896 ], [ 152.3470458984375, -3.698071956634521 ], [ 152.3486328125, -3.697864055633488 ], [ 152.348907470703352, -3.698837995529175 ], [ 152.347381591797102, -3.699464082717896 ] ] ], [ [ [ 153.193450927734602, -3.532619953155461 ], [ 153.208694458007812, -3.533318042755127 ], [ 153.210067749023665, -3.537769079208374 ], [ 153.198852539062614, -3.545283079147339 ], [ 153.193450927734602, -3.532619953155461 ] ] ], [ [ [ 153.188598632812614, -3.522742033004761 ], [ 153.1865234375, -3.521627902984505 ], [ 153.1865234375, -3.519959926605168 ], [ 153.189010620117188, -3.520098924636841 ], [ 153.188598632812614, -3.522742033004761 ] ] ], [ [ [ 153.20722961425804, -3.507009983062687 ], [ 153.210693359375, -3.508472919464111 ], [ 153.21200561523483, -3.510767936706429 ], [ 153.207244873046989, -3.51049900054926 ], [ 153.20722961425804, -3.507009983062687 ] ] ], [ [ [ 153.210342407226676, -3.506036043167114 ], [ 153.20895385742233, -3.505687952041569 ], [ 153.20895385742233, -3.504921913146973 ], [ 153.209655761718977, -3.5047829151153 ], [ 153.210342407226676, -3.506036043167114 ] ] ], [ [ [ 153.188735961914517, -3.503259897231999 ], [ 153.186248779297102, -3.514863014221191 ], [ 153.171005249023551, -3.504652976989689 ], [ 153.190124511718864, -3.49755597114563 ], [ 153.188735961914517, -3.503259897231999 ] ] ], [ [ [ 152.231674194336051, -3.454165935516357 ], [ 152.23500061035179, -3.457221984863281 ], [ 152.233612060546875, -3.459166049957162 ], [ 152.230560302734375, -3.45638990402216 ], [ 152.231674194336051, -3.454165935516357 ] ] ], [ [ [ 153.215011596679801, -3.430829048156738 ], [ 153.245681762695312, -3.47974705696106 ], [ 153.244812011719205, -3.498899936675969 ], [ 153.197463989257926, -3.492965936660767 ], [ 153.172531127929801, -3.458385944366455 ], [ 153.215011596679801, -3.430829048156738 ] ] ], [ [ [ 154.723236083984489, -3.383727073669377 ], [ 154.725463867187727, -3.383760929107666 ], [ 154.727157592773551, -3.387482881546021 ], [ 154.723800659179688, -3.387830972671509 ], [ 154.723236083984489, -3.383727073669377 ] ] ], [ [ [ 154.727401733398551, -3.376907110214177 ], [ 154.74568176269554, -3.416007995605469 ], [ 154.751708984375, -3.440010070800724 ], [ 154.731201171875227, -3.465682029724121 ], [ 154.74859619140625, -3.435281038284302 ], [ 154.726638793945426, -3.378577947616577 ], [ 154.721511840820312, -3.380527019500732 ], [ 154.722198486328239, -3.359028100967407 ], [ 154.727401733398551, -3.376907110214177 ] ] ], [ [ [ 153.296112060547102, -3.362222909927368 ], [ 153.341964721680029, -3.380572080612183 ], [ 153.330474853515625, -3.415044069290161 ], [ 153.29888916015625, -3.384166002273503 ], [ 153.280319213867188, -3.395842075347787 ], [ 153.242218017578125, -3.38611102104187 ], [ 153.247680664062614, -3.37062406539917 ], [ 153.296112060547102, -3.362222909927368 ] ] ], [ [ [ 151.808074951172216, -3.353410005569401 ], [ 151.8067626953125, -3.352714061737061 ], [ 151.807312011719091, -3.35174107551569 ], [ 151.808349609375114, -3.35174107551569 ], [ 151.808074951172216, -3.353410005569401 ] ] ], [ [ [ 154.695602416992301, -3.363759040832406 ], [ 154.687637329101562, -3.359445095062199 ], [ 154.687210083007926, -3.351651906967163 ], [ 154.697891235351676, -3.360487937927246 ], [ 154.695602416992301, -3.363759040832406 ] ] ], [ [ [ 154.722061157226676, -3.346506118774357 ], [ 154.721649169922102, -3.344208955764771 ], [ 154.722900390625, -3.343791961669865 ], [ 154.723861694335938, -3.344903945922738 ], [ 154.722061157226676, -3.346506118774357 ] ] ], [ [ [ 154.723373413086165, -3.343303918838501 ], [ 154.721237182617415, -3.34260892868042 ], [ 154.72137451171875, -3.34066009521473 ], [ 154.723724365234489, -3.341981887817383 ], [ 154.723373413086165, -3.343303918838501 ] ] ], [ [ [ 154.673568725586051, -3.340869903564453 ], [ 154.66920471191429, -3.339338064193726 ], [ 154.669067382812614, -3.334328889846745 ], [ 154.674530029297102, -3.335999011993295 ], [ 154.673568725586051, -3.340869903564453 ] ] ], [ [ [ 151.774307250976676, -3.330164909362793 ], [ 151.773483276367642, -3.329957008361816 ], [ 151.773498535156364, -3.328617095947209 ], [ 151.774856567382926, -3.329344034194946 ], [ 151.774307250976676, -3.330164909362793 ] ] ], [ [ [ 154.662689208984489, -3.326328992843628 ], [ 154.660537719726562, -3.322711944580021 ], [ 154.664138793945654, -3.319370985031128 ], [ 154.664764404296875, -3.321458101272526 ], [ 154.662689208984489, -3.326328992843628 ] ] ], [ [ [ 154.716171264648438, -3.322362899780217 ], [ 154.713150024414176, -3.325946092605591 ], [ 154.712432861328125, -3.318258047103882 ], [ 154.714233398437955, -3.319094896316528 ], [ 154.716171264648438, -3.322362899780217 ] ] ], [ [ [ 154.717483520507926, -3.315892934799194 ], [ 154.714782714843977, -3.316380023956299 ], [ 154.71437072753929, -3.315685033798161 ], [ 154.716384887695426, -3.31352710723877 ], [ 154.717483520507926, -3.315892934799194 ] ] ], [ [ [ 154.658187866210938, -3.317075967788639 ], [ 154.656036376953352, -3.316170930862427 ], [ 154.656036376953352, -3.312693119049072 ], [ 154.659851074218977, -3.31443190574646 ], [ 154.658187866210938, -3.317075967788639 ] ] ], [ [ [ 154.715057373046989, -3.305943965911808 ], [ 154.71652221679733, -3.307960987090951 ], [ 154.71284484863304, -3.311022043228149 ], [ 154.713882446289062, -3.305735111236572 ], [ 154.715057373046989, -3.305943965911808 ] ] ], [ [ [ 154.715057373046989, -3.302257061004639 ], [ 154.713958740234375, -3.301213026046696 ], [ 154.714645385742188, -3.297802925109863 ], [ 154.715484619140625, -3.299057006835881 ], [ 154.715057373046989, -3.302257061004639 ] ] ], [ [ [ 154.642257690429688, -3.282845020294133 ], [ 154.639694213867301, -3.27811598777771 ], [ 154.64031982421875, -3.276236057281437 ], [ 154.64155578613304, -3.276654958724919 ], [ 154.642257690429688, -3.282845020294133 ] ] ], [ [ [ 154.715408325195312, -3.291820049285775 ], [ 154.710693359375, -3.281455039978027 ], [ 154.71319580078125, -3.27386999130249 ], [ 154.718811035156705, -3.283611059188843 ], [ 154.715408325195312, -3.291820049285775 ] ] ], [ [ [ 154.706893920898438, -3.269208908081055 ], [ 154.708343505859375, -3.270462989807072 ], [ 154.707229614257926, -3.271713972091675 ], [ 154.705535888671875, -3.268723964691162 ], [ 154.706893920898438, -3.269208908081055 ] ] ], [ [ [ 154.517684936523438, -3.180712938308716 ], [ 154.514343261719205, -3.179532051086426 ], [ 154.522613525390966, -3.173757076263428 ], [ 154.521499633789062, -3.177999973297062 ], [ 154.517684936523438, -3.180712938308716 ] ] ], [ [ [ 154.509521484375227, -3.17577409744257 ], [ 154.506607055664062, -3.173965930938607 ], [ 154.50611877441429, -3.171912908554077 ], [ 154.51007080078125, -3.174940109252873 ], [ 154.509521484375227, -3.17577409744257 ] ] ], [ [ [ 154.46607971191429, -3.143491983413696 ], [ 154.464691162109602, -3.14314603805542 ], [ 154.463516235351562, -3.141125917434636 ], [ 154.46455383300804, -3.140986919403076 ], [ 154.46607971191429, -3.143491983413696 ] ] ], [ [ [ 154.508483886718864, -3.136465072631836 ], [ 154.506256103515625, -3.135214090347233 ], [ 154.5028076171875, -3.128706932067814 ], [ 154.50459289550804, -3.128395080566406 ], [ 154.508483886718864, -3.136465072631836 ] ] ], [ [ [ 154.497955322265739, -3.126029014587346 ], [ 154.496841430664176, -3.125195026397705 ], [ 154.497116088867415, -3.124428987502995 ], [ 154.498367309570426, -3.124778032302743 ], [ 154.497955322265739, -3.126029014587346 ] ] ], [ [ [ 154.484085083008154, -3.124289989471436 ], [ 154.483261108398551, -3.12387299537653 ], [ 154.484710693359375, -3.121925115585213 ], [ 154.485076904296875, -3.123802900314331 ], [ 154.484085083008154, -3.124289989471436 ] ] ], [ [ [ 154.460403442382926, -3.115314960479623 ], [ 154.460052490234716, -3.117611885070744 ], [ 154.456176757812614, -3.115453958511353 ], [ 154.458328247070426, -3.113646984100285 ], [ 154.460403442382926, -3.115314960479623 ] ] ], [ [ [ 154.442733764648438, -3.113785982131958 ], [ 154.443008422852017, -3.111836910247803 ], [ 154.444259643554688, -3.110862016677856 ], [ 154.444747924804688, -3.11155891418457 ], [ 154.442733764648438, -3.113785982131958 ] ] ], [ [ [ 154.440933227539062, -3.115036964416447 ], [ 154.443145751953352, -3.119489908218327 ], [ 154.433807373046989, -3.109610080718937 ], [ 154.440521240234602, -3.112114906311035 ], [ 154.440933227539062, -3.115036964416447 ] ] ], [ [ [ 154.44024658203125, -3.105295896530095 ], [ 154.445297241211392, -3.10710597038269 ], [ 154.44537353515625, -3.110166072845402 ], [ 154.438919067382812, -3.1088449954986 ], [ 154.44024658203125, -3.105295896530095 ] ] ], [ [ [ 151.637985229492188, -3.042984008789006 ], [ 151.637084960937727, -3.041943073272648 ], [ 151.638259887695426, -3.041316032409668 ], [ 151.638473510742188, -3.042289018630981 ], [ 151.637985229492188, -3.042984008789006 ] ] ], [ [ [ 152.627426147460938, -3.03159308433527 ], [ 152.641387939453239, -3.067776918411198 ], [ 152.633926391601676, -3.114866018295288 ], [ 152.658340454101676, -3.118611097335702 ], [ 152.662353515625114, -3.137846946716252 ], [ 152.644165039062727, -3.220000028610173 ], [ 152.625549316406364, -3.227500915527344 ], [ 152.583053588867188, -3.176944971084538 ], [ 152.552780151367301, -3.165555953979492 ], [ 152.561111450195312, -3.14083194732666 ], [ 152.521942138671989, -3.091944932937565 ], [ 152.554718017578352, -3.050833940505925 ], [ 152.627426147460938, -3.03159308433527 ] ] ], [ [ [ 152.658615112304688, -3.027777910232487 ], [ 152.663055419922102, -3.029443979263249 ], [ 152.664443969726676, -3.035001039505005 ], [ 152.656951904297102, -3.032778024673462 ], [ 152.658615112304688, -3.027777910232487 ] ] ], [ [ [ 152.678070068359375, -3.026635885238647 ], [ 152.692504882812614, -3.029721975326481 ], [ 152.693893432617188, -3.035001039505005 ], [ 152.668060302734375, -3.030555963516179 ], [ 152.678070068359375, -3.026635885238647 ] ] ], [ [ [ 150.735839843750114, -2.9788880348205 ], [ 150.731948852539404, -2.998611927032471 ], [ 150.719299316406364, -3.000966072082463 ], [ 150.730560302734489, -2.983333110809326 ], [ 150.735839843750114, -2.9788880348205 ] ] ], [ [ [ 150.837570190429688, -2.971412897109929 ], [ 150.83056640625, -2.969628095626774 ], [ 150.830886840820426, -2.965652942657414 ], [ 150.839370727539062, -2.965926885604858 ], [ 150.837570190429688, -2.971412897109929 ] ] ], [ [ [ 152.657775878906364, -2.933610916137695 ], [ 152.671951293945312, -2.954722881317139 ], [ 152.649169921875, -2.966110944747868 ], [ 152.642501831054688, -2.953609943389893 ], [ 152.657775878906364, -2.933610916137695 ] ] ], [ [ [ 151.132293701171989, -2.903542041778564 ], [ 151.134567260742301, -2.906466007232666 ], [ 151.130569458007926, -2.911243915557861 ], [ 151.127777099609375, -2.904166936874333 ], [ 151.132293701171989, -2.903542041778564 ] ] ], [ [ [ 150.881942749023551, -2.90305495262146 ], [ 150.938049316406477, -2.926388025283813 ], [ 150.95916748046875, -2.957777023315373 ], [ 151.003890991210938, -2.966667890548649 ], [ 150.982223510742188, -2.979166030883675 ], [ 150.962783813476562, -2.965276956558171 ], [ 150.90028381347679, -2.97777795791626 ], [ 150.895416259765625, -2.962842941284123 ], [ 150.852493286133154, -2.972222089767342 ], [ 150.85945129394554, -2.962223052978459 ], [ 150.820556640625227, -2.952222108840942 ], [ 150.823883056640966, -2.970556020736694 ], [ 150.744445800781477, -2.985279083251953 ], [ 150.773330688476676, -2.952500104904175 ], [ 150.79499816894554, -2.957777023315373 ], [ 150.811660766601676, -2.933888912200928 ], [ 150.881942749023551, -2.90305495262146 ] ] ], [ [ [ 152.6552734375, -2.76583194732666 ], [ 152.672225952148892, -2.785834074020386 ], [ 152.65155029296875, -2.799235105514526 ], [ 152.641937255859489, -2.777498960494938 ], [ 152.6552734375, -2.76583194732666 ] ] ], [ [ [ 150.787506103515625, -2.737221956252995 ], [ 150.786117553711279, -2.735555887222176 ], [ 150.787216186523438, -2.734165906906071 ], [ 150.788192749023551, -2.735555887222176 ], [ 150.787506103515625, -2.737221956252995 ] ] ], [ [ [ 150.714721679687614, -2.721111059188843 ], [ 150.713333129882926, -2.722498893737793 ], [ 150.711944580078125, -2.722223043441772 ], [ 150.713897705078352, -2.719238042831421 ], [ 150.714721679687614, -2.721111059188843 ] ] ], [ [ [ 150.631942749023551, -2.705277919769287 ], [ 150.678054809570426, -2.718055009841919 ], [ 150.714065551757812, -2.750716924667358 ], [ 150.653976440429688, -2.740343093872013 ], [ 150.628982543945312, -2.72143292427063 ], [ 150.631942749023551, -2.705277919769287 ] ] ], [ [ [ 151.920562744140625, -2.701666116714421 ], [ 151.977355957031477, -2.721179962158203 ], [ 152.006942749023892, -2.75527811050415 ], [ 151.993896484375, -2.766109943389893 ], [ 152.009719848632812, -2.776945114135742 ], [ 152.005279541015739, -2.797223091125488 ], [ 151.980026245117415, -2.803139925002995 ], [ 151.98500061035179, -2.817222118377686 ], [ 152.001388549804915, -2.802499055862427 ], [ 152.004165649414062, -2.818331956863346 ], [ 151.995834350586051, -2.831945896148682 ], [ 151.966110229492415, -2.830832958221436 ], [ 152.005859375000114, -2.893439054489136 ], [ 152.057785034179688, -2.908611059188843 ], [ 152.076385498046989, -2.930001020431519 ], [ 152.07208251953125, -2.973449945449715 ], [ 152.050003051757926, -2.998889923095703 ], [ 152.002502441406477, -2.964998960494938 ], [ 151.990554809570426, -2.905833005905151 ], [ 151.962493896484602, -2.905555009841919 ], [ 151.941940307617301, -2.884166955947819 ], [ 151.95960998535179, -2.841536045074406 ], [ 151.9410400390625, -2.850619077682495 ], [ 151.9122314453125, -2.821971893310547 ], [ 151.923400878906705, -2.810647010803223 ], [ 151.905563354492188, -2.789484977722111 ], [ 151.934173583984375, -2.754164934158268 ], [ 151.908615112304688, -2.711666107177734 ], [ 151.920562744140625, -2.701666116714421 ] ] ], [ [ [ 150.643615722656364, -2.693888902664128 ], [ 150.647506713867188, -2.699721097946167 ], [ 150.639450073242188, -2.704721927642822 ], [ 150.63722229003929, -2.699443101882935 ], [ 150.643615722656364, -2.693888902664128 ] ] ], [ [ [ 150.763351440430142, -2.695826053619328 ], [ 150.760284423828352, -2.690001010894719 ], [ 150.765518188476904, -2.685944080352726 ], [ 150.766967773437727, -2.691414117813054 ], [ 150.763351440430142, -2.695826053619328 ] ] ], [ [ [ 150.753890991210938, -2.684165954589844 ], [ 150.752777099609375, -2.683887958526611 ], [ 150.754440307617301, -2.682777881622314 ], [ 150.75471496582054, -2.683887958526611 ], [ 150.753890991210938, -2.684165954589844 ] ] ], [ [ [ 150.717773437500114, -2.675833940505981 ], [ 150.734161376953352, -2.698889970779419 ], [ 150.698333740234375, -2.725554943084717 ], [ 150.68695068359375, -2.688611030578613 ], [ 150.717773437500114, -2.675833940505981 ] ] ], [ [ [ 150.6319580078125, -2.674396038055363 ], [ 150.639511108398665, -2.675378084182739 ], [ 150.640762329101676, -2.681957960128784 ], [ 150.631820678710938, -2.68261194229126 ], [ 150.6319580078125, -2.674396038055363 ] ] ], [ [ [ 150.734451293945312, -2.67222094535822 ], [ 150.741104125976904, -2.679444074630624 ], [ 150.73333740234375, -2.685000896453857 ], [ 150.728057861328352, -2.674721956253052 ], [ 150.734451293945312, -2.67222094535822 ] ] ], [ [ [ 150.772537231445312, -2.677896022796631 ], [ 150.770828247070426, -2.673748016357365 ], [ 150.772323608398551, -2.67024302482605 ], [ 150.773574829101562, -2.672843933105469 ], [ 150.772537231445312, -2.677896022796631 ] ] ], [ [ [ 150.325363159179915, -2.673955917358342 ], [ 150.321380615234489, -2.674359083175602 ], [ 150.318450927734375, -2.671881914138794 ], [ 150.327178955078239, -2.669486045837402 ], [ 150.325363159179915, -2.673955917358342 ] ] ], [ [ [ 150.61648559570358, -2.677779912948552 ], [ 150.612533569336051, -2.675497055053654 ], [ 150.616333007812614, -2.669014930725098 ], [ 150.619842529296875, -2.673393011093083 ], [ 150.61648559570358, -2.677779912948552 ] ] ], [ [ [ 150.582504272461165, -2.664722919464111 ], [ 150.586669921875227, -2.66833305358881 ], [ 150.580825805664176, -2.675277948379517 ], [ 150.576950073242415, -2.668611049652043 ], [ 150.582504272461165, -2.664722919464111 ] ] ], [ [ [ 150.538330078125114, -2.664444923400879 ], [ 150.607391357421989, -2.683820009231511 ], [ 150.587265014648551, -2.730407953262329 ], [ 150.55877685546875, -2.691847085952702 ], [ 150.52362060546875, -2.680659055709839 ], [ 150.538330078125114, -2.664444923400879 ] ] ], [ [ [ 150.7342529296875, -2.665400028228703 ], [ 150.732559204101562, -2.665122032165471 ], [ 150.732421875000227, -2.66402792930603 ], [ 150.734771728515625, -2.663841009139958 ], [ 150.7342529296875, -2.665400028228703 ] ] ], [ [ [ 150.336944580078125, -2.672498941421452 ], [ 150.333312988281591, -2.670535087585449 ], [ 150.333206176757926, -2.662293910980225 ], [ 150.336441040039176, -2.664537906646672 ], [ 150.336944580078125, -2.672498941421452 ] ] ], [ [ [ 150.471115112304915, -2.660001039504891 ], [ 150.486389160156477, -2.668611049652043 ], [ 150.466384887695426, -2.677500009536743 ], [ 150.462493896484375, -2.661945104598942 ], [ 150.471115112304915, -2.660001039504891 ] ] ], [ [ [ 150.519882202148438, -2.65842604637146 ], [ 150.518646240234489, -2.658215999603215 ], [ 150.520858764648438, -2.655988931655827 ], [ 150.521057128906477, -2.657104015350342 ], [ 150.519882202148438, -2.65842604637146 ] ] ], [ [ [ 150.455551147461051, -2.654165983200073 ], [ 150.457504272460938, -2.66944503784174 ], [ 150.439437866211051, -2.669720888137761 ], [ 150.43499755859375, -2.658888101577759 ], [ 150.455551147461051, -2.654165983200073 ] ] ], [ [ [ 150.686386108398438, -2.664166927337646 ], [ 150.676940917968977, -2.664444923400879 ], [ 150.683700561523438, -2.651665925979614 ], [ 150.690551757812614, -2.656944036483765 ], [ 150.686386108398438, -2.664166927337646 ] ] ], [ [ [ 150.663909912109375, -2.659547090530396 ], [ 150.661575317382812, -2.655966997146606 ], [ 150.664382934570312, -2.651505947113037 ], [ 150.667221069336392, -2.655303001403752 ], [ 150.663909912109375, -2.659547090530396 ] ] ], [ [ [ 150.774993896484489, -2.651387929916382 ], [ 150.774169921875227, -2.650000095367432 ], [ 150.775558471680142, -2.649722099304199 ], [ 150.776107788086165, -2.650278091430664 ], [ 150.774993896484489, -2.651387929916382 ] ] ], [ [ [ 150.564422607421989, -2.651823043823242 ], [ 150.563140869140739, -2.650232076644897 ], [ 150.565414428711051, -2.649643898010197 ], [ 150.565567016601676, -2.651309967040959 ], [ 150.564422607421989, -2.651823043823242 ] ] ], [ [ [ 150.527221679687955, -2.651665925979614 ], [ 150.526947021484375, -2.649722099304199 ], [ 150.528823852539062, -2.648890018463078 ], [ 150.528610229492301, -2.650000095367432 ], [ 150.527221679687955, -2.651665925979614 ] ] ], [ [ [ 150.640838623047102, -2.647778034210205 ], [ 150.649169921875341, -2.659167051315251 ], [ 150.632507324219205, -2.668889045715275 ], [ 150.628890991211051, -2.654443979263306 ], [ 150.640838623047102, -2.647778034210205 ] ] ], [ [ [ 150.5755615234375, -2.643889904022103 ], [ 150.579162597656364, -2.649166107177734 ], [ 150.574172973632812, -2.657222032546997 ], [ 150.569717407226676, -2.650834083557129 ], [ 150.5755615234375, -2.643889904022103 ] ] ], [ [ [ 150.713058471679801, -2.641388893127441 ], [ 150.729919433593977, -2.642543077468872 ], [ 150.733016967773665, -2.650166034698486 ], [ 150.720321655273438, -2.651971101760807 ], [ 150.713058471679801, -2.641388893127441 ] ] ], [ [ [ 150.84492492675804, -2.640240907669011 ], [ 150.843887329101676, -2.638889074325448 ], [ 150.845993041992301, -2.638431072235051 ], [ 150.8458251953125, -2.639775991439762 ], [ 150.84492492675804, -2.640240907669011 ] ] ], [ [ [ 150.4954833984375, -2.636632919311523 ], [ 150.501342773437614, -2.659432888031006 ], [ 150.498641967773438, -2.663604021072388 ], [ 150.483337402343977, -2.648890018463078 ], [ 150.4954833984375, -2.636632919311523 ] ] ], [ [ [ 150.641693115234375, -2.639339923858529 ], [ 150.640090942382926, -2.637923002243042 ], [ 150.643127441406477, -2.636051893234139 ], [ 150.643173217773665, -2.637883901596012 ], [ 150.641693115234375, -2.639339923858529 ] ] ], [ [ [ 149.661392211914062, -2.631944894790649 ], [ 149.666244506836392, -2.633820056915283 ], [ 149.664718627930142, -2.640554904937744 ], [ 149.656112670898665, -2.63305401802063 ], [ 149.661392211914062, -2.631944894790649 ] ] ], [ [ [ 150.769714355469091, -2.641756057739144 ], [ 150.763092041015625, -2.637633085250854 ], [ 150.764556884765739, -2.631043910980168 ], [ 150.7701416015625, -2.63820290565485 ], [ 150.769714355469091, -2.641756057739144 ] ] ], [ [ [ 149.679718017578125, -2.623889923095703 ], [ 149.682983398437614, -2.625622034072819 ], [ 149.671035766601562, -2.633332967758179 ], [ 149.67195129394554, -2.627429962158203 ], [ 149.679718017578125, -2.623889923095703 ] ] ], [ [ [ 150.626449584961051, -2.637212038040047 ], [ 150.629440307617415, -2.624531030654907 ], [ 150.638671875000114, -2.619591951370239 ], [ 150.63874816894554, -2.621090888977051 ], [ 150.626449584961051, -2.637212038040047 ] ] ], [ [ [ 150.534774780273438, -2.637706041336003 ], [ 150.527847290039176, -2.625448942184448 ], [ 150.531372070312614, -2.619008064269963 ], [ 150.540496826171875, -2.627213001251164 ], [ 150.534774780273438, -2.637706041336003 ] ] ], [ [ [ 150.453781127929915, -2.632539033889657 ], [ 150.448333740234375, -2.624722003936711 ], [ 150.451553344726676, -2.615062952041512 ], [ 150.456558227539062, -2.625763893127441 ], [ 150.453781127929915, -2.632539033889657 ] ] ], [ [ [ 150.455184936523551, -2.618139982223454 ], [ 150.45429992675804, -2.616939067840576 ], [ 150.455596923828125, -2.614918947219849 ], [ 150.456954956054688, -2.616252899169922 ], [ 150.455184936523551, -2.618139982223454 ] ] ], [ [ [ 150.738052368164404, -2.616389036178589 ], [ 150.737228393554801, -2.616389036178589 ], [ 150.73638916015625, -2.614721059799194 ], [ 150.738052368164404, -2.615277051925659 ], [ 150.738052368164404, -2.616389036178589 ] ] ], [ [ [ 150.447052001953352, -2.616334915161133 ], [ 150.444549560546875, -2.616125106811523 ], [ 150.445037841796875, -2.614176034927368 ], [ 150.445724487304915, -2.613966941833496 ], [ 150.447052001953352, -2.616334915161133 ] ] ], [ [ [ 150.459991455078125, -2.619831085205078 ], [ 150.456817626953352, -2.618550062179565 ], [ 150.460311889648551, -2.613600015640259 ], [ 150.461273193359489, -2.618289947509766 ], [ 150.459991455078125, -2.619831085205078 ] ] ], [ [ [ 150.673461914062727, -2.621504068374634 ], [ 150.675964355468977, -2.615433931350651 ], [ 150.680984497070312, -2.613053083419743 ], [ 150.68055725097679, -2.61581110954279 ], [ 150.673461914062727, -2.621504068374634 ] ] ], [ [ [ 150.478790283203239, -2.620330095291138 ], [ 150.476959228515625, -2.616967916488591 ], [ 150.479644775390625, -2.61230993270874 ], [ 150.481597900390739, -2.617398977279663 ], [ 150.478790283203239, -2.620330095291138 ] ] ], [ [ [ 150.45033264160179, -2.611355066299438 ], [ 150.451873779297102, -2.614268064498901 ], [ 150.446395874023551, -2.613610982894897 ], [ 150.44667053222679, -2.611110925674438 ], [ 150.45033264160179, -2.611355066299438 ] ] ], [ [ [ 150.610855102539062, -2.640500068664551 ], [ 150.608322143554801, -2.658854007720947 ], [ 150.573333740234489, -2.625277996063176 ], [ 150.596435546875227, -2.606770992279053 ], [ 150.610855102539062, -2.640500068664551 ] ] ], [ [ [ 150.45062255859375, -2.607404947280884 ], [ 150.448501586914176, -2.605823040008488 ], [ 150.451263427734489, -2.604646921157837 ], [ 150.452026367187614, -2.606229066848755 ], [ 150.45062255859375, -2.607404947280884 ] ] ], [ [ [ 150.453338623046875, -2.605000972747746 ], [ 150.451950073242529, -2.6038880348205 ], [ 150.453048706054688, -2.602499961853027 ], [ 150.454162597656477, -2.603610038757267 ], [ 150.453338623046875, -2.605000972747746 ] ] ], [ [ [ 150.589172363281364, -2.601387977600041 ], [ 150.56721496582054, -2.631387948989811 ], [ 150.546951293945312, -2.636945009231567 ], [ 150.562774658203125, -2.631109952926579 ], [ 150.589172363281364, -2.601387977600041 ] ] ], [ [ [ 149.706939697265966, -2.600555896759033 ], [ 149.71638488769554, -2.608889102935791 ], [ 149.69610595703125, -2.623333930969238 ], [ 149.703887939453466, -2.600833892822266 ], [ 149.706939697265966, -2.600555896759033 ] ] ], [ [ [ 150.768325805664176, -2.606667041778564 ], [ 150.767257690429688, -2.603575944900456 ], [ 150.768890380859489, -2.599026918411198 ], [ 150.771118164062727, -2.604722976684513 ], [ 150.768325805664176, -2.606667041778564 ] ] ], [ [ [ 151.97944641113304, -2.591667890548706 ], [ 152.019165039062614, -2.608333110809326 ], [ 152.027221679687614, -2.636945009231567 ], [ 152.014999389648551, -2.660554885864258 ], [ 151.943603515625227, -2.658888101577759 ], [ 151.947769165039176, -2.624025106429997 ], [ 151.97944641113304, -2.591667890548706 ] ] ], [ [ [ 150.463668823242301, -2.590471029281559 ], [ 150.463638305664062, -2.59856200218195 ], [ 150.452362060546875, -2.596781969070435 ], [ 150.455352783203239, -2.591308116912785 ], [ 150.463668823242301, -2.590471029281559 ] ] ], [ [ [ 150.538604736328352, -2.580276966094914 ], [ 150.55024719238304, -2.592431068420296 ], [ 150.54351806640625, -2.610799074172974 ], [ 150.523880004882812, -2.603327989578247 ], [ 150.538604736328352, -2.580276966094914 ] ] ], [ [ [ 150.783050537109489, -2.566665887832642 ], [ 150.784729003906364, -2.572777986526489 ], [ 150.778884887695312, -2.586667060852051 ], [ 150.771942138671989, -2.581666946411076 ], [ 150.783050537109489, -2.566665887832642 ] ] ], [ [ [ 150.490539550781477, -2.566143989562988 ], [ 150.494049072265739, -2.574275970458928 ], [ 150.486968994140852, -2.588202953338623 ], [ 150.476730346679801, -2.57431697845459 ], [ 150.490539550781477, -2.566143989562988 ] ] ], [ [ [ 150.48695373535179, -2.564604997634888 ], [ 150.486480712890625, -2.562549114227295 ], [ 150.489578247070312, -2.563292026519775 ], [ 150.488510131836051, -2.564153909683171 ], [ 150.48695373535179, -2.564604997634888 ] ] ], [ [ [ 150.798828125000455, -2.553205013275146 ], [ 150.847885131836051, -2.607379913329964 ], [ 150.930633544921989, -2.651823043823242 ], [ 150.950836181640852, -2.683887958526611 ], [ 151.021392822265852, -2.687222957611027 ], [ 151.053894042968864, -2.74555492401123 ], [ 151.080535888672102, -2.74025106430048 ], [ 151.122772216796875, -2.779375076293832 ], [ 151.156661987304801, -2.776388883590585 ], [ 151.186386108398665, -2.80472111701954 ], [ 151.184448242187614, -2.852222919464111 ], [ 151.214340209960938, -2.873032093048096 ], [ 151.300277709961051, -2.866944074630737 ], [ 151.32916259765625, -2.876389026641789 ], [ 151.342498779296875, -2.90500092506403 ], [ 151.413604736328239, -2.900835037231388 ], [ 151.482452392578125, -2.973366022109985 ], [ 151.51055908203125, -2.970000028610229 ], [ 151.541107177734602, -2.997499942779541 ], [ 151.563049316406477, -2.993333101272583 ], [ 151.582138061523551, -3.021915912628117 ], [ 151.672500610351562, -3.045277118682861 ], [ 151.71296691894554, -3.117927074432316 ], [ 151.74580383300804, -3.140463113784733 ], [ 151.772018432617301, -3.128134965896606 ], [ 151.771835327148779, -3.159363985061646 ], [ 151.802688598632812, -3.191649913787785 ], [ 151.858245849609375, -3.18480396270752 ], [ 151.880416870117188, -3.200598001480103 ], [ 151.939010620117415, -3.202599048614502 ], [ 151.957260131835938, -3.238279104232788 ], [ 151.993423461914062, -3.22890305519104 ], [ 152.021408081054915, -3.247392892837411 ], [ 152.047897338867415, -3.24199199676508 ], [ 152.048080444336165, -3.279870986938477 ], [ 152.104827880859489, -3.31892204284668 ], [ 152.202117919921989, -3.45183610916132 ], [ 152.351150512695312, -3.533580064773503 ], [ 152.3499755859375, -3.584161043167114 ], [ 152.391342163086279, -3.599570035934391 ], [ 152.416305541992301, -3.671366930007935 ], [ 152.477233886718977, -3.63596510887146 ], [ 152.492324829101676, -3.640706062316781 ], [ 152.544174194335938, -3.743055105209351 ], [ 152.531951904296875, -3.782500028610173 ], [ 152.553604125976676, -3.811666011810303 ], [ 152.638229370117301, -3.821908950805607 ], [ 152.684768676757926, -3.872152090072632 ], [ 152.746917724609375, -3.890182018280029 ], [ 152.791900634765625, -3.855499029159546 ], [ 152.820968627929915, -3.863190889358521 ], [ 152.825637817382926, -3.936125040054264 ], [ 152.851119995117415, -3.976382017135563 ], [ 152.900421142578125, -3.997499942779484 ], [ 152.933914184570767, -3.977674007415771 ], [ 152.943603515625114, -4.037498950958195 ], [ 152.994445800781591, -4.095276832580566 ], [ 153.006393432617642, -4.097220897674561 ], [ 153.016326904296989, -4.140431880950871 ], [ 153.038894653320312, -4.155556201934758 ], [ 153.033615112304915, -4.189166069030762 ], [ 153.060180664062955, -4.21083402633667 ], [ 153.090301513672102, -4.219204902648812 ], [ 153.104644775390625, -4.242837905883789 ], [ 153.11604309082054, -4.273412227630615 ], [ 153.102218627929688, -4.340834140777474 ], [ 153.118896484375227, -4.375 ], [ 153.052780151367301, -4.427948951721135 ], [ 153.025100708007926, -4.477415084838867 ], [ 153.033172607421875, -4.509377956390381 ], [ 153.062744140625, -4.529520988464355 ], [ 153.060562133789517, -4.598054885864258 ], [ 153.017089843750114, -4.635731220245304 ], [ 153.015243530273438, -4.683358192443734 ], [ 152.990356445312727, -4.685588836669865 ], [ 152.966949462890739, -4.748333930969238 ], [ 152.922119140625, -4.781452178955021 ], [ 152.928329467773665, -4.798056125640869 ], [ 152.894058227539176, -4.788510799407959 ], [ 152.897872924804801, -4.829925060272217 ], [ 152.878616333007926, -4.851665019989014 ], [ 152.858413696289062, -4.770492076873779 ], [ 152.832885742187614, -4.770566940307617 ], [ 152.808288574219091, -4.735227108001652 ], [ 152.790283203125227, -4.737777233123666 ], [ 152.802215576171875, -4.725833892822209 ], [ 152.770065307617415, -4.679481029510441 ], [ 152.724731445312614, -4.667931079864502 ], [ 152.707992553710938, -4.572451114654484 ], [ 152.676864624023551, -4.552985191345215 ], [ 152.674407958984375, -4.497439861297551 ], [ 152.649917602539176, -4.453497886657715 ], [ 152.67445373535179, -4.426073074340763 ], [ 152.684692382812841, -4.374653816223031 ], [ 152.690185546875, -4.295265197753849 ], [ 152.67140197753929, -4.208229064941406 ], [ 152.685516357422102, -4.180573940277043 ], [ 152.614166259765625, -4.089723110198975 ], [ 152.612060546875, -4.034658908843994 ], [ 152.564727783203125, -3.95194506645197 ], [ 152.533828735351562, -3.928544998168888 ], [ 152.50250244140625, -3.856664896011296 ], [ 152.446487426757812, -3.82443189620966 ], [ 152.357299804687727, -3.711474895477295 ], [ 152.342025756836051, -3.687028884887695 ], [ 152.344451904296875, -3.643606901168823 ], [ 152.297058105468864, -3.617356061935368 ], [ 152.265823364257926, -3.566948890686035 ], [ 152.22950744628929, -3.555130958557072 ], [ 152.22430419921875, -3.533761978149414 ], [ 152.143508911133267, -3.482561111450195 ], [ 152.070236206054915, -3.479933023452759 ], [ 152.0, -3.443438053131104 ], [ 151.977874755859375, -3.459646940231323 ], [ 151.907348632812727, -3.433001041412297 ], [ 151.800460815429688, -3.341722011566105 ], [ 151.769485473632926, -3.323215961456185 ], [ 151.717529296875, -3.302552938461304 ], [ 151.623168945312727, -3.181358098983765 ], [ 151.466537475586165, -3.117628097534123 ], [ 151.426986694336279, -3.056335926055908 ], [ 151.342391967773665, -3.003879070281926 ], [ 151.292221069336051, -2.991389036178589 ], [ 151.170272827148438, -2.901109933853093 ], [ 151.142501831054915, -2.904444932937565 ], [ 151.096664428710938, -2.841871023178044 ], [ 151.026107788085938, -2.829720973968506 ], [ 150.979476928710938, -2.779498100280762 ], [ 150.9244384765625, -2.776110887527352 ], [ 150.903640747070312, -2.757556915283146 ], [ 150.908676147461165, -2.768289089202824 ], [ 150.81182861328125, -2.788510084152165 ], [ 150.719497680664176, -2.751703977584839 ], [ 150.70166015625, -2.731112003326359 ], [ 150.714004516601676, -2.725548982620239 ], [ 150.729095458984375, -2.707887887954655 ], [ 150.786621093750455, -2.738106966018563 ], [ 150.78889465332054, -2.736943960189762 ], [ 150.792221069336279, -2.730278015136662 ], [ 150.789718627929801, -2.717777013778687 ], [ 150.812805175781364, -2.713635921478215 ], [ 150.821350097656364, -2.69060301780695 ], [ 150.87416076660179, -2.700278043746891 ], [ 150.856384277343864, -2.692223072052002 ], [ 150.889724731445312, -2.680834054946899 ], [ 150.860549926757812, -2.670277118682861 ], [ 150.862777709961051, -2.684443950653076 ], [ 150.847503662109489, -2.691111087799072 ], [ 150.856521606445312, -2.682499885559082 ], [ 150.841384887695312, -2.663888931274414 ], [ 150.867218017578125, -2.655832052230835 ], [ 150.869720458984602, -2.640832901000977 ], [ 150.850830078125, -2.648612022399846 ], [ 150.848052978515739, -2.6372230052948 ], [ 150.844451904296989, -2.635277032852059 ], [ 150.822250366211051, -2.649701118469238 ], [ 150.776107788086165, -2.616667985916138 ], [ 150.798828125000455, -2.553205013275146 ] ] ], [ [ [ 149.944442749023438, -2.483125925064087 ], [ 149.943054199218864, -2.483334064483643 ], [ 149.940826416015625, -2.480277061462402 ], [ 149.942230224609602, -2.479861974716187 ], [ 149.944442749023438, -2.483125925064087 ] ] ], [ [ [ 150.513458251953352, -2.483141899108887 ], [ 150.544342041015739, -2.546983003616276 ], [ 150.545761108398551, -2.571979999542179 ], [ 150.48847961425804, -2.479717016220036 ], [ 150.513458251953352, -2.483141899108887 ] ] ], [ [ [ 150.490829467773551, -2.475001096725407 ], [ 150.478057861328239, -2.473889112472534 ], [ 150.48193359375, -2.461244106292725 ], [ 150.49305725097679, -2.465277910232487 ], [ 150.490829467773551, -2.475001096725407 ] ] ], [ [ [ 150.356674194336165, -2.436111927032357 ], [ 150.35861206054733, -2.438055992126408 ], [ 150.358062744140625, -2.439722061157227 ], [ 150.355331420898551, -2.43769192695612 ], [ 150.356674194336165, -2.436111927032357 ] ] ], [ [ [ 150.009246826171989, -2.429126977920532 ], [ 150.001235961914176, -2.435395956039372 ], [ 149.997497558593977, -2.432499885558968 ], [ 150.000839233398551, -2.428745985031128 ], [ 150.009246826171989, -2.429126977920532 ] ] ], [ [ [ 150.447219848632812, -2.433056116104126 ], [ 150.477218627929915, -2.453054904937744 ], [ 150.477081298828125, -2.469585895538216 ], [ 150.432785034179915, -2.425832986831665 ], [ 150.447219848632812, -2.433056116104126 ] ] ], [ [ [ 150.331939697265625, -2.426110982894897 ], [ 150.330551147461165, -2.424444913864079 ], [ 150.332916259765739, -2.42361307144165 ], [ 150.333343505859375, -2.424823999404907 ], [ 150.331939697265625, -2.426110982894897 ] ] ], [ [ [ 150.035278320312614, -2.422498941421509 ], [ 150.038604736328239, -2.425554990768433 ], [ 150.034439086914062, -2.427221059799081 ], [ 150.033340454101562, -2.424998998641968 ], [ 150.035278320312614, -2.422498941421509 ] ] ], [ [ [ 150.007781982421875, -2.422223091125488 ], [ 150.00917053222679, -2.423610925674438 ], [ 150.005004882812614, -2.42638897895813 ], [ 150.003890991211051, -2.423054933547974 ], [ 150.007781982421875, -2.422223091125488 ] ] ], [ [ [ 150.021926879882926, -2.419392108917179 ], [ 150.022033691406591, -2.413003921508789 ], [ 150.023956298828125, -2.412060022354126 ], [ 150.025161743164176, -2.414627075195256 ], [ 150.021926879882926, -2.419392108917179 ] ] ], [ [ [ 150.41749572753929, -2.411943912506104 ], [ 150.42860412597679, -2.420279026031494 ], [ 150.431594848632812, -2.428960084915161 ], [ 150.410827636718864, -2.418055057525635 ], [ 150.41749572753929, -2.411943912506104 ] ] ], [ [ [ 150.040802001953239, -2.406392097473145 ], [ 150.037261962890739, -2.402715921401921 ], [ 150.04365539550804, -2.398663997650146 ], [ 150.045074462890625, -2.400305032730046 ], [ 150.040802001953239, -2.406392097473145 ] ] ], [ [ [ 150.063613891601904, -2.393610954284611 ], [ 150.062088012695654, -2.392918109893799 ], [ 150.063903808593977, -2.391381978988647 ], [ 150.064727783203239, -2.39250111579895 ], [ 150.063613891601904, -2.393610954284611 ] ] ], [ [ [ 150.098968505859602, -2.385445117950383 ], [ 150.093536376953239, -2.381819009780827 ], [ 150.094406127929801, -2.37813496589655 ], [ 150.105102539062727, -2.380673885345459 ], [ 150.098968505859602, -2.385445117950383 ] ] ], [ [ [ 150.238250732422102, -2.378281116485539 ], [ 150.235504150390625, -2.374869108200016 ], [ 150.241775512695312, -2.372113943099976 ], [ 150.24371337890625, -2.375633001327515 ], [ 150.238250732422102, -2.378281116485539 ] ] ], [ [ [ 150.341110229492301, -2.366945028304997 ], [ 150.343612670898779, -2.369167089462223 ], [ 150.342773437500227, -2.370554924011117 ], [ 150.339447021484375, -2.368611097335759 ], [ 150.341110229492301, -2.366945028304997 ] ] ], [ [ [ 150.120635986328239, -2.363054037094116 ], [ 150.125625610351562, -2.366381883621159 ], [ 150.117752075195426, -2.370805978775024 ], [ 150.11427307128929, -2.365875959396249 ], [ 150.120635986328239, -2.363054037094116 ] ] ], [ [ [ 150.202499389648438, -2.366945028304997 ], [ 150.258346557617301, -2.392250061035156 ], [ 150.267669677734489, -2.412111043930054 ], [ 150.340637207031364, -2.43113899230957 ], [ 150.423736572265625, -2.481323003768864 ], [ 150.441345214843864, -2.477108955383244 ], [ 150.43939208984375, -2.558155059814396 ], [ 150.451934814453239, -2.527503013610783 ], [ 150.463516235352017, -2.540751934051514 ], [ 150.438552856445312, -2.61929988861084 ], [ 150.448059082031477, -2.65305590629572 ], [ 150.343399047851676, -2.68022608757019 ], [ 150.374588012695426, -2.66106104850769 ], [ 150.344802856445312, -2.670007944106999 ], [ 150.335586547851676, -2.652400016784668 ], [ 150.315628051757812, -2.672993898391724 ], [ 150.2618408203125, -2.658607959747314 ], [ 150.171951293945654, -2.681008100509644 ], [ 150.099716186523438, -2.61972188949585 ], [ 150.062103271484375, -2.532802104949951 ], [ 150.02166748046875, -2.501667022705078 ], [ 150.010772705078239, -2.513057947158813 ], [ 149.959716796875, -2.503055095672607 ], [ 149.946334838867188, -2.481288909912053 ], [ 149.959121704101562, -2.452316999435425 ], [ 149.970306396484375, -2.491887092590275 ], [ 149.998748779296989, -2.452547073364144 ], [ 150.048049926757926, -2.434443950653019 ], [ 150.068603515625, -2.403901100158691 ], [ 150.087570190429915, -2.417203903198242 ], [ 150.10638427734375, -2.39527702331543 ], [ 150.14349365234375, -2.40581107139576 ], [ 150.142776489257812, -2.381387948989868 ], [ 150.167953491210938, -2.390512943267822 ], [ 150.168121337890739, -2.368766069412175 ], [ 150.202499389648438, -2.366945028304997 ] ] ], [ [ [ 150.143585205078125, -2.352658987045288 ], [ 150.140701293945312, -2.34922194480896 ], [ 150.147109985351562, -2.348177909851074 ], [ 150.147216796875227, -2.350845098495427 ], [ 150.143585205078125, -2.352658987045288 ] ] ], [ [ [ 150.308883666992301, -2.340832948684692 ], [ 150.315277099609489, -2.346389055251962 ], [ 150.31166076660179, -2.357222080230713 ], [ 150.301666259765625, -2.347776889801025 ], [ 150.308883666992301, -2.340832948684692 ] ] ], [ [ [ 150.026672363281477, -1.681112051010132 ], [ 150.025711059570312, -1.679587006568909 ], [ 150.0302734375, -1.675554990768376 ], [ 150.03054809570358, -1.677220940589848 ], [ 150.026672363281477, -1.681112051010132 ] ] ], [ [ [ 149.942855834961051, -1.675209045410156 ], [ 149.94500732421875, -1.676390051841736 ], [ 149.943328857422102, -1.678056001663208 ], [ 149.941665649414517, -1.675832986831551 ], [ 149.942855834961051, -1.675209045410156 ] ] ], [ [ [ 149.905273437500114, -1.674792051315251 ], [ 149.909439086914176, -1.678889989852848 ], [ 149.904449462890852, -1.682778000831604 ], [ 149.901672363281364, -1.678123950958195 ], [ 149.905273437500114, -1.674792051315251 ] ] ], [ [ [ 149.945831298828352, -1.673784971237183 ], [ 149.935607910156364, -1.675181984901428 ], [ 149.938430786132926, -1.691898941993713 ], [ 149.911117553711165, -1.679165959358215 ], [ 149.919967651367301, -1.667919993400574 ], [ 149.907058715820312, -1.650210976600647 ], [ 149.945831298828352, -1.673784971237183 ] ] ], [ [ [ 150.673889160156477, -1.653056025505009 ], [ 150.670562744140625, -1.650833964347783 ], [ 150.671951293945426, -1.644999027252197 ], [ 150.676376342773892, -1.648064017295724 ], [ 150.673889160156477, -1.653056025505009 ] ] ], [ [ [ 149.945831298828352, -1.673784971237183 ], [ 149.955932617187614, -1.622807025909367 ], [ 149.978683471679801, -1.638296008110046 ], [ 149.982666015625227, -1.667070031166077 ], [ 150.026458740234375, -1.670377016067391 ], [ 150.006393432617529, -1.688133955001831 ], [ 149.945831298828352, -1.673784971237183 ] ] ], [ [ [ 149.61396789550804, -1.574331998825073 ], [ 149.612243652343977, -1.573912978172245 ], [ 149.614318847656364, -1.572103023528939 ], [ 149.615005493164404, -1.572939991950989 ], [ 149.61396789550804, -1.574331998825073 ] ] ], [ [ [ 149.573150634765852, -1.566715002059937 ], [ 149.601455688476676, -1.574934005737305 ], [ 149.59980773925804, -1.58482301235199 ], [ 149.58346557617233, -1.586493968963623 ], [ 149.573150634765852, -1.566715002059937 ] ] ], [ [ [ 149.589950561523892, -1.560682058334294 ], [ 149.588165283203125, -1.55747997760767 ], [ 149.594253540039062, -1.553442001342773 ], [ 149.596267700195312, -1.55594897270197 ], [ 149.589950561523892, -1.560682058334294 ] ] ], [ [ [ 149.622909545898551, -1.554275989532471 ], [ 149.638275146484716, -1.559429049491825 ], [ 149.661239624023551, -1.595152020454407 ], [ 149.602478027343977, -1.557618975639343 ], [ 149.622909545898551, -1.554275989532471 ] ] ], [ [ [ 149.659591674804688, -1.55692195892334 ], [ 149.655014038085938, -1.55594897270197 ], [ 149.656951904296989, -1.550237059593087 ], [ 149.661666870117642, -1.553509950637817 ], [ 149.659591674804688, -1.55692195892334 ] ] ], [ [ [ 149.645599365234489, -1.545642018318119 ], [ 149.638549804687614, -1.547868967056274 ], [ 149.654953002929801, -1.531016945838928 ], [ 149.656326293945767, -1.536241054534855 ], [ 149.645599365234489, -1.545642018318119 ] ] ], [ [ [ 149.66290283203125, -1.534500002861023 ], [ 149.659591674804688, -1.530042052268982 ], [ 149.662216186523665, -1.525864005088749 ], [ 149.66595458984375, -1.529207944869995 ], [ 149.66290283203125, -1.534500002861023 ] ] ], [ [ [ 149.586776733398779, -1.52642202377308 ], [ 149.587738037109375, -1.529485940933228 ], [ 149.57916259765625, -1.52642202377308 ], [ 149.581787109375114, -1.523776054382267 ], [ 149.586776733398779, -1.52642202377308 ] ] ], [ [ [ 149.657302856445312, -1.518831014633122 ], [ 149.657714843750114, -1.512217044830265 ], [ 149.662490844726676, -1.510822057723999 ], [ 149.660003662109489, -1.517508983611947 ], [ 149.657302856445312, -1.518831014633122 ] ] ], [ [ [ 149.604003906250227, -1.519286036491394 ], [ 149.596282958984489, -1.515979051589966 ], [ 149.593063354492301, -1.50988495349884 ], [ 149.603378295898438, -1.511904001235962 ], [ 149.604003906250227, -1.519286036491394 ] ] ], [ [ [ 149.585311889648665, -1.50347805023182 ], [ 149.581298828125, -1.502156019210815 ], [ 149.579849243164176, -1.499022960662842 ], [ 149.583236694336051, -1.49804699420929 ], [ 149.585311889648665, -1.50347805023182 ] ] ], [ [ [ 149.568923950195426, -1.319321990013066 ], [ 149.681243896484375, -1.387773990631047 ], [ 149.717376708984489, -1.492020964622498 ], [ 149.748519897461279, -1.526491045951786 ], [ 149.721603393554801, -1.535683035850468 ], [ 149.705474853515852, -1.521476984023991 ], [ 149.690383911132812, -1.542366981506348 ], [ 149.658172607422102, -1.495015978813115 ], [ 149.653839111328352, -1.517369985580444 ], [ 149.626296997070312, -1.521198987960759 ], [ 149.549392700195654, -1.451979041099548 ], [ 149.514022827148665, -1.440140962600651 ], [ 149.50537109375, -1.418346047401371 ], [ 149.546142578125114, -1.357691049575692 ], [ 149.54226684570358, -1.318972945213318 ], [ 149.568923950195426, -1.319321990013066 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-NPP", "NAME_1": "Oro" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 149.442687988281477, -9.587521553039494 ], [ 149.441848754882812, -9.588834762573242 ], [ 149.4403076171875, -9.586763381957951 ], [ 149.4417724609375, -9.58648490905756 ], [ 149.442687988281477, -9.587521553039494 ] ] ], [ [ [ 148.892501831055029, -9.0644273757934 ], [ 148.889999389648551, -9.063114166259766 ], [ 148.8936767578125, -9.059547424316349 ], [ 148.893814086914176, -9.06058406829834 ], [ 148.892501831055029, -9.0644273757934 ] ] ], [ [ [ 148.325134277343977, -8.6109361648559 ], [ 148.326553344726562, -8.615341186523438 ], [ 148.32594299316429, -8.616570472717228 ], [ 148.322753906250114, -8.611220359802246 ], [ 148.325134277343977, -8.6109361648559 ] ] ], [ [ [ 148.237091064453125, -8.485573768615723 ], [ 148.23583984375, -8.486109733581543 ], [ 148.234268188476676, -8.484086036682129 ], [ 148.237213134765739, -8.483443260192871 ], [ 148.237091064453125, -8.485573768615723 ] ] ], [ [ [ 148.235290527343977, -8.48278903961176 ], [ 148.235000610351562, -8.481403350830021 ], [ 148.236129760742301, -8.480833053588867 ], [ 148.23638916015625, -8.48277473449707 ], [ 148.235290527343977, -8.48278903961176 ] ] ], [ [ [ 148.009185791015739, -8.059800148010254 ], [ 148.004730224609602, -8.057711601257324 ], [ 148.003890991210938, -8.0543212890625 ], [ 148.008071899414062, -8.056467056274414 ], [ 148.009185791015739, -8.059800148010254 ] ] ], [ [ [ 147.999374389648551, -8.05192661285389 ], [ 148.000839233398438, -8.052242279052734 ], [ 148.002944946289062, -8.05631160736084 ], [ 147.99763488769554, -8.053241729736328 ], [ 147.999374389648551, -8.05192661285389 ] ] ], [ [ [ 147.281707763671875, -8.004035949707031 ], [ 147.939407348632812, -8.005334854125977 ], [ 147.961044311523665, -8.010536193847656 ], [ 147.994445800781477, -8.072220802307072 ], [ 147.994995117187727, -8.055277824401799 ], [ 148.011108398437614, -8.0625 ], [ 148.041946411133267, -8.05341625213623 ], [ 148.053329467773665, -8.062778472900391 ], [ 148.08082580566429, -8.055556297302246 ], [ 148.101943969726562, -8.06500053405756 ], [ 148.123886108398438, -8.056112289428654 ], [ 148.119445800781364, -8.077220916748047 ], [ 148.133056640625227, -8.078055381774902 ], [ 148.150558471679688, -8.134167671203613 ], [ 148.139999389648551, -8.148611068725586 ], [ 148.165496826171989, -8.175798416137638 ], [ 148.1663818359375, -8.222499847412053 ], [ 148.206115722656477, -8.305554389953613 ], [ 148.205001831054915, -8.391944885253906 ], [ 148.225006103515739, -8.428334236144963 ], [ 148.22389221191429, -8.476388931274414 ], [ 148.23611450195358, -8.488887786865234 ], [ 148.230560302734602, -8.513055801391602 ], [ 148.216659545898892, -8.514165878295842 ], [ 148.222778320312614, -8.556111335754338 ], [ 148.279449462890739, -8.611666679382267 ], [ 148.302215576171875, -8.61944580078125 ], [ 148.342773437500114, -8.618056297302189 ], [ 148.437225341796875, -8.680277824401855 ], [ 148.473052978515739, -8.741666793823242 ], [ 148.474716186523665, -8.823332786560059 ], [ 148.493057250976562, -8.87944507598877 ], [ 148.484161376953125, -8.896665573120117 ], [ 148.508895874023438, -8.898429870605469 ], [ 148.50555419921875, -8.919721603393555 ], [ 148.52333068847679, -8.914164543151799 ], [ 148.505966186523551, -8.94679069519043 ], [ 148.52777099609375, -8.956945419311523 ], [ 148.52603149414108, -9.002663612365723 ], [ 148.540557861328125, -9.024168014526367 ], [ 148.610000610351676, -9.08777904510498 ], [ 148.761947631836165, -9.112221717834359 ], [ 148.742218017578125, -9.113887786865178 ], [ 148.743331909179801, -9.117222785949707 ], [ 148.746948242187614, -9.117831230163574 ], [ 148.878326416015739, -9.079443931579533 ], [ 148.895004272460938, -9.088889122009221 ], [ 148.882217407226562, -9.06944465637207 ], [ 148.899993896484375, -9.067501068115234 ], [ 148.90138244628929, -9.047221183776799 ], [ 149.015609741211051, -9.061659812927246 ], [ 149.032562255859602, -9.048947334289551 ], [ 149.065719604492188, -9.055769920349121 ], [ 149.061676025390739, -9.042839050292912 ], [ 149.088058471679688, -9.062223434448242 ], [ 149.08082580566429, -9.022500038146973 ], [ 149.096389770507926, -9.034167289733887 ], [ 149.106399536132926, -9.00597953796381 ], [ 149.13812255859375, -8.989233016967773 ], [ 149.141937255859375, -9.031109809875488 ], [ 149.161117553711165, -9.013054847717285 ], [ 149.167221069336165, -9.031109809875488 ], [ 149.17608642578125, -9.011726379394531 ], [ 149.187973022460938, -9.027424812316838 ], [ 149.18367004394554, -9.009914398193359 ], [ 149.20440673828125, -9.003679275512695 ], [ 149.225280761718864, -9.014445304870605 ], [ 149.234222412109602, -9.002113342285099 ], [ 149.233978271484602, -9.010290145873967 ], [ 149.237503051757812, -9.01500129699707 ], [ 149.249862670898665, -8.997082710266056 ], [ 149.239410400390625, -9.038318634033203 ], [ 149.257766723632812, -9.010821342468262 ], [ 149.259445190429801, -9.02944374084467 ], [ 149.269027709960938, -9.007781028747559 ], [ 149.278610229492415, -9.012777328491097 ], [ 149.269439697265625, -9.037222862243652 ], [ 149.293807983398779, -9.014470100402718 ], [ 149.315750122070312, -9.038761138915959 ], [ 149.30305480957054, -9.048055648803654 ], [ 149.319442749023551, -9.055000305175781 ], [ 149.290695190429801, -9.081378936767521 ], [ 149.326065063476562, -9.062788009643555 ], [ 149.328887939453239, -9.078612327575684 ], [ 149.302169799804801, -9.084284782409668 ], [ 149.286941528320654, -9.093610763549805 ], [ 149.32281494140625, -9.085396766662541 ], [ 149.315750122070312, -9.106609344482422 ], [ 149.272506713867415, -9.111109733581486 ], [ 149.328048706054915, -9.112221717834359 ], [ 149.328964233398665, -9.134897232055664 ], [ 149.297225952148551, -9.13416576385498 ], [ 149.323455810546989, -9.142623901367188 ], [ 149.317413330078125, -9.156246185302678 ], [ 149.301666259765625, -9.14888858795166 ], [ 149.313049316406364, -9.165555953979379 ], [ 149.285675048828352, -9.154644012451172 ], [ 149.291625976562727, -9.176204681396484 ], [ 149.272216796875, -9.162825584411621 ], [ 149.260833740234375, -9.173054695129338 ], [ 149.223052978515625, -9.3102769851684 ], [ 149.180297851562614, -9.339536666870117 ], [ 149.182220458984489, -9.401665687561035 ], [ 149.2386474609375, -9.497957229614258 ], [ 149.357604980468977, -9.518432617187443 ], [ 149.380828857421875, -9.548054695129395 ], [ 149.436813354492188, -9.571563720703068 ], [ 149.441925048828352, -9.597958564758301 ], [ 149.087219238281364, -9.707134246826172 ], [ 148.991210937500227, -9.702835083007812 ], [ 148.943618774414404, -9.79483509063715 ], [ 148.972106933593977, -9.867136001586914 ], [ 148.970214843750114, -9.905334472656193 ], [ 148.846710205078239, -9.940635681152287 ], [ 148.809005737304688, -9.97723388671875 ], [ 148.780319213867301, -9.944234848022461 ], [ 148.709014892578466, -9.936736106872559 ], [ 148.565719604492301, -9.875433921813965 ], [ 148.444305419921875, -9.757035255432129 ], [ 148.392608642578125, -9.741435050964355 ], [ 148.353713989257812, -9.753334045410099 ], [ 148.245117187500114, -9.746733665466252 ], [ 148.214508056640852, -9.664933204650879 ], [ 148.104415893554688, -9.610434532165471 ], [ 148.043319702148551, -9.556035995483398 ], [ 148.026611328125, -9.511835098266488 ], [ 148.052017211914176, -9.467233657836914 ], [ 148.053207397461051, -9.431235313415527 ], [ 148.033309936523665, -9.390434265136719 ], [ 147.983917236328239, -9.353534698486328 ], [ 147.986114501953239, -9.31363391876215 ], [ 147.955215454101676, -9.291033744812012 ], [ 147.90911865234375, -9.293135643005371 ], [ 147.873718261719205, -9.274435043334904 ], [ 147.827117919922102, -9.169335365295353 ], [ 147.747314453125114, -9.1651353836059 ], [ 147.693008422851562, -9.043934822082463 ], [ 147.635208129882812, -8.977034568786564 ], [ 147.553619384765739, -8.95063400268549 ], [ 147.542419433593864, -8.899934768676701 ], [ 147.501617431640625, -8.873633384704533 ], [ 147.500411987304801, -8.827235221862793 ], [ 147.46051025390625, -8.789134025573674 ], [ 147.445205688476904, -8.723333358764592 ], [ 147.633407592773551, -8.565534591674805 ], [ 147.646713256836165, -8.532934188842773 ], [ 147.461715698242415, -8.348434448242188 ], [ 147.366012573242188, -8.359833717346135 ], [ 147.004119873046989, -8.004434585571232 ], [ 147.161712646484489, -8.005234718322754 ], [ 147.203613281250227, -8.032334327697754 ], [ 147.281707763671875, -8.004035949707031 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-SAN", "NAME_1": "Sandaun" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 142.489761352539062, -3.158368110656738 ], [ 142.490829467773438, -3.160964012145882 ], [ 142.486389160156477, -3.158890008926392 ], [ 142.486862182617529, -3.157700061798096 ], [ 142.489761352539062, -3.158368110656738 ] ] ], [ [ [ 142.487777709960938, -3.151667118072453 ], [ 142.480895996093864, -3.143654108047429 ], [ 142.489501953125114, -3.139763116836491 ], [ 142.490280151367301, -3.149445056915226 ], [ 142.487777709960938, -3.151667118072453 ] ] ], [ [ [ 142.474166870117301, -3.122776985168457 ], [ 142.474166870117301, -3.128055095672551 ], [ 142.463607788085938, -3.132499933242741 ], [ 142.470550537109602, -3.12166690826416 ], [ 142.474166870117301, -3.122776985168457 ] ] ], [ [ [ 142.398025512695312, -3.116327047347966 ], [ 142.401672363281477, -3.123610973358154 ], [ 142.396392822265739, -3.128055095672551 ], [ 142.393035888671875, -3.12077093124384 ], [ 142.398025512695312, -3.116327047347966 ] ] ], [ [ [ 142.081344604492301, -3.031605005264225 ], [ 142.079971313476676, -3.030895948410034 ], [ 142.082305908203239, -3.028857946395874 ], [ 142.082717895507812, -3.029721975326481 ], [ 142.081344604492301, -3.031605005264225 ] ] ], [ [ [ 142.085830688476676, -3.031666040420532 ], [ 142.082504272461279, -3.027777910232487 ], [ 142.086105346679801, -3.025000095367432 ], [ 142.086944580078125, -3.026112079620304 ], [ 142.085830688476676, -3.031666040420532 ] ] ], [ [ [ 142.076385498046989, -3.019444942474365 ], [ 142.083053588867301, -3.023890018463078 ], [ 142.080001831054801, -3.028333902358895 ], [ 142.076385498046989, -3.024444103240967 ], [ 142.076385498046989, -3.019444942474365 ] ] ], [ [ [ 141.328796386718977, -2.696196079254094 ], [ 141.329071044921989, -2.697295904159546 ], [ 141.327682495117415, -2.697902917861882 ], [ 141.327697753906705, -2.696474075317326 ], [ 141.328796386718977, -2.696196079254094 ] ] ], [ [ [ 141.038330078125227, -2.604703903198242 ], [ 141.155746459960938, -2.6372230052948 ], [ 141.204788208007812, -2.632430076599064 ], [ 141.232589721680029, -2.656791925430298 ], [ 141.278076171875227, -2.661278963088989 ], [ 141.269241333007812, -2.676496982574463 ], [ 141.287506103515739, -2.688056945800668 ], [ 141.30555725097679, -2.66833305358881 ], [ 141.307220458984375, -2.694444894790593 ], [ 141.33917236328125, -2.713263988494873 ], [ 141.44667053222679, -2.739166021347046 ], [ 141.439727783203466, -2.750555038452092 ], [ 141.448883056640966, -2.741667032241821 ], [ 141.635345458984602, -2.841320037841797 ], [ 141.824752807617642, -2.915026903152409 ], [ 141.875839233398665, -2.971874952316284 ], [ 141.98638916015625, -2.962013959884587 ], [ 142.011535644531364, -2.97252893447876 ], [ 142.080001831054801, -3.015554904937744 ], [ 142.058334350585938, -3.021943092346135 ], [ 142.074722290039062, -3.026112079620304 ], [ 142.067779541015625, -3.050002098083496 ], [ 142.083618164062614, -3.06805491447443 ], [ 142.134445190429688, -3.060208082199097 ], [ 142.092498779297102, -3.032222032546997 ], [ 142.085006713867188, -3.020833015441895 ], [ 142.173614501953239, -3.08916711807251 ], [ 142.345550537109375, -3.123332977294922 ], [ 142.354721069335938, -3.146389007568303 ], [ 142.532775878906364, -3.232223033905029 ], [ 142.625274658203239, -3.246943950653076 ], [ 142.861663818359375, -3.327778100967407 ], [ 143.041671752929688, -3.364166975021305 ], [ 143.096572875977017, -3.357927083969116 ], [ 143.0841064453125, -3.529634952545109 ], [ 143.039215087890739, -3.538434028625488 ], [ 142.958419799804688, -3.495135068893376 ], [ 142.856719970703125, -3.471934080123901 ], [ 142.772308349609602, -3.401532888412476 ], [ 142.695709228515739, -3.444534063339177 ], [ 142.619613647461279, -3.44013500213623 ], [ 142.642013549804801, -3.516834974288884 ], [ 142.615615844726562, -3.555334091186523 ], [ 142.609619140625227, -3.667733907699528 ], [ 142.638519287109375, -3.792335033416748 ], [ 142.628906250000114, -3.90603399276722 ], [ 142.616714477539062, -3.920536041259766 ], [ 142.539718627929688, -3.93013596534729 ], [ 142.528320312500227, -4.05703592300415 ], [ 141.834716796875114, -4.059733867645264 ], [ 141.772720336914176, -4.025834083557129 ], [ 141.762817382812614, -4.00083398818964 ], [ 141.71630859375, -3.99073600769043 ], [ 141.340118408203239, -4.259035110473633 ], [ 141.339218139648438, -4.574234962463322 ], [ 141.357315063476676, -4.609535217285156 ], [ 142.31640625, -4.617634773254338 ], [ 142.321914672851562, -5.052135944366455 ], [ 142.290512084961165, -5.109734058380013 ], [ 142.320816040039176, -5.198235034942513 ], [ 142.29450988769554, -5.332633972167969 ], [ 142.187911987305142, -5.320334911346436 ], [ 142.129913330078352, -5.370535850524902 ], [ 142.110641479492415, -5.378980159759408 ], [ 142.122573852539062, -5.370335102081299 ], [ 140.999710083007812, -4.993766784667969 ], [ 141.000167846679801, -2.606300115585327 ], [ 141.038330078125227, -2.604703903198242 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-SHM", "NAME_1": "Southern Highlands" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 143.884918212890739, -5.975834846496582 ], [ 143.883117675781477, -6.048635959625244 ], [ 144.005416870117415, -5.999034881591797 ], [ 144.559814453125, -6.36993408203125 ], [ 144.542205810546989, -6.433334827423039 ], [ 144.438613891601562, -6.460936069488469 ], [ 144.423812866210938, -6.489834785461426 ], [ 144.424713134765739, -6.552534103393555 ], [ 144.539215087890625, -6.581234931945744 ], [ 144.557907104492188, -6.60433387756342 ], [ 144.557006835937727, -6.647833824157715 ], [ 144.688110351562614, -6.705434799194279 ], [ 144.626510620117301, -6.729135036468506 ], [ 143.934707641601676, -6.822734832763672 ], [ 142.665008544922216, -6.823635101318303 ], [ 142.631607055664176, -6.809134960174504 ], [ 142.627212524414176, -6.179833889007568 ], [ 142.683517456054688, -6.18023490905756 ], [ 142.886520385742415, -6.242636203765812 ], [ 143.077011108398438, -6.359333992004338 ], [ 143.080413818359489, -6.30323600769043 ], [ 143.16120910644554, -6.293034076690617 ], [ 143.17181396484375, -6.165235996246338 ], [ 143.376007080078239, -6.155035018920898 ], [ 143.375808715820767, -6.094034194946232 ], [ 143.417007446289517, -6.093635082244873 ], [ 143.394012451171875, -6.070633888244572 ], [ 143.396316528320312, -5.909033775329533 ], [ 143.528015136719205, -5.975735187530461 ], [ 143.719818115234375, -5.90273380279541 ], [ 143.867706298828352, -5.950634956359863 ], [ 143.884918212890739, -5.975834846496582 ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-WBK", "NAME_1": "West New Britain" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 149.502227783203239, -6.320833206176701 ], [ 149.504714965820312, -6.323332786560002 ], [ 149.500549316406364, -6.325832843780461 ], [ 149.49945068359375, -6.322776794433537 ], [ 149.502227783203239, -6.320833206176701 ] ] ], [ [ [ 149.873336791992301, -6.316666126251221 ], [ 149.878890991211165, -6.320833206176701 ], [ 149.8719482421875, -6.324722766876221 ], [ 149.86860656738304, -6.320833206176701 ], [ 149.873336791992301, -6.316666126251221 ] ] ], [ [ [ 149.809921264648551, -6.314436912536621 ], [ 149.813629150390852, -6.31879711151123 ], [ 149.812271118164062, -6.320236206054688 ], [ 149.806503295898779, -6.318531036376953 ], [ 149.809921264648551, -6.314436912536621 ] ] ], [ [ [ 149.890777587890739, -6.314414978027344 ], [ 149.88972473144554, -6.314102172851506 ], [ 149.890136718750227, -6.313061237335148 ], [ 149.891220092773438, -6.313406944274846 ], [ 149.890777587890739, -6.314414978027344 ] ] ], [ [ [ 149.790557861328239, -6.306389808654728 ], [ 149.797775268554688, -6.311388015747013 ], [ 149.79402160644554, -6.316894054412842 ], [ 149.783615112305029, -6.313888072967472 ], [ 149.790557861328239, -6.306389808654728 ] ] ], [ [ [ 149.504714965820312, -6.311944007873478 ], [ 149.503326416015852, -6.306667804717961 ], [ 149.5050048828125, -6.300833225250244 ], [ 149.507217407226676, -6.305277824401855 ], [ 149.504714965820312, -6.311944007873478 ] ] ], [ [ [ 149.744842529296989, -6.303383827209473 ], [ 149.743316650390739, -6.302134990692139 ], [ 149.744293212890739, -6.300397872924748 ], [ 149.745330810546875, -6.30310583114624 ], [ 149.744842529296989, -6.303383827209473 ] ] ], [ [ [ 149.824737548828352, -6.306299209594727 ], [ 149.824661254882812, -6.299953937530518 ], [ 149.828964233398438, -6.298850059509277 ], [ 149.830352783203125, -6.3032932281493 ], [ 149.824737548828352, -6.306299209594727 ] ] ], [ [ [ 149.882781982421989, -6.297704219818115 ], [ 149.883956909179688, -6.300412178039551 ], [ 149.88117980957054, -6.30082893371582 ], [ 149.880905151367188, -6.29749679565424 ], [ 149.882781982421989, -6.297704219818115 ] ] ], [ [ [ 150.307113647461392, -6.297177791595345 ], [ 150.309082031250114, -6.300496101379338 ], [ 150.319091796875114, -6.302050113677922 ], [ 150.307662963867415, -6.302923202514648 ], [ 150.307113647461392, -6.297177791595345 ] ] ], [ [ [ 149.904876708984375, -6.297369003295842 ], [ 149.91000366210983, -6.29999923706049 ], [ 149.901947021484489, -6.307499885559082 ], [ 149.901107788086279, -6.298333168029785 ], [ 149.904876708984375, -6.297369003295842 ] ] ], [ [ [ 149.926895141601562, -6.299164772033635 ], [ 149.926071166992301, -6.299718856811523 ], [ 149.923339843750227, -6.298333168029785 ], [ 149.926666259765966, -6.296111106872559 ], [ 149.926895141601562, -6.299164772033635 ] ] ], [ [ [ 149.74000549316429, -6.296249866485596 ], [ 149.742492675781364, -6.296667098999023 ], [ 149.74305725097679, -6.297501087188664 ], [ 149.738891601562727, -6.29888916015625 ], [ 149.74000549316429, -6.296249866485596 ] ] ], [ [ [ 150.0645751953125, -6.298061847686768 ], [ 150.062911987304915, -6.297505855560303 ], [ 150.062911987304915, -6.295980930328369 ], [ 150.064651489257926, -6.296257019042912 ], [ 150.0645751953125, -6.298061847686768 ] ] ], [ [ [ 149.732711791992188, -6.288541793823242 ], [ 149.73138427734375, -6.288887977600098 ], [ 149.731109619140739, -6.287197113037053 ], [ 149.732849121093864, -6.287154197692871 ], [ 149.732711791992188, -6.288541793823242 ] ] ], [ [ [ 150.073333740234489, -6.286665916442871 ], [ 150.080978393554688, -6.291454792022705 ], [ 150.078887939453125, -6.311944007873478 ], [ 150.067703247070426, -6.298132896423283 ], [ 150.073333740234489, -6.286665916442871 ] ] ], [ [ [ 150.300735473632812, -6.286299228668156 ], [ 150.299621582031477, -6.28715181350708 ], [ 150.298522949218977, -6.285764217376709 ], [ 150.299606323242188, -6.285764217376709 ], [ 150.300735473632812, -6.286299228668156 ] ] ], [ [ [ 150.329299926757926, -6.285346984863281 ], [ 150.32666015625, -6.29444503784174 ], [ 150.315490722656477, -6.293790817260742 ], [ 150.320281982421989, -6.285277843475285 ], [ 150.329299926757926, -6.285346984863281 ] ] ], [ [ [ 149.966659545898551, -6.283094882965088 ], [ 149.970275878906705, -6.28916597366333 ], [ 149.943603515625, -6.303334236144963 ], [ 149.946670532226676, -6.296945095062256 ], [ 149.966659545898551, -6.283094882965088 ] ] ], [ [ [ 150.310699462890739, -6.289976119995117 ], [ 150.30323791503929, -6.297701835632324 ], [ 150.282135009765739, -6.29046106338501 ], [ 150.311248779297102, -6.281607151031494 ], [ 150.310699462890739, -6.289976119995117 ] ] ], [ [ [ 150.294097900390739, -6.281302928924561 ], [ 150.296295166015739, -6.28272819519043 ], [ 150.29632568359375, -6.283266067504769 ], [ 150.293792724609375, -6.283266067504769 ], [ 150.294097900390739, -6.281302928924561 ] ] ], [ [ [ 149.979797363281477, -6.28113222122181 ], [ 149.977844238281477, -6.28029823303217 ], [ 149.977569580078239, -6.279326915740967 ], [ 149.979446411132926, -6.279883861541748 ], [ 149.979797363281477, -6.28113222122181 ] ] ], [ [ [ 149.879440307617301, -6.277221202850342 ], [ 149.884719848632812, -6.283055782318058 ], [ 149.869171142578352, -6.281112194061279 ], [ 149.874725341796989, -6.280000209808293 ], [ 149.879440307617301, -6.277221202850342 ] ] ], [ [ [ 150.281555175781705, -6.277139186859074 ], [ 150.284347534179688, -6.2777161598205 ], [ 150.283538818359375, -6.281045913696232 ], [ 150.279907226562841, -6.278785228729191 ], [ 150.281555175781705, -6.277139186859074 ] ] ], [ [ [ 150.276107788085938, -6.279444217681828 ], [ 150.281112670898665, -6.285151004791203 ], [ 150.281021118164176, -6.28715181350708 ], [ 150.26722717285179, -6.280834197997933 ], [ 150.276107788085938, -6.279444217681828 ] ] ], [ [ [ 150.39971923828125, -6.27972221374506 ], [ 150.393325805664517, -6.280556201934758 ], [ 150.405548095703239, -6.274445056915226 ], [ 150.404724121093864, -6.278056144714355 ], [ 150.39971923828125, -6.27972221374506 ] ] ], [ [ [ 150.312683105468864, -6.274098873138314 ], [ 150.316284179687614, -6.276856899261418 ], [ 150.316314697265739, -6.277688980102539 ], [ 150.313232421875114, -6.277966976165771 ], [ 150.312683105468864, -6.274098873138314 ] ] ], [ [ [ 150.403060913086051, -6.274721145629883 ], [ 150.398895263671989, -6.277221202850342 ], [ 150.39361572265625, -6.275833129882812 ], [ 150.401672363281364, -6.273055076599064 ], [ 150.403060913086051, -6.274721145629883 ] ] ], [ [ [ 149.930557250976676, -6.2754869461059 ], [ 149.929519653320426, -6.275140762329045 ], [ 149.928329467773551, -6.273197174072209 ], [ 149.929794311523551, -6.273475170135441 ], [ 149.930557250976676, -6.2754869461059 ] ] ], [ [ [ 150.409454345703125, -6.273609161376953 ], [ 150.410827636718864, -6.273333072662297 ], [ 150.41139221191429, -6.273889064788762 ], [ 150.409439086914062, -6.274999141693115 ], [ 150.409454345703125, -6.273609161376953 ] ] ], [ [ [ 149.926666259765966, -6.271667003631478 ], [ 149.929168701171875, -6.276525974273682 ], [ 149.92242431640625, -6.276803970336914 ], [ 149.924926757812614, -6.272572040557861 ], [ 149.926666259765966, -6.271667003631478 ] ] ], [ [ [ 150.401275634765852, -6.271615028381348 ], [ 150.400451660156591, -6.272994041442871 ], [ 150.397949218750114, -6.272690773010254 ], [ 150.398223876953352, -6.271596908569279 ], [ 150.401275634765852, -6.271615028381348 ] ] ], [ [ [ 150.298278808593977, -6.272731781005859 ], [ 150.296569824218977, -6.27102518081665 ], [ 150.296539306640625, -6.269637107849064 ], [ 150.297988891601562, -6.271010875701904 ], [ 150.298278808593977, -6.272731781005859 ] ] ], [ [ [ 150.029159545898665, -6.268610954284668 ], [ 150.030838012695312, -6.270277023315373 ], [ 150.028060913086165, -6.272221088409424 ], [ 150.026382446289062, -6.269722938537598 ], [ 150.029159545898665, -6.268610954284668 ] ] ], [ [ [ 149.964752197265739, -6.271276950836182 ], [ 149.963058471679688, -6.269722938537598 ], [ 149.963790893555142, -6.267808914184513 ], [ 149.965591430664062, -6.269279003143254 ], [ 149.964752197265739, -6.271276950836182 ] ] ], [ [ [ 150.305618286132812, -6.269581794738713 ], [ 150.30215454101608, -6.270275115966797 ], [ 150.299789428710938, -6.266528129577637 ], [ 150.301040649414062, -6.266042232513428 ], [ 150.305618286132812, -6.269581794738713 ] ] ], [ [ [ 150.419036865234489, -6.263833999633789 ], [ 150.416259765625114, -6.268287181854248 ], [ 150.41462707519554, -6.268270969390812 ], [ 150.415695190429801, -6.265494823455811 ], [ 150.419036865234489, -6.263833999633789 ] ] ], [ [ [ 150.324722290039176, -6.25972223281849 ], [ 150.328231811523665, -6.261139869689941 ], [ 150.325561523437727, -6.265554904937744 ], [ 150.322692871093977, -6.263428211212158 ], [ 150.324722290039176, -6.25972223281849 ] ] ], [ [ [ 150.429565429687955, -6.259695053100529 ], [ 150.42988586425804, -6.260779857635441 ], [ 150.436798095703352, -6.259915828704834 ], [ 150.437072753906591, -6.260779857635441 ], [ 150.424621582031364, -6.262712001800537 ], [ 150.429565429687955, -6.259695053100529 ] ] ], [ [ [ 150.447357177734489, -6.259389877319279 ], [ 150.446258544921875, -6.262184143066406 ], [ 150.441574096679915, -6.262444019317627 ], [ 150.44209289550804, -6.260221004486084 ], [ 150.447357177734489, -6.259389877319279 ] ] ], [ [ [ 150.492782592773438, -6.265000820159912 ], [ 150.488052368164062, -6.265832901000977 ], [ 150.490554809570426, -6.258887767791634 ], [ 150.491668701171875, -6.25972223281849 ], [ 150.492782592773438, -6.265000820159912 ] ] ], [ [ [ 149.552185058594205, -6.254168033599797 ], [ 149.562210083007812, -6.26439189910883 ], [ 149.562210083007812, -6.273344993591252 ], [ 149.549743652343864, -6.26226615905756 ], [ 149.552185058594205, -6.254168033599797 ] ] ], [ [ [ 150.475280761718977, -6.253612041473332 ], [ 150.467773437500114, -6.255556106567383 ], [ 150.466110229492188, -6.249443054199162 ], [ 150.472503662109375, -6.247776985168457 ], [ 150.475280761718977, -6.253612041473332 ] ] ], [ [ [ 149.542465209961051, -6.238900184631348 ], [ 149.549423217773438, -6.24778223037714 ], [ 149.546707153320426, -6.252501964569092 ], [ 149.539169311523551, -6.245041847229004 ], [ 149.542465209961051, -6.238900184631348 ] ] ], [ [ [ 149.538055419922102, -6.222588062286377 ], [ 149.544158935547102, -6.229252815246525 ], [ 149.540267944335938, -6.235361099243107 ], [ 149.534713745117188, -6.2305650711059 ], [ 149.538055419922102, -6.222588062286377 ] ] ], [ [ [ 148.913467407226676, -6.1806960105896 ], [ 148.912780761718977, -6.178055763244629 ], [ 148.918441772461279, -6.177105903625488 ], [ 148.915832519531477, -6.178194999694711 ], [ 148.913467407226676, -6.1806960105896 ] ] ], [ [ [ 148.928329467773551, -6.177639007568303 ], [ 148.926116943359375, -6.178334236144963 ], [ 148.924301147461051, -6.177221775054875 ], [ 148.928329467773551, -6.176805019378605 ], [ 148.928329467773551, -6.177639007568303 ] ] ], [ [ [ 148.954025268554915, -6.179027080535889 ], [ 148.945831298828352, -6.185554981231633 ], [ 148.929992675781477, -6.177221775054875 ], [ 148.956253051757812, -6.170278072357178 ], [ 148.954025268554915, -6.179027080535889 ] ] ], [ [ [ 149.043609619140625, -6.167221069335881 ], [ 149.049728393554915, -6.178055763244629 ], [ 149.048889160156364, -6.185000896453857 ], [ 149.038604736328466, -6.179443836212101 ], [ 149.043609619140625, -6.167221069335881 ] ] ], [ [ [ 150.559997558593977, -6.166388988494873 ], [ 150.562225341796875, -6.168055057525578 ], [ 150.560211181640852, -6.170070171356144 ], [ 150.558334350585938, -6.16833305358881 ], [ 150.559997558593977, -6.166388988494873 ] ] ], [ [ [ 149.014144897460938, -6.159199237823486 ], [ 149.028839111328125, -6.167216777801457 ], [ 149.02937316894554, -6.169651031494141 ], [ 149.01519775390625, -6.166903972625732 ], [ 149.014144897460938, -6.159199237823486 ] ] ], [ [ [ 149.003051757812727, -6.146389961242562 ], [ 149.008331298828125, -6.155279159545842 ], [ 148.996734619140852, -6.160000801086369 ], [ 148.993606567382812, -6.150556087493896 ], [ 149.003051757812727, -6.146389961242562 ] ] ], [ [ [ 149.02471923828125, -6.145555973052922 ], [ 149.022216796875, -6.143335819244385 ], [ 149.023895263671989, -6.139720916748047 ], [ 149.025283813476562, -6.140832901000977 ], [ 149.02471923828125, -6.145555973052922 ] ] ], [ [ [ 149.011016845703352, -6.139347076416016 ], [ 149.024444580078125, -6.14722204208374 ], [ 149.02166748046875, -6.153332233428898 ], [ 149.00166320800804, -6.14305591583252 ], [ 149.011016845703352, -6.139347076416016 ] ] ], [ [ [ 149.057739257812727, -6.134943962097168 ], [ 149.055114746093977, -6.138294219970703 ], [ 149.05262756347679, -6.134466171264592 ], [ 149.054229736328239, -6.13360595703125 ], [ 149.057739257812727, -6.134943962097168 ] ] ], [ [ [ 148.993896484375227, -6.137082099914551 ], [ 149.001129150390852, -6.143139839172306 ], [ 148.994445800781477, -6.148056030273381 ], [ 148.98944091796875, -6.133333206176701 ], [ 148.993896484375227, -6.137082099914551 ] ] ], [ [ [ 149.057998657226676, -6.130510807037354 ], [ 149.058334350586051, -6.13054084777832 ], [ 149.058395385742188, -6.130818843841553 ], [ 149.058059692383154, -6.13074779510498 ], [ 149.057998657226676, -6.130510807037354 ] ] ], [ [ [ 149.055831909179915, -6.13042497634882 ], [ 149.055755615234489, -6.13074779510498 ], [ 149.055557250976676, -6.130609035491943 ], [ 149.055831909179915, -6.13042497634882 ] ] ], [ [ [ 149.057998657226676, -6.130510807037354 ], [ 149.055831909179915, -6.13042497634882 ], [ 149.055557250976676, -6.129916191101017 ], [ 149.057434082031364, -6.129706859588623 ], [ 149.057998657226676, -6.130510807037354 ] ] ], [ [ [ 149.050003051757812, -6.129167079925537 ], [ 149.05389404296875, -6.130001068115234 ], [ 149.054443359375, -6.132917881011963 ], [ 149.050827026367188, -6.134167194366398 ], [ 149.050003051757812, -6.129167079925537 ] ] ], [ [ [ 148.953048706054801, -6.128057003021183 ], [ 148.971527099609602, -6.136388778686467 ], [ 148.958892822265625, -6.167359828948918 ], [ 148.965774536132812, -6.139653205871582 ], [ 148.953048706054801, -6.128057003021183 ] ] ], [ [ [ 150.708053588867301, -6.12722206115717 ], [ 150.711669921875114, -6.128334999084416 ], [ 150.710830688476562, -6.132501125335693 ], [ 150.706115722656477, -6.130833148956185 ], [ 150.708053588867301, -6.12722206115717 ] ] ], [ [ [ 148.998062133789176, -6.119167804717961 ], [ 149.006454467773551, -6.126485824584961 ], [ 149.007431030273665, -6.133772850036621 ], [ 148.99249267578125, -6.128334999084416 ], [ 148.998062133789176, -6.119167804717961 ] ] ], [ [ [ 149.007904052734375, -6.111886024475098 ], [ 149.011520385742529, -6.116187095642033 ], [ 149.011108398437614, -6.117646217346191 ], [ 149.006805419921875, -6.114106178283691 ], [ 149.007904052734375, -6.111886024475098 ] ] ], [ [ [ 149.029647827148438, -6.109457015991211 ], [ 149.029998779296989, -6.110983848571777 ], [ 149.028335571289062, -6.111398220062199 ], [ 149.028610229492415, -6.110013008117676 ], [ 149.029647827148438, -6.109457015991211 ] ] ], [ [ [ 148.988067626953125, -6.107157230377197 ], [ 148.990005493164062, -6.11333322525013 ], [ 148.985275268554801, -6.116943836212158 ], [ 148.981948852539176, -6.111667156219482 ], [ 148.988067626953125, -6.107157230377197 ] ] ], [ [ [ 148.982086181640739, -6.109445095062256 ], [ 148.979171752929801, -6.109167098999023 ], [ 148.979721069335938, -6.10694503784174 ], [ 148.980972290039176, -6.10736179351801 ], [ 148.982086181640739, -6.109445095062256 ] ] ], [ [ [ 148.959304809570312, -6.107068061828556 ], [ 148.958892822265625, -6.107915878295898 ], [ 148.957916259765739, -6.107223033904972 ], [ 148.958618164062955, -6.1061110496521 ], [ 148.959304809570312, -6.107068061828556 ] ] ], [ [ [ 149.029998779296989, -6.107165813446045 ], [ 149.02825927734375, -6.106542110443115 ], [ 149.029159545898665, -6.105014801025391 ], [ 149.030273437500227, -6.105848789215088 ], [ 149.029998779296989, -6.107165813446045 ] ] ], [ [ [ 149.011596679687614, -6.104680061340275 ], [ 149.0128173828125, -6.107523918151799 ], [ 149.011383056640625, -6.109885215759221 ], [ 149.007995605468977, -6.106553077697754 ], [ 149.011596679687614, -6.104680061340275 ] ] ], [ [ [ 149.038818359375, -6.104454040527344 ], [ 149.04437255859375, -6.109694004058781 ], [ 149.036666870117301, -6.114155769348031 ], [ 149.035003662109375, -6.107461929321289 ], [ 149.038818359375, -6.104454040527344 ] ] ], [ [ [ 148.998199462890625, -6.104444980621281 ], [ 148.999450683593864, -6.106389045715332 ], [ 148.997909545898892, -6.107501029968205 ], [ 148.996383666992642, -6.105833053588867 ], [ 148.998199462890625, -6.104444980621281 ] ] ], [ [ [ 149.033569335937727, -6.101908206939697 ], [ 149.036087036132812, -6.103321075439396 ], [ 149.034973144531364, -6.106917858123779 ], [ 149.032485961914176, -6.103011131286564 ], [ 149.033569335937727, -6.101908206939697 ] ] ], [ [ [ 149.455825805664176, -6.102778911590576 ], [ 149.454727172851676, -6.101109981536865 ], [ 149.456466674804688, -6.100831985473633 ], [ 149.457214355468864, -6.10208082199091 ], [ 149.455825805664176, -6.102778911590576 ] ] ], [ [ [ 149.01690673828125, -6.099437236785889 ], [ 149.016616821289176, -6.100757122039738 ], [ 149.013916015625227, -6.100212097167969 ], [ 149.014434814453125, -6.098580837249756 ], [ 149.01690673828125, -6.099437236785889 ] ] ], [ [ [ 149.020431518554801, -6.097891807556096 ], [ 149.027908325195426, -6.108553886413517 ], [ 149.018814086914062, -6.114729881286621 ], [ 149.015274047851676, -6.103369235992432 ], [ 149.020431518554801, -6.097891807556096 ] ] ], [ [ [ 149.415283203125114, -6.096943855285645 ], [ 149.416671752929688, -6.099443912506104 ], [ 149.413330078125455, -6.099443912506104 ], [ 149.41278076171875, -6.098609924316406 ], [ 149.415283203125114, -6.096943855285645 ] ] ], [ [ [ 148.960693359375227, -6.095417022705021 ], [ 148.966110229492301, -6.099721908569336 ], [ 148.960968017578239, -6.103474140167236 ], [ 148.956390380859489, -6.098609924316406 ], [ 148.960693359375227, -6.095417022705021 ] ] ], [ [ [ 148.94305419921875, -6.098055839538517 ], [ 148.941940307617188, -6.096111774444523 ], [ 148.943603515625114, -6.094861030578556 ], [ 148.944168090820426, -6.097221851348877 ], [ 148.94305419921875, -6.098055839538517 ] ] ], [ [ [ 148.9486083984375, -6.09597110748291 ], [ 148.952224731445312, -6.096527099609375 ], [ 148.94805908203125, -6.102778911590576 ], [ 148.945831298828352, -6.09833383560175 ], [ 148.9486083984375, -6.09597110748291 ] ] ], [ [ [ 148.972229003906591, -6.096943855285645 ], [ 148.97138977050804, -6.09638786315918 ], [ 148.972229003906591, -6.093612194061222 ], [ 148.973892211914176, -6.095277786254826 ], [ 148.972229003906591, -6.096943855285645 ] ] ], [ [ [ 149.444900512695312, -6.091944217681828 ], [ 149.453048706054801, -6.093887805938721 ], [ 149.456390380859489, -6.097361087799072 ], [ 149.446014404297216, -6.094320774078312 ], [ 149.444900512695312, -6.091944217681828 ] ] ], [ [ [ 148.988189697265739, -6.091666221618596 ], [ 148.990692138671875, -6.098749160766602 ], [ 148.980270385742188, -6.101387977600098 ], [ 148.978607177734489, -6.095277786254826 ], [ 148.988189697265739, -6.091666221618596 ] ] ], [ [ [ 149.047271728515739, -6.091963768005314 ], [ 149.044418334961165, -6.102403163909855 ], [ 149.034927368164176, -6.101222038268986 ], [ 149.04267883300804, -6.089425086975041 ], [ 149.047271728515739, -6.091963768005314 ] ] ], [ [ [ 149.44091796875, -6.090229988098145 ], [ 149.438980102539062, -6.09078407287592 ], [ 149.437026977539176, -6.090158939361459 ], [ 149.4378662109375, -6.089395999908334 ], [ 149.44091796875, -6.090229988098145 ] ] ], [ [ [ 148.999588012695426, -6.084473133087101 ], [ 149.004119873046875, -6.091364860534668 ], [ 149.000839233398779, -6.093605041503849 ], [ 148.996185302734602, -6.090164184570256 ], [ 148.999588012695426, -6.084473133087101 ] ] ], [ [ [ 148.994583129882812, -6.08805513381958 ], [ 148.989303588867415, -6.087915897369385 ], [ 148.991943359375227, -6.081110954284554 ], [ 148.993881225586165, -6.0813889503479 ], [ 148.994583129882812, -6.08805513381958 ] ] ], [ [ [ 149.020553588867415, -6.076388835906982 ], [ 149.037780761718864, -6.079722881317139 ], [ 149.043060302734602, -6.088612079620361 ], [ 149.007781982421989, -6.087499141693115 ], [ 149.020553588867415, -6.076388835906982 ] ] ], [ [ [ 148.950302124023438, -6.07305717468256 ], [ 148.955001831054801, -6.074443817138615 ], [ 148.955825805664404, -6.078125 ], [ 148.945968627929915, -6.074305057525578 ], [ 148.950302124023438, -6.07305717468256 ] ] ], [ [ [ 148.985549926757926, -6.071387767791691 ], [ 148.993606567382812, -6.076528072357178 ], [ 148.988754272461392, -6.082084178924561 ], [ 148.979446411132926, -6.076666831970215 ], [ 148.985549926757926, -6.071387767791691 ] ] ], [ [ [ 148.946945190429801, -6.061943054199162 ], [ 148.948745727539176, -6.063124179840088 ], [ 148.945693969726676, -6.066666126251221 ], [ 148.942779541015852, -6.062777996063176 ], [ 148.946945190429801, -6.061943054199162 ] ] ], [ [ [ 148.953964233398438, -6.061389923095646 ], [ 148.955413818359489, -6.062794208526611 ], [ 148.953338623046989, -6.063611984252873 ], [ 148.951950073242301, -6.061943054199162 ], [ 148.953964233398438, -6.061389923095646 ] ] ], [ [ [ 148.995422363281477, -6.060694217681885 ], [ 148.999160766601562, -6.061665058135929 ], [ 148.994445800781477, -6.068056106567383 ], [ 148.99249267578125, -6.065556049346924 ], [ 148.995422363281477, -6.060694217681885 ] ] ], [ [ [ 148.984451293945312, -6.057776927947998 ], [ 148.980270385742188, -6.056666851043701 ], [ 148.986251831054915, -6.05111122131342 ], [ 148.987716674804688, -6.054234981536865 ], [ 148.984451293945312, -6.057776927947998 ] ] ], [ [ [ 148.865280151367188, -6.02555513381958 ], [ 148.862503051757926, -6.023333072662354 ], [ 148.867919921875, -6.01805591583252 ], [ 148.868331909179688, -6.023889064788818 ], [ 148.865280151367188, -6.02555513381958 ] ] ], [ [ [ 148.868331909179688, -6.009722232818604 ], [ 148.871383666992188, -6.012777805328369 ], [ 148.865829467773438, -6.016387939453125 ], [ 148.864440917968864, -6.011665821075439 ], [ 148.868331909179688, -6.009722232818604 ] ] ], [ [ [ 148.858184814453125, -6.003606796264648 ], [ 148.856994628906364, -6.008845806121826 ], [ 148.852508544922102, -6.007771015167236 ], [ 148.852508544922102, -6.005652904510441 ], [ 148.858184814453125, -6.003606796264648 ] ] ], [ [ [ 148.876296997070312, -6.001349925994873 ], [ 148.88470458984375, -6.001905918121338 ], [ 148.884490966797216, -6.009192943572941 ], [ 148.873870849609602, -6.006694793701172 ], [ 148.876296997070312, -6.001349925994873 ] ] ], [ [ [ 148.869934082031364, -5.995347023010254 ], [ 148.873275756835938, -5.997222900390625 ], [ 148.873886108398551, -5.998332977294865 ], [ 148.869171142578239, -5.998332977294865 ], [ 148.869934082031364, -5.995347023010254 ] ] ], [ [ [ 148.871246337890852, -5.982638835906982 ], [ 148.883056640625227, -5.994166851043701 ], [ 148.881668090820312, -5.997500896453857 ], [ 148.865005493164176, -5.99027776718134 ], [ 148.871246337890852, -5.982638835906982 ] ] ], [ [ [ 148.713409423828125, -5.953402042388802 ], [ 148.711944580078352, -5.953333854675293 ], [ 148.712493896484375, -5.950832843780518 ], [ 148.713470458984602, -5.95111083984375 ], [ 148.713409423828125, -5.953402042388802 ] ] ], [ [ [ 148.696533203125227, -5.953333854675293 ], [ 148.694717407226562, -5.951666831970158 ], [ 148.698883056640739, -5.948888778686467 ], [ 148.699172973632926, -5.95111083984375 ], [ 148.696533203125227, -5.953333854675293 ] ] ], [ [ [ 148.734558105468864, -5.94838285446167 ], [ 148.733932495117642, -5.94817399978632 ], [ 148.733856201171875, -5.947203159332162 ], [ 148.735107421875, -5.947619915008545 ], [ 148.734558105468864, -5.94838285446167 ] ] ], [ [ [ 148.73211669921875, -5.94677019119257 ], [ 148.73066711425804, -5.944477081298828 ], [ 148.73309326171875, -5.942045211791992 ], [ 148.734024047851562, -5.942777156829777 ], [ 148.73211669921875, -5.94677019119257 ] ] ], [ [ [ 148.629760742187727, -5.837337017059269 ], [ 148.628936767578125, -5.837268829345646 ], [ 148.629058837890625, -5.8361558914184 ], [ 148.630187988281364, -5.836573123931828 ], [ 148.629760742187727, -5.837337017059269 ] ] ], [ [ [ 149.72222900390625, -5.548889160156136 ], [ 149.720550537109602, -5.547499179840031 ], [ 149.723327636718864, -5.546667098999023 ], [ 149.723617553711051, -5.547777175903263 ], [ 149.72222900390625, -5.548889160156136 ] ] ], [ [ [ 149.491836547851562, -5.526976108551025 ], [ 149.490829467773551, -5.525992870330811 ], [ 149.491882324218977, -5.524901866912842 ], [ 149.492675781250455, -5.5260910987854 ], [ 149.491836547851562, -5.526976108551025 ] ] ], [ [ [ 149.443450927734602, -5.514013767242375 ], [ 149.435791015625114, -5.523055076599121 ], [ 149.428161621093864, -5.515243053436279 ], [ 149.440689086914062, -5.512257099151554 ], [ 149.443450927734602, -5.514013767242375 ] ] ], [ [ [ 149.452743530273438, -5.51170110702509 ], [ 149.45375061035179, -5.514388084411621 ], [ 149.449462890625, -5.513545036315861 ], [ 149.449935913086165, -5.511956214904785 ], [ 149.452743530273438, -5.51170110702509 ] ] ], [ [ [ 149.713088989257812, -5.507778167724553 ], [ 149.710906982421875, -5.506526947021428 ], [ 149.716629028320312, -5.502354145049992 ], [ 149.715499877929801, -5.507041931152344 ], [ 149.713088989257812, -5.507778167724553 ] ] ], [ [ [ 150.104934692383267, -5.499934196472111 ], [ 150.105560302734489, -5.502222061157227 ], [ 150.102401733398665, -5.502586841583252 ], [ 150.103683471679688, -5.500279903411808 ], [ 150.104934692383267, -5.499934196472111 ] ] ], [ [ [ 149.761947631836051, -5.50111198425293 ], [ 149.76055908203125, -5.498889923095646 ], [ 149.761108398437841, -5.496111869811955 ], [ 149.762771606445426, -5.496942996978703 ], [ 149.761947631836051, -5.50111198425293 ] ] ], [ [ [ 149.084793090820312, -5.497220993041935 ], [ 149.084442138672102, -5.496111869811955 ], [ 149.086944580078239, -5.495554924011117 ], [ 149.086105346679688, -5.497220993041935 ], [ 149.084793090820312, -5.497220993041935 ] ] ], [ [ [ 149.621383666992301, -5.486945152282658 ], [ 149.620834350586165, -5.483057022094727 ], [ 149.623886108398665, -5.481110095977783 ], [ 149.62554931640625, -5.484723091125431 ], [ 149.621383666992301, -5.486945152282658 ] ] ], [ [ [ 150.862808227539062, -5.479138851165771 ], [ 150.862121582031477, -5.478860855102539 ], [ 150.862335205078352, -5.477748870849609 ], [ 150.863159179687614, -5.477955818176213 ], [ 150.862808227539062, -5.479138851165771 ] ] ], [ [ [ 149.090026855468977, -5.478994846343994 ], [ 149.089324951171989, -5.478371143341064 ], [ 149.090942382812614, -5.477714061737004 ], [ 149.090988159180142, -5.478507041931152 ], [ 149.090026855468977, -5.478994846343994 ] ] ], [ [ [ 150.855880737304688, -5.479000091552734 ], [ 150.855178833007812, -5.478929042816162 ], [ 150.855392456054688, -5.477191925048828 ], [ 150.856155395507812, -5.477610111236515 ], [ 150.855880737304688, -5.479000091552734 ] ] ], [ [ [ 148.883270263672102, -5.473055839538574 ], [ 148.881942749023892, -5.471943855285588 ], [ 148.883895874023551, -5.469998836517334 ], [ 148.883819580078352, -5.47222185134882 ], [ 148.883270263672102, -5.473055839538574 ] ] ], [ [ [ 148.499053955078125, -5.470859050750676 ], [ 148.498214721679688, -5.470581054687443 ], [ 148.498764038086051, -5.469192981719971 ], [ 148.499740600585938, -5.469677925109863 ], [ 148.499053955078125, -5.470859050750676 ] ] ], [ [ [ 149.688888549804915, -5.46527719497675 ], [ 149.696945190429915, -5.473988056182861 ], [ 149.695617675781705, -5.479425907134896 ], [ 149.688812255859489, -5.472446918487549 ], [ 149.688888549804915, -5.46527719497675 ] ] ], [ [ [ 148.882919311523438, -5.464445114135742 ], [ 148.881942749023892, -5.464583873748779 ], [ 148.881042480468864, -5.463857173919564 ], [ 148.882080078125227, -5.463055133819523 ], [ 148.882919311523438, -5.464445114135742 ] ] ], [ [ [ 149.710556030273551, -5.464723110198975 ], [ 149.709167480468864, -5.464999198913574 ], [ 149.708328247070312, -5.464445114135742 ], [ 149.711105346679801, -5.462777137756291 ], [ 149.710556030273551, -5.464723110198975 ] ] ], [ [ [ 148.942489624023438, -5.461503028869629 ], [ 148.94110107421875, -5.461835861205998 ], [ 148.94110107421875, -5.461000919341984 ], [ 148.942733764648665, -5.460696220397949 ], [ 148.942489624023438, -5.461503028869629 ] ] ], [ [ [ 149.682495117187614, -5.438333034515381 ], [ 149.681671142578352, -5.436666965484562 ], [ 149.683609008789176, -5.435000896453801 ], [ 149.68417358398483, -5.436388969421387 ], [ 149.682495117187614, -5.438333034515381 ] ] ], [ [ [ 150.791107177734375, -5.428887844085693 ], [ 150.79194641113304, -5.426943778991699 ], [ 150.794448852539176, -5.427499771118107 ], [ 150.793334960937614, -5.428609848022461 ], [ 150.791107177734375, -5.428887844085693 ] ] ], [ [ [ 148.972259521484375, -5.424708843231087 ], [ 148.971282958984375, -5.424081802368107 ], [ 148.97247314453125, -5.422623157501164 ], [ 148.973373413086279, -5.423317909240723 ], [ 148.972259521484375, -5.424708843231087 ] ] ], [ [ [ 150.80722045898483, -5.413332939147892 ], [ 150.808456420898438, -5.414467811584473 ], [ 150.807464599609489, -5.415753841400146 ], [ 150.806106567382812, -5.41416692733759 ], [ 150.80722045898483, -5.413332939147892 ] ] ], [ [ [ 150.060592651367188, -5.368010044097844 ], [ 150.059722900390852, -5.369721889495793 ], [ 150.05810546875, -5.367195129394474 ], [ 150.059555053711051, -5.367125988006592 ], [ 150.060592651367188, -5.368010044097844 ] ] ], [ [ [ 150.057785034179801, -5.359999179840031 ], [ 150.060073852539176, -5.361664772033691 ], [ 150.060073852539176, -5.362218856811523 ], [ 150.056594848632812, -5.361811161041203 ], [ 150.057785034179801, -5.359999179840031 ] ] ], [ [ [ 150.494720458984375, -5.343887805938721 ], [ 150.49444580078125, -5.355555057525635 ], [ 150.488327026367301, -5.359167098999023 ], [ 150.487258911132812, -5.344338893890324 ], [ 150.494720458984375, -5.343887805938721 ] ] ], [ [ [ 150.05360412597679, -5.339909076690674 ], [ 150.053680419921989, -5.341506004333439 ], [ 150.052429199218977, -5.341923236846867 ], [ 150.0523681640625, -5.340117931365853 ], [ 150.05360412597679, -5.339909076690674 ] ] ], [ [ [ 150.057800292968977, -5.32863187789917 ], [ 150.056900024414062, -5.32791614532465 ], [ 150.058395385742642, -5.326662063598633 ], [ 150.058609008789062, -5.327498912811222 ], [ 150.057800292968977, -5.32863187789917 ] ] ], [ [ [ 150.050003051758267, -5.318056106567383 ], [ 150.049163818359375, -5.318056106567383 ], [ 150.048538208007926, -5.316181182861271 ], [ 150.05055236816429, -5.316666126251164 ], [ 150.050003051758267, -5.318056106567383 ] ] ], [ [ [ 150.10467529296875, -5.295286178588867 ], [ 150.10369873046875, -5.294867992401123 ], [ 150.103561401367301, -5.293201923370304 ], [ 150.105575561523779, -5.29389476776123 ], [ 150.10467529296875, -5.295286178588867 ] ] ], [ [ [ 150.093505859375114, -5.295429229736328 ], [ 150.091232299804688, -5.293315887451172 ], [ 150.092773437500114, -5.292222023010254 ], [ 150.094970703125114, -5.293922901153564 ], [ 150.093505859375114, -5.295429229736328 ] ] ], [ [ [ 150.026779174804801, -5.288547992706185 ], [ 150.026214599609489, -5.289867877960148 ], [ 150.023239135742415, -5.288755893707219 ], [ 150.02400207519554, -5.287783145904541 ], [ 150.026779174804801, -5.288547992706185 ] ] ], [ [ [ 150.075836181640625, -5.286665916442814 ], [ 150.088027954101904, -5.302546977996826 ], [ 150.070724487304688, -5.318206787109375 ], [ 150.05476379394554, -5.305905818939152 ], [ 150.075836181640625, -5.286665916442814 ] ] ], [ [ [ 150.043548583984375, -5.284893035888615 ], [ 150.045288085937614, -5.28565597534174 ], [ 150.043487548828352, -5.287185192108097 ], [ 150.042160034179915, -5.285865783691293 ], [ 150.043548583984375, -5.284893035888615 ] ] ], [ [ [ 150.069122314453239, -5.275010108947697 ], [ 150.069122314453239, -5.275842189788818 ], [ 150.067810058594091, -5.27521800994873 ], [ 150.068023681640625, -5.274384021759033 ], [ 150.069122314453239, -5.275010108947697 ] ] ], [ [ [ 150.101425170898438, -5.234457969665527 ], [ 150.099334716796875, -5.23452615737915 ], [ 150.099411010742301, -5.233416080474854 ], [ 150.101837158203239, -5.232371807098389 ], [ 150.101425170898438, -5.234457969665527 ] ] ], [ [ [ 150.375549316406364, -5.209166049957275 ], [ 150.374374389648438, -5.204236030578556 ], [ 150.37646484375, -5.203165054321289 ], [ 150.37847900390625, -5.206638813018799 ], [ 150.375549316406364, -5.209166049957275 ] ] ], [ [ [ 150.202301025390625, -5.093002796173096 ], [ 150.200973510742188, -5.092517852783203 ], [ 150.201828002930142, -5.090435028076115 ], [ 150.202926635742301, -5.092030048370361 ], [ 150.202301025390625, -5.093002796173096 ] ] ], [ [ [ 150.193328857421875, -5.085000991821289 ], [ 150.196395874023438, -5.088055133819523 ], [ 150.194641113281364, -5.089914798736515 ], [ 150.192825317382926, -5.089294910430851 ], [ 150.193328857421875, -5.085000991821289 ] ] ], [ [ [ 151.210006713867301, -4.954995155334473 ], [ 151.210281372070426, -4.959447860717717 ], [ 151.206939697265852, -4.960281848907414 ], [ 151.206390380859489, -4.955560207366943 ], [ 151.210006713867301, -4.954995155334473 ] ] ], [ [ [ 151.3646240234375, -4.917444229125977 ], [ 151.475830078125, -4.950832843780461 ], [ 151.531448364257926, -4.923934936523381 ], [ 151.583587646484375, -4.965909004211369 ], [ 151.646469116211051, -4.932185173034611 ], [ 151.690017700195312, -4.97843599319458 ], [ 151.429611206054688, -4.981234073638916 ], [ 151.342208862304915, -5.039535045623779 ], [ 151.265213012695426, -5.150934219360295 ], [ 151.142211914062614, -5.39533519744873 ], [ 151.152908325195312, -5.421435832977238 ], [ 151.213607788085938, -5.432634830474854 ], [ 151.212509155273665, -5.474934101104736 ], [ 151.030319213867415, -5.609535217285099 ], [ 150.950515747070426, -5.599034786224365 ], [ 150.939010620117415, -5.626934051513672 ], [ 150.954818725586165, -5.673435211181584 ], [ 150.945816040039062, -5.702435016632023 ], [ 150.814514160156364, -5.748035907745361 ], [ 150.729217529296989, -5.732833862304631 ], [ 150.594207763671989, -5.73863410949707 ], [ 150.606811523437614, -5.919235229492188 ], [ 150.780181884765739, -6.075234889984074 ], [ 150.746673583984375, -6.126666069030705 ], [ 150.73388671875, -6.110555171966553 ], [ 150.623016357421989, -6.156857967376652 ], [ 150.626663208008154, -6.128610134124756 ], [ 150.61236572265625, -6.134583950042725 ], [ 150.605560302734602, -6.119999885559082 ], [ 150.605560302734602, -6.138610839843693 ], [ 150.586044311523438, -6.152778148651123 ], [ 150.570281982421989, -6.143611907958984 ], [ 150.575942993164062, -6.159893989562988 ], [ 150.559448242187727, -6.150556087493896 ], [ 150.463333129882926, -6.248054981231689 ], [ 150.421661376953125, -6.253890037536564 ], [ 150.383895874023438, -6.278056144714355 ], [ 150.350555419921989, -6.25666618347168 ], [ 150.324722290039176, -6.280000209808293 ], [ 150.319427490234375, -6.274406909942627 ], [ 150.330276489257812, -6.266287803649846 ], [ 150.328887939453125, -6.260831832885685 ], [ 150.325195312500114, -6.257500171661377 ], [ 150.31129455566429, -6.272411823272705 ], [ 150.308334350585938, -6.265000820159912 ], [ 150.288085937500114, -6.264412879943848 ], [ 150.289993286132926, -6.274721145629883 ], [ 150.226394653320426, -6.281387805938664 ], [ 150.225006103515625, -6.25083398818964 ], [ 150.207778930664176, -6.260831832885685 ], [ 150.189163208007812, -6.23375415802002 ], [ 150.16194152832054, -6.238057136535645 ], [ 150.1683349609375, -6.222776889801025 ], [ 150.167221069335938, -6.217501163482666 ], [ 150.153884887695312, -6.25083398818964 ], [ 150.083892822265852, -6.286943912506104 ], [ 150.06719970703125, -6.247820854187012 ], [ 150.047866821289176, -6.240231037139893 ], [ 150.035018920898438, -6.257638931274414 ], [ 150.050003051758267, -6.262500762939396 ], [ 150.021072387695426, -6.265933036804086 ], [ 150.01861572265625, -6.274445056915226 ], [ 150.038330078125114, -6.287777900695801 ], [ 149.998886108398892, -6.31694507598877 ], [ 150.011672973632926, -6.28916597366333 ], [ 150.002563476562614, -6.266452789306641 ], [ 150.004196166992415, -6.283618927001953 ], [ 149.991394042968977, -6.285555839538517 ], [ 149.953887939453239, -6.252778053283691 ], [ 149.938613891602017, -6.272499084472656 ], [ 149.933624267578352, -6.266425132751465 ], [ 149.913986206054915, -6.271990776062012 ], [ 149.899444580078125, -6.294723033904972 ], [ 149.888412475586051, -6.267380237579289 ], [ 149.86138916015625, -6.258056163787842 ], [ 149.851943969726562, -6.285555839538517 ], [ 149.74806213378929, -6.268332958221436 ], [ 149.703063964843864, -6.271527767181396 ], [ 149.669448852539176, -6.293055057525635 ], [ 149.659866333007812, -6.281390190124512 ], [ 149.607772827148438, -6.291388988494816 ], [ 149.553756713867301, -6.241651058196965 ], [ 149.539993286132926, -6.189723014831486 ], [ 149.533615112304688, -6.213889122009277 ], [ 149.49360656738304, -6.138054847717285 ], [ 149.469528198242188, -6.125061988830566 ], [ 149.469726562500227, -6.09333419799799 ], [ 149.333328247070312, -6.054444789886418 ], [ 149.252578735351676, -6.057149887084847 ], [ 149.228546142578239, -6.093471050262451 ], [ 149.181671142578125, -6.091944217681828 ], [ 149.181396484375455, -6.079034805297852 ], [ 149.15167236328125, -6.092500209808293 ], [ 149.153549194336392, -6.080416202545109 ], [ 149.141113281250114, -6.074443817138615 ], [ 149.149444580078125, -6.090556144714355 ], [ 149.121948242187614, -6.140832901000977 ], [ 149.102783203125227, -6.151666164398193 ], [ 149.068054199218864, -6.139720916748047 ], [ 149.038345336914517, -6.161616802215576 ], [ 149.030807495117188, -6.135561943054142 ], [ 149.045837402343864, -6.149188995361328 ], [ 149.061248779296989, -6.132773876190186 ], [ 149.059585571289404, -6.127500057220402 ], [ 149.038192749023551, -6.123610019683781 ], [ 149.059204101562841, -6.111837863922119 ], [ 149.046661376953125, -6.108333110809326 ], [ 149.052764892578125, -6.091372013091984 ], [ 149.030410766601562, -6.069028854370117 ], [ 149.005004882812614, -6.071527004241887 ], [ 149.033737182617415, -6.041240215301457 ], [ 149.0328369140625, -6.015212059020882 ], [ 149.009994506836279, -6.043056011199894 ], [ 149.008346557617415, -6.025833129882812 ], [ 148.913894653320312, -6.010278224945012 ], [ 148.865997314453125, -5.976455211639404 ], [ 148.846786499023665, -5.993813037872314 ], [ 148.842758178710938, -5.974356174468937 ], [ 148.866638183593864, -5.955499172210693 ], [ 148.813049316406364, -5.911387920379639 ], [ 148.774444580078125, -5.911943912506104 ], [ 148.775482177734602, -5.928472995758057 ], [ 148.746902465820767, -5.942441940307617 ], [ 148.767501831055142, -5.912221908569336 ], [ 148.749664306640625, -5.863173007965031 ], [ 148.71630859375, -5.872972965240422 ], [ 148.697311401367642, -5.851208209991398 ], [ 148.650024414062614, -5.852757930755558 ], [ 148.604263305664062, -5.804876804351807 ], [ 148.573028564453125, -5.816949844360352 ], [ 148.5689697265625, -5.838066101074219 ], [ 148.54872131347679, -5.834379196166992 ], [ 148.506912231445426, -5.796977996826172 ], [ 148.39784240722679, -5.77036714553833 ], [ 148.346343994140852, -5.730488777160588 ], [ 148.309997558594091, -5.658333778381348 ], [ 148.326934814453125, -5.600527763366642 ], [ 148.318603515625, -5.564723014831543 ], [ 148.348114013671989, -5.483745098114014 ], [ 148.415039062500114, -5.443070888519287 ], [ 148.492568969726562, -5.472900867462158 ], [ 148.519638061523438, -5.497378826141244 ], [ 148.521041870117415, -5.526931762695256 ], [ 148.557098388672102, -5.538535118102971 ], [ 148.650894165039062, -5.476984977722168 ], [ 148.731842041015739, -5.481948852539062 ], [ 148.797393798828352, -5.531920909881592 ], [ 148.84986877441429, -5.518847942352295 ], [ 148.876937866211051, -5.480278015136719 ], [ 148.897445678711051, -5.486854076385441 ], [ 148.976211547851676, -5.457078933715763 ], [ 149.048675537109375, -5.498382091522217 ], [ 149.070297241210938, -5.488365173339844 ], [ 149.085845947265739, -5.509693145751839 ], [ 149.115097045898438, -5.506971836090031 ], [ 149.180709838867188, -5.537470817565918 ], [ 149.178436279296875, -5.556922912597656 ], [ 149.199539184570312, -5.546717166900635 ], [ 149.210250854492301, -5.583265781402531 ], [ 149.263641357421989, -5.573348999023438 ], [ 149.258331298828466, -5.592223167419377 ], [ 149.292984008789176, -5.560628890991211 ], [ 149.330551147461392, -5.567777156829777 ], [ 149.361648559570426, -5.554773807525635 ], [ 149.375839233398438, -5.570555210113525 ], [ 149.406707763671989, -5.540073871612549 ], [ 149.424621582031364, -5.558008193969727 ], [ 149.440765380859602, -5.557107925414982 ], [ 149.44630432128929, -5.536186218261662 ], [ 149.487915039062614, -5.558201789855957 ], [ 149.504272460937614, -5.53067684173584 ], [ 149.527496337890625, -5.534721851348877 ], [ 149.516616821289062, -5.528069972991943 ], [ 149.57757568359375, -5.496207237243596 ], [ 149.603149414062614, -5.49037504196167 ], [ 149.60150146484375, -5.505498886108398 ], [ 149.6697998046875, -5.491849899291992 ], [ 149.66131591796875, -5.447894096374512 ], [ 149.685516357421989, -5.476587772369385 ], [ 149.673553466796989, -5.540067195892334 ], [ 149.728134155273438, -5.550938129425049 ], [ 149.729629516601676, -5.532049179077092 ], [ 149.775207519531364, -5.519064903259277 ], [ 149.781845092773551, -5.482657909393254 ], [ 149.875839233398665, -5.518332958221379 ], [ 149.940536499023551, -5.468136787414437 ], [ 149.96626281738304, -5.413581848144531 ], [ 149.963821411132812, -5.395048141479492 ], [ 149.928985595703125, -5.385315895080566 ], [ 149.901870727539404, -5.336665153503361 ], [ 149.952880859375114, -5.270842075347844 ], [ 150.000000000000227, -5.257222175598145 ], [ 150.026107788086165, -5.204167842864933 ], [ 149.997802734375114, -5.134904861450195 ], [ 150.029861450195312, -5.099583148956299 ], [ 150.027023315429688, -5.027993202209416 ], [ 150.039352416992188, -5.009679794311523 ], [ 150.093612670898438, -4.997499942779484 ], [ 150.163894653320312, -5.025279045104924 ], [ 150.19232177734375, -5.056291103363037 ], [ 150.180282592773551, -5.088055133819523 ], [ 150.072296142578352, -5.134239196777344 ], [ 150.058334350586165, -5.174446105956974 ], [ 150.080551147460938, -5.217501163482666 ], [ 150.069168090820312, -5.241666793823242 ], [ 150.080245971679688, -5.255968093871957 ], [ 150.018051147460938, -5.286943912506047 ], [ 150.046615600586051, -5.305016994476318 ], [ 150.04888916015625, -5.343887805938721 ], [ 150.057769775390852, -5.352013111114502 ], [ 150.046447753906591, -5.360977172851562 ], [ 150.080490112304915, -5.400086879730225 ], [ 150.102386474609375, -5.479787826538029 ], [ 150.093643188476676, -5.517468929290771 ], [ 150.153671264648438, -5.551902770996094 ], [ 150.226058959961051, -5.538910865783691 ], [ 150.287384033203125, -5.558839797973576 ], [ 150.413131713867415, -5.437722206115723 ], [ 150.452392578125227, -5.425284862518311 ], [ 150.520278930664062, -5.435554981231689 ], [ 150.578521728515852, -5.478977203369084 ], [ 150.598922729492415, -5.541502952575627 ], [ 150.680282592773438, -5.546667098999023 ], [ 150.721542358398551, -5.517461776733342 ], [ 150.748748779296875, -5.474999904632512 ], [ 150.7369384765625, -5.462501049041748 ], [ 150.757110595703239, -5.449818134307861 ], [ 150.81646728515625, -5.44478797912592 ], [ 150.835891723632926, -5.485200881957951 ], [ 150.873123168945312, -5.490647792816105 ], [ 150.90657043457054, -5.481588840484562 ], [ 150.909500122070426, -5.457063198089543 ], [ 150.953170776367301, -5.445977210998478 ], [ 151.008331298828125, -5.370833873748779 ], [ 151.007507324218864, -5.30388879776001 ], [ 151.08583068847679, -5.143332958221436 ], [ 151.165222167968977, -5.088570117950439 ], [ 151.262329101562614, -4.982932090759221 ], [ 151.3460693359375, -4.95359992980957 ], [ 151.346496582031591, -4.913833141326904 ], [ 151.3646240234375, -4.917444229125977 ] ] ], [ [ [ 151.37179565429733, -4.907692909240723 ], [ 151.367416381836051, -4.912841796875 ], [ 151.362106323242301, -4.911366939544621 ], [ 151.36891174316429, -4.901984214782658 ], [ 151.37179565429733, -4.907692909240723 ] ] ], [ [ [ 151.06976318359375, -4.901861190795842 ], [ 151.067810058593864, -4.900322914123535 ], [ 151.068695068359602, -4.899034976959229 ], [ 151.070495605468864, -4.900259017944336 ], [ 151.06976318359375, -4.901861190795842 ] ] ], [ [ [ 151.050521850585938, -4.902830123901367 ], [ 151.046310424804688, -4.902953147888184 ], [ 151.044036865234375, -4.897730827331543 ], [ 151.049682617187614, -4.896758079528809 ], [ 151.050521850585938, -4.902830123901367 ] ] ], [ [ [ 151.176742553711279, -4.883553028106689 ], [ 151.233764648437614, -4.920450210571232 ], [ 151.208206176757926, -4.948867797851562 ], [ 151.162216186523551, -4.958057880401611 ], [ 151.111663818359375, -4.925899028778076 ], [ 151.176742553711279, -4.883553028106689 ] ] ], [ [ [ 149.129241943359375, -4.867638111114502 ], [ 149.127288818359489, -4.869651794433537 ], [ 149.126663208007926, -4.868888854980412 ], [ 149.128326416015739, -4.866944789886418 ], [ 149.129241943359375, -4.867638111114502 ] ] ], [ [ [ 149.143890380859716, -4.860556125640812 ], [ 149.163055419922102, -4.864165782928467 ], [ 149.176116943359489, -4.89083194732666 ], [ 149.135833740234375, -4.923611164093018 ], [ 149.108337402343977, -4.888055801391602 ], [ 149.143890380859716, -4.860556125640812 ] ] ], [ [ [ 149.503616333008154, -4.679444789886418 ], [ 149.506164550781477, -4.680800914764404 ], [ 149.506149291992188, -4.682623863220158 ], [ 149.50152587890625, -4.680650234222412 ], [ 149.503616333008154, -4.679444789886418 ] ] ], [ [ [ 149.496368408203466, -4.641404151916504 ], [ 149.548049926757926, -4.673332214355469 ], [ 149.537368774414176, -4.715266227722168 ], [ 149.505828857422102, -4.702221870422306 ], [ 149.510986328125455, -4.668145179748535 ], [ 149.496566772460938, -4.656470775604248 ], [ 149.46882629394554, -4.669860839843693 ], [ 149.489898681640625, -4.70489597320551 ], [ 149.430282592773665, -4.691944122314453 ], [ 149.446105957031477, -4.659166812896672 ], [ 149.496368408203466, -4.641404151916504 ] ] ], [ [ [ 149.313888549804688, -4.638333797454777 ], [ 149.315826416015739, -4.64305591583252 ], [ 149.314437866210938, -4.644165992736816 ], [ 149.311111450195426, -4.642221927642822 ], [ 149.313888549804688, -4.638333797454777 ] ] ], [ [ [ 149.288330078125, -4.631667137145996 ], [ 149.297775268554688, -4.637221813201904 ], [ 149.29750061035179, -4.642499923706055 ], [ 149.290283203125227, -4.639999866485596 ], [ 149.288330078125, -4.631667137145996 ] ] ], [ [ [ 149.383895874023665, -4.618611812591496 ], [ 149.343338012695426, -4.633055210113525 ], [ 149.319168090820426, -4.626667022705021 ], [ 149.350555419922102, -4.616943836212101 ], [ 149.383895874023665, -4.618611812591496 ] ] ], [ [ [ 149.288604736328239, -4.613612174987793 ], [ 149.291107177734489, -4.615834236144963 ], [ 149.291107177734489, -4.618333816528263 ], [ 149.286941528320654, -4.614721775054875 ], [ 149.288604736328239, -4.613612174987793 ] ] ], [ [ [ 149.113800048828125, -4.546926975250244 ], [ 149.104766845703239, -4.542849063873291 ], [ 149.10755920410179, -4.535851955413818 ], [ 149.11634826660179, -4.540287971496525 ], [ 149.113800048828125, -4.546926975250244 ] ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-WHM", "NAME_1": "Western Highlands" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 144.254913330078239, -5.221435070037842 ], [ 144.282516479492415, -5.219533920288029 ], [ 144.322509765625, -5.277634143829346 ], [ 144.374511718750114, -5.314033985137939 ], [ 144.302810668945312, -5.457933902740422 ], [ 144.298110961914062, -5.514035224914551 ], [ 144.462814331054801, -5.523235797882023 ], [ 144.469711303711051, -5.659835815429688 ], [ 144.513916015625227, -5.68683385848999 ], [ 144.51171875, -5.727735996246281 ], [ 144.489013671875, -5.762633800506592 ], [ 144.383209228515625, -5.75353479385376 ], [ 144.370010375976562, -5.811334133148193 ], [ 144.3004150390625, -5.860835075378418 ], [ 144.274505615234602, -5.921333789825439 ], [ 144.325408935546875, -6.023134231567383 ], [ 144.376510620117188, -6.023734092712402 ], [ 144.430908203125227, -5.992634773254338 ], [ 144.46601867675804, -5.996235847473145 ], [ 144.481719970703125, -6.01463508605957 ], [ 144.479705810546875, -6.161435127258244 ], [ 144.370315551757926, -6.232935905456429 ], [ 144.23211669921875, -6.159035205841008 ], [ 144.001510620117188, -5.997233867645264 ], [ 143.883117675781477, -6.048635959625244 ], [ 143.881805419922102, -5.964734077453613 ], [ 143.830917358398551, -5.937035083770695 ], [ 143.770919799804688, -5.838435173034668 ], [ 143.80531311035179, -5.8211350440979 ], [ 143.867919921875114, -5.821033954620361 ], [ 143.910919189453125, -5.781233787536621 ], [ 143.954910278320312, -5.793735027313232 ], [ 144.0537109375, -5.748233795166016 ], [ 144.025619506836165, -5.665833950042668 ], [ 144.022216796875114, -5.594035148620549 ], [ 143.990417480468864, -5.558934211730957 ], [ 143.994415283203239, -5.478233814239388 ], [ 144.03211975097679, -5.454235076904297 ], [ 144.046112060546989, -5.413335800170898 ], [ 144.11811828613304, -5.380434036254883 ], [ 144.140518188476676, -5.351035118103027 ], [ 144.233306884765852, -5.34393405914301 ], [ 144.24871826171875, -5.278436183929387 ], [ 144.241409301757926, -5.231833934783936 ], [ 144.254913330078239, -5.221435070037842 ] ] ] } },
+{ "type": "Feature", "properties": { "ISO": "PG-WPD", "NAME_1": "Western" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 141.569122314453352, -9.523050308227539 ], [ 141.568893432617188, -9.519166946411076 ], [ 141.573333740234602, -9.51249980926508 ], [ 141.574645996093977, -9.517151832580453 ], [ 141.569122314453352, -9.523050308227539 ] ] ], [ [ [ 142.661331176757926, -9.428422927856445 ], [ 142.658279418945426, -9.428867340087891 ], [ 142.653671264648665, -9.428190231323185 ], [ 142.662109375, -9.428190231323185 ], [ 142.661331176757926, -9.428422927856445 ] ] ], [ [ [ 142.744735717773779, -9.418585777282658 ], [ 142.74427795410179, -9.418885231018066 ], [ 142.747268676757812, -9.415566444396916 ], [ 142.746078491210938, -9.417434692382756 ], [ 142.744735717773779, -9.418585777282658 ] ] ], [ [ [ 142.533187866211051, -9.411385536193791 ], [ 142.538101196289517, -9.410627365112248 ], [ 142.543075561523551, -9.419412612914982 ], [ 142.552505493164062, -9.420276641845703 ], [ 142.548995971679801, -9.423785209655762 ], [ 142.53085327148483, -9.414399147033691 ], [ 142.528778076171989, -9.427544593811035 ], [ 142.527908325195312, -9.411348342895508 ], [ 142.533187866211051, -9.411385536193791 ] ] ], [ [ [ 142.599609375, -9.40929985046381 ], [ 142.596588134765625, -9.403185844421387 ], [ 142.600082397461165, -9.396608352661076 ], [ 142.597656250000114, -9.403989791870117 ], [ 142.599609375, -9.40929985046381 ] ] ], [ [ [ 142.631576538086051, -9.369168281555176 ], [ 142.629608154297102, -9.368770599365234 ], [ 142.629516601562614, -9.367729187011719 ], [ 142.633483886718864, -9.367620468139592 ], [ 142.631576538086051, -9.369168281555176 ] ] ], [ [ [ 142.654556274414062, -9.365497589111328 ], [ 142.670761108398438, -9.375241279601994 ], [ 142.706436157226562, -9.381782531738224 ], [ 142.743164062500114, -9.366120338439941 ], [ 142.794403076172102, -9.370869636535645 ], [ 142.799560546875114, -9.373188018798771 ], [ 142.801040649414062, -9.376838684081974 ], [ 142.744812011718977, -9.370169639587402 ], [ 142.703063964843977, -9.384859085083008 ], [ 142.646865844726676, -9.368320465087834 ], [ 142.600021362304688, -9.395412445068303 ], [ 142.60867309570358, -9.380365371704102 ], [ 142.654556274414062, -9.365497589111328 ] ] ], [ [ [ 142.666717529296989, -9.361317634582463 ], [ 142.670120239257812, -9.363975524902344 ], [ 142.66529846191429, -9.367181777954102 ], [ 142.66279602050804, -9.362628936767521 ], [ 142.666717529296989, -9.361317634582463 ] ] ], [ [ [ 142.690536499023551, -9.358120918273926 ], [ 142.71441650390625, -9.362845420837402 ], [ 142.724929809570312, -9.368817329406738 ], [ 142.66737365722679, -9.371517181396484 ], [ 142.690536499023551, -9.358120918273926 ] ] ], [ [ [ 142.721908569335938, -9.308305740356388 ], [ 142.725189208984602, -9.309160232543888 ], [ 142.717926025390739, -9.309996604919434 ], [ 142.720504760742301, -9.307789802551213 ], [ 142.721908569335938, -9.308305740356388 ] ] ], [ [ [ 142.23779296875, -9.2882080078125 ], [ 142.238906860351904, -9.28939056396473 ], [ 142.2364501953125, -9.288117408752441 ], [ 142.23779296875, -9.2882080078125 ] ] ], [ [ [ 142.23500061035179, -9.288332939147949 ], [ 142.2320556640625, -9.288612365722599 ], [ 142.2296142578125, -9.288076400756779 ], [ 142.23554992675804, -9.288052558898869 ], [ 142.23500061035179, -9.288332939147949 ] ] ], [ [ [ 142.774063110351676, -9.283808708190861 ], [ 142.77076721191429, -9.280080795288029 ], [ 142.772262573242188, -9.277545928955021 ], [ 142.775512695312727, -9.282045364379883 ], [ 142.774063110351676, -9.283808708190861 ] ] ], [ [ [ 142.74787902832054, -9.27794075012207 ], [ 142.748748779296875, -9.280659675598145 ], [ 142.743438720703125, -9.27924919128418 ], [ 142.74493408203125, -9.277373313903809 ], [ 142.74787902832054, -9.27794075012207 ] ] ], [ [ [ 142.742660522460938, -9.278395652770939 ], [ 142.740707397461051, -9.277074813842773 ], [ 142.741973876953352, -9.275590896606388 ], [ 142.743072509765625, -9.276479721069336 ], [ 142.742660522460938, -9.278395652770939 ] ] ], [ [ [ 142.292709350585938, -9.2714586257934 ], [ 142.292343139648438, -9.271853446960449 ], [ 142.292709350585938, -9.271047592163086 ], [ 142.292709350585938, -9.2714586257934 ] ] ], [ [ [ 142.12971496582054, -9.261389732360783 ], [ 142.1280517578125, -9.263611793518066 ], [ 142.125549316406364, -9.262778282165527 ], [ 142.126251220703352, -9.261863708496094 ], [ 142.12971496582054, -9.261389732360783 ] ] ], [ [ [ 142.138748168945426, -9.235529899597168 ], [ 142.137588500976562, -9.234212875366154 ], [ 142.138839721679915, -9.233358383178654 ], [ 142.139724731445654, -9.234807968139648 ], [ 142.138748168945426, -9.235529899597168 ] ] ], [ [ [ 142.223495483398438, -9.230155944824162 ], [ 142.244995117187614, -9.256111145019531 ], [ 142.26625061035179, -9.249738693237248 ], [ 142.276672363281591, -9.251388549804688 ], [ 142.293609619140625, -9.259443283081055 ], [ 142.29432678222679, -9.265646934509277 ], [ 142.243316650390625, -9.259199142455998 ], [ 142.22181701660179, -9.232499122619629 ], [ 142.130661010742415, -9.267311096191406 ], [ 142.223495483398438, -9.230155944824162 ] ] ], [ [ [ 142.151901245117301, -9.231920242309513 ], [ 142.148376464843977, -9.235749244689941 ], [ 142.14668273925804, -9.235516548156681 ], [ 142.152557373046875, -9.226446151733398 ], [ 142.151901245117301, -9.231920242309513 ] ] ], [ [ [ 142.151382446289062, -9.226710319518929 ], [ 142.14794921875, -9.231202125549316 ], [ 142.144134521484375, -9.231520652770996 ], [ 142.14460754394554, -9.225918769836426 ], [ 142.151382446289062, -9.226710319518929 ] ] ], [ [ [ 142.157241821289176, -9.228055000305176 ], [ 142.16157531738304, -9.226503372192383 ], [ 142.153930664062727, -9.238263130187931 ], [ 142.155532836914176, -9.224808692932129 ], [ 142.157241821289176, -9.228055000305176 ] ] ], [ [ [ 142.167831420898665, -9.223043441772404 ], [ 142.177444458007926, -9.223799705505371 ], [ 142.188613891601562, -9.232464790344181 ], [ 142.167190551758154, -9.225159645080566 ], [ 142.155334472656364, -9.247236251831055 ], [ 142.167831420898665, -9.223043441772404 ] ] ], [ [ [ 142.14785766601608, -9.225824356079045 ], [ 142.144760131836165, -9.223957061767521 ], [ 142.152206420898551, -9.2222642898559 ], [ 142.151672363281705, -9.225213050842228 ], [ 142.14785766601608, -9.225824356079045 ] ] ], [ [ [ 142.23941040039108, -9.220879554748535 ], [ 142.250946044921875, -9.228588104248047 ], [ 142.250762939453125, -9.233658790588379 ], [ 142.231918334961165, -9.223686218261719 ], [ 142.23941040039108, -9.220879554748535 ] ] ], [ [ [ 142.277770996093864, -9.195556640625 ], [ 142.30805969238304, -9.204998970031681 ], [ 142.316223144531477, -9.213686943054199 ], [ 142.30574035644554, -9.219354629516602 ], [ 142.277770996093864, -9.195556640625 ] ] ], [ [ [ 142.055313110351676, -9.180896759033203 ], [ 142.07244873046875, -9.18709659576416 ], [ 142.064666748047102, -9.201765060424748 ], [ 142.029312133789062, -9.19951343536377 ], [ 142.055313110351676, -9.180896759033203 ] ] ], [ [ [ 142.012939453125, -9.180007934570312 ], [ 142.021286010742188, -9.191593170166016 ], [ 141.965560913086051, -9.19999885559082 ], [ 141.974166870117529, -9.183055877685433 ], [ 142.012939453125, -9.180007934570312 ] ] ], [ [ [ 142.022811889648438, -9.17801570892334 ], [ 142.032684326171875, -9.181888580322209 ], [ 142.024810791015852, -9.189400672912598 ], [ 142.014205932617301, -9.179532051086369 ], [ 142.022811889648438, -9.17801570892334 ] ] ], [ [ [ 143.248062133789176, -9.093889236450195 ], [ 143.273681640625, -9.101122856140137 ], [ 143.263885498046989, -9.140831947326546 ], [ 143.19917297363304, -9.132778167724553 ], [ 143.248062133789176, -9.093889236450195 ] ] ], [ [ [ 143.210784912109489, -9.066450119018498 ], [ 143.236938476562727, -9.081944465637207 ], [ 143.192504882812727, -9.100555419921818 ], [ 143.182159423828352, -9.082289695739689 ], [ 143.210784912109489, -9.066450119018498 ] ] ], [ [ [ 143.436660766601676, -8.966665267944336 ], [ 143.451110839843864, -8.981666564941406 ], [ 143.436111450195312, -9.026390075683594 ], [ 143.416183471679688, -9.019030570983887 ], [ 143.401870727539062, -9.038821220397892 ], [ 143.376449584961279, -9.022190093994141 ], [ 143.391113281250114, -8.991666793823185 ], [ 143.436660766601676, -8.966665267944336 ] ] ], [ [ [ 143.541671752929688, -8.864962577819767 ], [ 143.546829223632812, -8.87147045135498 ], [ 143.545516967773665, -8.874100685119629 ], [ 143.540420532226676, -8.864406585693303 ], [ 143.541671752929688, -8.864962577819767 ] ] ], [ [ [ 143.654281616211392, -8.754575729370117 ], [ 143.652618408203239, -8.752361297607365 ], [ 143.652755737305142, -8.7509765625 ], [ 143.654556274414062, -8.753191947936955 ], [ 143.654281616211392, -8.754575729370117 ] ] ], [ [ [ 143.66000366210983, -8.748611450195312 ], [ 143.66583251953125, -8.756112098693791 ], [ 143.665557861328239, -8.757499694824162 ], [ 143.658615112304915, -8.752499580383301 ], [ 143.66000366210983, -8.748611450195312 ] ] ], [ [ [ 143.654449462890852, -8.744444847106934 ], [ 143.654998779297102, -8.746666908264103 ], [ 143.65083312988304, -8.746110916137638 ], [ 143.652496337890625, -8.744723320007211 ], [ 143.654449462890852, -8.744444847106934 ] ] ], [ [ [ 143.418060302734375, -8.710835456848145 ], [ 143.426391601562614, -8.718610763549805 ], [ 143.426666259765625, -8.731944084167367 ], [ 143.418884277343977, -8.724167823791447 ], [ 143.418060302734375, -8.710835456848145 ] ] ], [ [ [ 143.439437866210938, -8.702221870422306 ], [ 143.459442138671875, -8.734722137451115 ], [ 143.444442749023665, -8.774721145629826 ], [ 143.427215576171875, -8.706110000610352 ], [ 143.439437866210938, -8.702221870422306 ] ] ], [ [ [ 143.35194396972679, -8.670556068420353 ], [ 143.368057250976904, -8.682499885559082 ], [ 143.407501220703125, -8.702500343322697 ], [ 143.383895874023438, -8.706388473510742 ], [ 143.35194396972679, -8.670556068420353 ] ] ], [ [ [ 143.360275268554688, -8.650278091430607 ], [ 143.397506713867415, -8.657222747802734 ], [ 143.423339843750114, -8.690833091735783 ], [ 143.366668701171989, -8.663888931274357 ], [ 143.360275268554688, -8.650278091430607 ] ] ], [ [ [ 143.33193969726608, -8.650278091430607 ], [ 143.330001831054915, -8.650555610656738 ], [ 143.329437255859602, -8.645556449890137 ], [ 143.332778930664062, -8.648612022399902 ], [ 143.33193969726608, -8.650278091430607 ] ] ], [ [ [ 143.292221069336165, -8.60583305358881 ], [ 143.294723510742415, -8.606666564941406 ], [ 143.294723510742415, -8.610833168029785 ], [ 143.291381835937841, -8.608332633972111 ], [ 143.292221069336165, -8.60583305358881 ] ] ], [ [ [ 143.259719848633154, -8.520000457763672 ], [ 143.316940307617529, -8.547222137451115 ], [ 143.345275878906477, -8.603056907653809 ], [ 143.301116943359375, -8.574443817138672 ], [ 143.259719848633154, -8.520000457763672 ] ] ], [ [ [ 143.282226562500341, -8.507498741149902 ], [ 143.287506103515739, -8.509720802307129 ], [ 143.294174194336392, -8.517499923705998 ], [ 143.274169921875114, -8.51027774810791 ], [ 143.282226562500341, -8.507498741149902 ] ] ], [ [ [ 143.78089904785179, -8.50715255737299 ], [ 143.780624389648438, -8.505208969116154 ], [ 143.781738281250114, -8.503542900085449 ], [ 143.784515380859489, -8.502709388732853 ], [ 143.78089904785179, -8.50715255737299 ] ] ], [ [ [ 143.80389404296875, -8.491109848022404 ], [ 143.820007324218977, -8.521388053894043 ], [ 143.79902648925804, -8.541161537170296 ], [ 143.784164428711165, -8.513055801391602 ], [ 143.80389404296875, -8.491109848022404 ] ] ], [ [ [ 143.20222473144554, -8.467222213745117 ], [ 143.211669921875, -8.471111297607365 ], [ 143.229446411132812, -8.493331909179631 ], [ 143.210281372070312, -8.48639011383051 ], [ 143.20222473144554, -8.467222213745117 ] ] ], [ [ [ 143.63055419921875, -8.458612442016602 ], [ 143.6572265625, -8.468056678771973 ], [ 143.673889160156364, -8.501667022705078 ], [ 143.638061523437727, -8.536390304565373 ], [ 143.596389770507812, -8.498611450195312 ], [ 143.601669311523438, -8.467222213745117 ], [ 143.63055419921875, -8.458612442016602 ] ] ], [ [ [ 143.31361389160179, -8.454721450805664 ], [ 143.324996948242188, -8.461943626403752 ], [ 143.300277709961392, -8.45916557312006 ], [ 143.302215576171875, -8.45694446563715 ], [ 143.31361389160179, -8.454721450805664 ] ] ], [ [ [ 143.16273498535179, -8.462706565856877 ], [ 143.178329467773438, -8.467779159545898 ], [ 143.225555419921989, -8.518610000610352 ], [ 143.168609619140625, -8.487500190734863 ], [ 143.142776489257926, -8.451945304870492 ], [ 143.16273498535179, -8.462706565856877 ] ] ], [ [ [ 143.298339843750227, -8.446945190429688 ], [ 143.307785034180029, -8.451389312744084 ], [ 143.276107788086051, -8.450554847717228 ], [ 143.278060913085938, -8.449444770812988 ], [ 143.298339843750227, -8.446945190429688 ] ] ], [ [ [ 143.728607177734375, -8.434721946716309 ], [ 143.77667236328125, -8.453888893127385 ], [ 143.790557861328125, -8.481389999389535 ], [ 143.783050537109489, -8.500556945800781 ], [ 143.71833801269554, -8.462499618530217 ], [ 143.728607177734375, -8.434721946716309 ] ] ], [ [ [ 143.701873779296875, -8.4393053054809 ], [ 143.692703247070312, -8.438749313354435 ], [ 143.692703247070312, -8.437639236450195 ], [ 143.699371337890625, -8.434028625488224 ], [ 143.701873779296875, -8.4393053054809 ] ] ], [ [ [ 143.327224731445426, -8.414166450500488 ], [ 143.341384887695312, -8.422223091125431 ], [ 143.34027099609375, -8.435000419616699 ], [ 143.33193969726608, -8.43194580078125 ], [ 143.327224731445426, -8.414166450500488 ] ] ], [ [ [ 143.572494506836051, -8.404166221618539 ], [ 143.607772827148438, -8.446110725402832 ], [ 143.583343505859489, -8.490557670593205 ], [ 143.565826416015739, -8.482777595519963 ], [ 143.585556030273438, -8.494722366332951 ], [ 143.575836181640852, -8.509443283081055 ], [ 143.4403076171875, -8.432827949523926 ], [ 143.47833251953125, -8.41805458068842 ], [ 143.506683349609375, -8.436884880065918 ], [ 143.537506103515852, -8.441945075988713 ], [ 143.55694580078125, -8.43194580078125 ], [ 143.572494506836051, -8.404166221618539 ] ] ], [ [ [ 143.210067749023551, -8.402986526489201 ], [ 143.271942138671875, -8.459721565246582 ], [ 143.384994506835938, -8.481943130493107 ], [ 143.475006103515739, -8.524723052978459 ], [ 143.58917236328125, -8.624444007873535 ], [ 143.633056640625227, -8.64000129699707 ], [ 143.637771606445312, -8.689723014831543 ], [ 143.61610412597679, -8.702221870422306 ], [ 143.582778930664176, -8.659444808959961 ], [ 143.403335571289176, -8.580556869506779 ], [ 143.351669311523438, -8.520556449890137 ], [ 143.263061523437727, -8.484722137451172 ], [ 143.188339233398551, -8.426945686340332 ], [ 143.210067749023551, -8.402986526489201 ] ] ], [ [ [ 143.134445190429688, -8.407221794128418 ], [ 143.12666320800804, -8.399167060852051 ], [ 143.143325805664176, -8.396666526794434 ], [ 143.14111328125, -8.40333366394043 ], [ 143.134445190429688, -8.407221794128418 ] ] ], [ [ [ 143.156524658203239, -8.407777786254883 ], [ 143.152923583984375, -8.398611068725472 ], [ 143.16542053222679, -8.398332595825195 ], [ 143.16542053222679, -8.400277137756291 ], [ 143.156524658203239, -8.407777786254883 ] ] ], [ [ [ 143.288894653320426, -8.39527702331543 ], [ 143.320556640625114, -8.409999847412053 ], [ 143.33111572265625, -8.43388843536377 ], [ 143.295272827148665, -8.423333168029785 ], [ 143.288894653320426, -8.39527702331543 ] ] ], [ [ [ 143.665283203125, -8.393889427185059 ], [ 143.68611145019554, -8.414443969726562 ], [ 143.678054809570312, -8.424445152282658 ], [ 143.653060913085938, -8.428334236144963 ], [ 143.631942749023665, -8.411109924316406 ], [ 143.665283203125, -8.393889427185059 ] ] ], [ [ [ 143.260284423828239, -8.391388893127441 ], [ 143.274444580078125, -8.401667594909611 ], [ 143.298889160156477, -8.439443588256836 ], [ 143.253326416015852, -8.428611755371094 ], [ 143.241943359375, -8.398611068725472 ], [ 143.260284423828239, -8.391388893127441 ] ] ], [ [ [ 143.074172973632812, -8.382778167724609 ], [ 143.063613891601676, -8.402223587036076 ], [ 143.023056030273438, -8.408056259155273 ], [ 142.984451293945312, -8.403889656066895 ], [ 142.973388671875, -8.387309074401855 ], [ 143.074172973632812, -8.382778167724609 ] ] ], [ [ [ 143.575836181640852, -8.375555992126351 ], [ 143.605834960937955, -8.401111602783146 ], [ 143.625549316406591, -8.435277938842773 ], [ 143.571105957031477, -8.399721145629826 ], [ 143.575836181640852, -8.375555992126351 ] ] ], [ [ [ 143.114028930664062, -8.380000114440918 ], [ 143.109298706054915, -8.376943588256779 ], [ 143.130966186523551, -8.363888740539551 ], [ 143.14263916015625, -8.366110801696721 ], [ 143.114028930664062, -8.380000114440918 ] ] ], [ [ [ 143.103881835937614, -8.386361122131291 ], [ 143.091110229492529, -8.390542984008789 ], [ 143.094726562500114, -8.361666679382324 ], [ 143.102951049804688, -8.365121841430607 ], [ 143.103881835937614, -8.386361122131291 ] ] ], [ [ [ 143.089447021484375, -8.359722137451115 ], [ 143.082229614257926, -8.370833396911621 ], [ 143.062240600586392, -8.367996215820312 ], [ 143.062942504882812, -8.360795974731445 ], [ 143.089447021484375, -8.359722137451115 ] ] ], [ [ [ 143.036392211914062, -8.355555534362793 ], [ 143.044998168945312, -8.361388206481934 ], [ 143.019515991211392, -8.371945381164494 ], [ 143.023605346679688, -8.354999542236328 ], [ 143.036392211914062, -8.355555534362793 ] ] ], [ [ [ 143.334716796875, -8.345832824707031 ], [ 143.376937866211165, -8.367501258850098 ], [ 143.561386108398665, -8.35888767242426 ], [ 143.57000732421875, -8.400554656982365 ], [ 143.538894653320426, -8.439443588256836 ], [ 143.480560302734489, -8.416389465331974 ], [ 143.408615112305142, -8.424999237060547 ], [ 143.315277099609375, -8.369998931884766 ], [ 143.334716796875, -8.345832824707031 ] ] ], [ [ [ 142.94721984863304, -8.345276832580453 ], [ 142.954727172851676, -8.348055839538517 ], [ 142.936386108398438, -8.348334312438965 ], [ 142.941390991210938, -8.3455553054809 ], [ 142.94721984863304, -8.345276832580453 ] ] ], [ [ [ 142.930831909179801, -8.339166641235295 ], [ 142.935836791992301, -8.341944694519043 ], [ 142.929443359375227, -8.345832824707031 ], [ 142.927505493164062, -8.340276718139648 ], [ 142.930831909179801, -8.339166641235295 ] ] ], [ [ [ 143.357772827148438, -8.34416675567627 ], [ 143.355270385742301, -8.342498779296875 ], [ 143.35455322265625, -8.339207649230957 ], [ 143.358062744140852, -8.341388702392578 ], [ 143.357772827148438, -8.34416675567627 ] ] ], [ [ [ 143.309722900390625, -8.336944580078068 ], [ 143.320831298828352, -8.34305477142334 ], [ 143.306396484375114, -8.357500076293888 ], [ 143.300552368164062, -8.352499961853027 ], [ 143.309722900390625, -8.336944580078068 ] ] ], [ [ [ 143.387283325195312, -8.332839965820256 ], [ 143.437774658203352, -8.34305477142334 ], [ 143.446395874023551, -8.349444389343262 ], [ 143.361938476562614, -8.349167823791447 ], [ 143.359161376953352, -8.338889122009277 ], [ 143.387283325195312, -8.332839965820256 ] ] ], [ [ [ 143.32861328125, -8.328887939453125 ], [ 143.336395263672216, -8.333057403564453 ], [ 143.312500000000114, -8.334348678588867 ], [ 143.318054199218864, -8.330555915832463 ], [ 143.32861328125, -8.328887939453125 ] ] ], [ [ [ 143.57472229003929, -8.326944351196289 ], [ 143.640548706055142, -8.336944580078068 ], [ 143.663604736328352, -8.355832099914494 ], [ 143.671951293945312, -8.394445419311523 ], [ 143.657775878906364, -8.392223358154297 ], [ 143.651382446289176, -8.394166946411133 ], [ 143.628616333007812, -8.409166336059513 ], [ 143.574996948242301, -8.355555534362793 ], [ 143.528060913086051, -8.34000110626215 ], [ 143.57472229003929, -8.326944351196289 ] ] ], [ [ [ 142.899719238281477, -8.32499980926508 ], [ 142.9244384765625, -8.336667060851994 ], [ 142.926116943359489, -8.3455553054809 ], [ 142.88916015625, -8.327777862548771 ], [ 142.899719238281477, -8.32499980926508 ] ] ], [ [ [ 143.357772827148438, -8.32388973236084 ], [ 143.377227783203125, -8.32944393157959 ], [ 143.38166809082054, -8.332221984863281 ], [ 143.342773437500114, -8.329999923706055 ], [ 143.357772827148438, -8.32388973236084 ] ] ], [ [ [ 143.120605468750455, -8.33464527130127 ], [ 143.064437866210938, -8.355278015136719 ], [ 143.033813476562727, -8.345346450805664 ], [ 143.044525146484489, -8.329774856567383 ], [ 143.138336181640852, -8.321111679077148 ], [ 143.120605468750455, -8.33464527130127 ] ] ], [ [ [ 143.300842285156477, -8.323158264160156 ], [ 143.268188476562727, -8.356388092040959 ], [ 143.21417236328125, -8.365925788879395 ], [ 143.117919921875227, -8.346542358398438 ], [ 143.167083740234375, -8.328056335449162 ], [ 143.300842285156477, -8.323158264160156 ] ] ], [ [ [ 143.383331298828125, -8.303609848022404 ], [ 143.485000610351562, -8.308610916137695 ], [ 143.494995117187727, -8.318888664245549 ], [ 143.470840454101676, -8.333888053894043 ], [ 143.303329467773892, -8.317776679992619 ], [ 143.383331298828125, -8.303609848022404 ] ] ], [ [ [ 143.212783813476676, -8.301112174987793 ], [ 143.238327026367301, -8.30694389343256 ], [ 143.177780151367415, -8.306110382080078 ], [ 143.186660766601676, -8.301943778991699 ], [ 143.212783813476676, -8.301112174987793 ] ] ], [ [ [ 143.23500061035179, -8.291110992431641 ], [ 143.236114501953125, -8.295556068420353 ], [ 143.229995727539062, -8.293889999389592 ], [ 143.230834960937727, -8.291945457458496 ], [ 143.23500061035179, -8.291110992431641 ] ] ], [ [ [ 143.394729614257926, -8.28972339630127 ], [ 143.389160156250455, -8.293333053588867 ], [ 143.38166809082054, -8.291110992431641 ], [ 143.382507324218864, -8.28972339630127 ], [ 143.394729614257926, -8.28972339630127 ] ] ], [ [ [ 143.636688232422102, -8.088068008422795 ], [ 143.680480957031591, -8.111944198608398 ], [ 143.691040039062727, -8.144444465637207 ], [ 143.639648437500114, -8.174445152282715 ], [ 143.586318969726562, -8.130555152893066 ], [ 143.579376220703239, -8.104167938232422 ], [ 143.636688232422102, -8.088068008422795 ] ] ], [ [ [ 143.546600341796875, -8.064723014831486 ], [ 143.542984008789062, -8.056389808654728 ], [ 143.543533325195654, -8.050276756286621 ], [ 143.546600341796875, -8.053890228271428 ], [ 143.546600341796875, -8.064723014831486 ] ] ], [ [ [ 143.597778320312727, -8.012776374816895 ], [ 143.66680908203125, -8.041367530822754 ], [ 143.701385498047102, -8.095555305480957 ], [ 143.651382446289176, -8.074444770812988 ], [ 143.571105957031477, -8.07833290100092 ], [ 143.543609619140852, -8.0272216796875 ], [ 143.597778320312727, -8.012776374816895 ] ] ], [ [ [ 143.397109985351562, -7.984169006347599 ], [ 143.395736694335938, -7.984169006347599 ], [ 143.393524169922102, -7.985568046569767 ], [ 143.393798828125114, -7.983323097228947 ], [ 143.397109985351562, -7.984169006347599 ] ] ], [ [ [ 143.412139892578125, -7.931124210357609 ], [ 143.431808471679688, -7.935035228729191 ], [ 143.461029052734489, -8.013050079345703 ], [ 143.537246704101562, -8.039809226989746 ], [ 143.548248291015739, -8.078791618347168 ], [ 143.570358276367642, -8.110816001891976 ], [ 143.470840454101676, -8.074444770812988 ], [ 143.450271606445312, -8.022223472595215 ], [ 143.414443969726562, -8.01500129699707 ], [ 143.39404296875, -7.988327980041504 ], [ 143.409637451172216, -7.976107120513916 ], [ 143.384353637695426, -7.955300807952824 ], [ 143.388519287109375, -7.934464931488037 ], [ 143.412139892578125, -7.931124210357609 ] ] ], [ [ [ 141.002410888671875, -4.987235069274846 ], [ 142.122573852539062, -5.370335102081299 ], [ 142.078506469726562, -5.417335033416691 ], [ 142.06697082519554, -5.469642162322998 ], [ 142.570114135742415, -5.882334232330265 ], [ 142.626007080078352, -5.903635025024414 ], [ 142.631607055664176, -6.809134960174504 ], [ 142.665008544922216, -6.823635101318303 ], [ 142.99472045898483, -6.822734832763672 ], [ 142.995513916015625, -6.999135017394963 ], [ 143.049118041992301, -7.075735092163029 ], [ 143.696807861328352, -7.756535053253117 ], [ 143.868118286132926, -7.927834987640324 ], [ 143.91552734375, -7.9542942047118 ], [ 143.924163818359602, -7.988889217376652 ], [ 143.906112670898551, -8.003611564636174 ], [ 143.853195190429915, -7.953901767730656 ], [ 143.815063476562727, -7.959982872009277 ], [ 143.782501220703239, -7.935832977294865 ], [ 143.787216186523665, -7.904167175292912 ], [ 143.780914306640852, -7.888368129730168 ], [ 143.751663208007812, -7.896666049957275 ], [ 143.744171142578239, -7.906667232513371 ], [ 143.77874755859375, -7.890340805053711 ], [ 143.780593872070426, -7.94196796417225 ], [ 143.814422607421875, -7.96829891204834 ], [ 143.851913452148438, -7.963387966156006 ], [ 143.875000000000114, -8.018889427185059 ], [ 143.861114501953125, -8.04749870300293 ], [ 143.730560302734602, -8.04305458068842 ], [ 143.604537963867301, -7.988643169403019 ], [ 143.543334960937614, -8.007499694824219 ], [ 143.486389160156477, -8.000834465026799 ], [ 143.437103271484716, -7.910748958587646 ], [ 143.366455078125227, -7.907995223999023 ], [ 143.346801757812727, -7.83418083190918 ], [ 143.31927490234375, -7.837701797485352 ], [ 143.309234619140852, -7.879158020019474 ], [ 143.259460449219205, -7.879902839660645 ], [ 143.260147094726562, -7.793570995330811 ], [ 143.256729125976562, -7.88607215881342 ], [ 143.314025878906364, -7.886102199554443 ], [ 143.338119506835938, -7.8458251953125 ], [ 143.357772827148438, -7.925278186798096 ], [ 143.382629394531477, -7.934587955474854 ], [ 143.383377075195312, -7.958621978759709 ], [ 143.406631469726562, -7.97695779800415 ], [ 143.391159057617188, -7.983095169067269 ], [ 143.39027404785179, -7.994872093200684 ], [ 143.415283203125227, -8.022223472595215 ], [ 143.445007324218864, -8.026667594909611 ], [ 143.465270996093864, -8.08055591583252 ], [ 143.536117553710938, -8.105554580688477 ], [ 143.630828857421989, -8.185832977294922 ], [ 143.704437255859602, -8.17500114440918 ], [ 143.709167480468977, -8.216387748718148 ], [ 143.635833740234489, -8.238055229187012 ], [ 143.541107177734375, -8.238611221313477 ], [ 143.537780761718864, -8.226110458374023 ], [ 143.34944152832054, -8.243333816528263 ], [ 142.98583984375, -8.336388587951603 ], [ 142.899169921875114, -8.318888664245549 ], [ 142.859771728515625, -8.32088565826416 ], [ 142.845001220703239, -8.367780685424748 ], [ 142.923339843750227, -8.417778968811035 ], [ 143.117782592773551, -8.460556030273438 ], [ 143.2550048828125, -8.571390151977482 ], [ 143.39277648925804, -8.741389274597168 ], [ 143.420272827148551, -8.961944580078125 ], [ 143.372772216796989, -9.008056640624886 ], [ 143.330322265625, -9.02656078338623 ], [ 143.283050537109375, -9.016944885253906 ], [ 143.184982299804688, -9.037659645080566 ], [ 143.233337402343864, -9.015555381774846 ], [ 143.235549926757812, -9.00916671752924 ], [ 143.245834350585938, -8.999444007873535 ], [ 143.247772216797102, -8.99416542053217 ], [ 143.235275268554801, -9.007500648498478 ], [ 143.231384277343864, -9.015276908874455 ], [ 143.172210693359375, -9.039918899536133 ], [ 143.13861083984375, -9.071666717529183 ], [ 143.010284423828125, -9.1036119461059 ], [ 142.92730712890625, -9.175140380859261 ], [ 142.78118896484375, -9.263046264648381 ], [ 142.765716552734716, -9.259292602539062 ], [ 142.638916015625, -9.333086967468262 ], [ 142.568664550781364, -9.323000907897892 ], [ 142.479995727539404, -9.25000095367426 ], [ 142.41560363769554, -9.218884468078613 ], [ 142.297836303711051, -9.196345329284668 ], [ 142.20269775390625, -9.130989074707031 ], [ 142.170135498046989, -9.158251762390137 ], [ 142.080917358398551, -9.178321838378906 ], [ 141.959167480468977, -9.171111106872445 ], [ 141.9244384765625, -9.19666671752924 ], [ 141.884445190429915, -9.201666831970215 ], [ 141.771118164062614, -9.179999351501465 ], [ 141.625839233398551, -9.212222099304199 ], [ 141.521118164062614, -9.195000648498421 ], [ 141.4505615234375, -9.143889427185059 ], [ 141.348892211914176, -9.141944885253849 ], [ 141.340270996093977, -9.130000114440861 ], [ 141.233062744140852, -9.214444160461369 ], [ 141.138885498046989, -9.234721183776742 ], [ 141.020828247070426, -9.131943702697697 ], [ 141.026107788086051, -9.118055343627873 ], [ 141.006820678710938, -9.121541976928711 ], [ 141.011764526367188, -7.999898910522461 ], [ 140.982391357421875, -6.891974925994873 ], [ 140.951217651367188, -6.876529216766357 ], [ 140.936355590820426, -6.895720005035344 ], [ 140.925994873047102, -6.878479957580566 ], [ 140.936248779296875, -6.84686899185175 ], [ 140.923446655273438, -6.860859870910588 ], [ 140.897811889648438, -6.856439113616943 ], [ 140.8841552734375, -6.835978984832764 ], [ 140.902603149414176, -6.805129051208439 ], [ 140.858093261718977, -6.780619144439584 ], [ 140.885437011718864, -6.740618228912354 ], [ 140.836395263671875, -6.713048934936523 ], [ 140.8343505859375, -6.676589965820256 ], [ 140.864257812500114, -6.67130517959589 ], [ 140.856399536132926, -6.630125045776367 ], [ 140.893905639648438, -6.623135089874268 ], [ 140.894317626953352, -6.588254928588867 ], [ 140.918701171875, -6.551150798797607 ], [ 140.931884765625114, -6.553237915039062 ], [ 140.922027587890739, -6.488733768463135 ], [ 140.956970214843864, -6.476916790008545 ], [ 140.940017700195312, -6.439035892486572 ], [ 140.956451416015625, -6.363737106323185 ], [ 140.973236083984375, -6.35559606552124 ], [ 140.957015991210938, -6.341135025024357 ], [ 141.000213623046989, -6.313239097595215 ], [ 141.002410888671875, -4.987235069274846 ] ] ] ] } }
+]
+}
diff --git a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/images/exampleGermany.jpg b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/images/exampleGermany.jpg
new file mode 100644
index 000000000000..33855aa4e6df
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/images/exampleGermany.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/images/exampleUsa.jpg b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/images/exampleUsa.jpg
new file mode 100644
index 000000000000..0937ad09260d
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/images/exampleUsa.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js
index eea98d132a13..79dd291f09a2 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js
@@ -18,6 +18,8 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from './transformProps';
+import exampleUsa from './images/exampleUsa.jpg';
+import exampleGermany from './images/exampleGermany.jpg';
import thumbnail from './images/thumbnail.png';
import controlPanel from './controlPanel';
@@ -25,8 +27,9 @@ const metadata = new ChartMetadata({
category: t('Map'),
credits: ['https://bl.ocks.org/john-guerra'],
description: t(
- "Visualizes how a single metric varies across a country's principal subdivisions (states, provinces, etc) on a chloropleth map. Each subdivision's value is elevated when you hover over the corresponding geographic boundary.",
+ "Visualizes how a single metric varies across a country's principal subdivisions (states, provinces, etc) on a choropleth map. Each subdivision's value is elevated when you hover over the corresponding geographic boundary.",
),
+ exampleGallery: [{ url: exampleUsa }, { url: exampleGermany }],
name: t('Country Map'),
tags: [
t('2D'),
diff --git a/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/images/example.jpg b/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/images/example.jpg
new file mode 100644
index 000000000000..e2cfb02229a4
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/images/example.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/index.ts b/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/index.ts
index fdf6fcf774f8..824f8f3dbacd 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/index.ts
+++ b/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/index.ts
@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import thumbnail from './images/thumbnail.png';
+import example from './images/example.jpg';
import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
@@ -26,6 +27,7 @@ const metadata = new ChartMetadata({
description: t(
'Compares the lengths of time different activities take in a shared timeline view.',
),
+ exampleGallery: [{ url: example }],
name: t('Event Flow'),
tags: [t('Legacy'), t('Progressive')],
thumbnail,
diff --git a/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/types/external.d.ts b/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/types/external.d.ts
index c7f1aac5b2d2..a9b451b3153f 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/types/external.d.ts
+++ b/superset-frontend/plugins/legacy-plugin-chart-event-flow/src/types/external.d.ts
@@ -18,4 +18,5 @@
*/
declare module '*.png';
+declare module '*.jpg';
declare module '@data-ui/event-flow';
diff --git a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/Heatmap.js b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/Heatmap.js
index b0b32aba4a1a..f2e3624f05f7 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/Heatmap.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/Heatmap.js
@@ -177,7 +177,7 @@ function Heatmap(element, props) {
domain[d[k]] = (domain[d[k]] || 0) + d.v;
actualKeys[d[k]] = d[k];
});
- // Not usgin object.keys() as it converts to strings
+ // Not using object.keys() as it converts to strings
const keys = Object.keys(actualKeys).map(s => actualKeys[s]);
if (sortMethod === 'alpha_asc') {
domain = keys.sort(cmp);
diff --git a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx
index 09df0427e208..3032654ba267 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx
+++ b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx
@@ -27,7 +27,6 @@ import {
columnChoices,
ControlPanelConfig,
ControlPanelState,
- formatSelectOptions,
formatSelectOptionsForRange,
sections,
sharedControls,
@@ -72,7 +71,7 @@ const config: ControlPanelConfig = {
name: 'all_columns_x',
config: {
...columnsConfig,
- label: 'X Axis',
+ label: t('X Axis'),
},
},
],
@@ -81,7 +80,7 @@ const config: ControlPanelConfig = {
name: 'all_columns_y',
config: {
...columnsConfig,
- label: 'Y Axis',
+ label: t('Y Axis'),
},
},
],
@@ -148,8 +147,8 @@ const config: ControlPanelConfig = {
label: t('Rendering'),
renderTrigger: true,
choices: [
- ['pixelated', 'pixelated (Sharp)'],
- ['auto', 'auto (Smooth)'],
+ ['pixelated', t('pixelated (Sharp)')],
+ ['auto', t('auto (Smooth)')],
],
default: 'pixelated',
description: t(
@@ -166,9 +165,9 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Normalize Across'),
choices: [
- ['heatmap', 'heatmap'],
- ['x', 'x'],
- ['y', 'y'],
+ ['heatmap', t('heatmap')],
+ ['x', t('x')],
+ ['y', t('y')],
],
default: 'heatmap',
description: (
@@ -200,15 +199,15 @@ const config: ControlPanelConfig = {
freeForm: true,
clearable: false,
label: t('Left Margin'),
- choices: formatSelectOptions([
- 'auto',
- 50,
- 75,
- 100,
- 125,
- 150,
- 200,
- ]),
+ choices: [
+ ['auto', t('auto')],
+ [50, '50'],
+ [75, '75'],
+ [100, '100'],
+ [125, '125'],
+ [150, '150'],
+ [200, '200'],
+ ],
default: 'auto',
renderTrigger: true,
description: t(
@@ -225,15 +224,15 @@ const config: ControlPanelConfig = {
clearable: false,
freeForm: true,
label: t('Bottom Margin'),
- choices: formatSelectOptions([
- 'auto',
- 50,
- 75,
- 100,
- 125,
- 150,
- 200,
- ]),
+ choices: [
+ ['auto', t('auto')],
+ [50, '50'],
+ [75, '75'],
+ [100, '100'],
+ [125, '125'],
+ [150, '150'],
+ [200, '200'],
+ ],
default: 'auto',
renderTrigger: true,
description: t(
diff --git a/superset-frontend/plugins/legacy-plugin-chart-histogram/src/Histogram.jsx b/superset-frontend/plugins/legacy-plugin-chart-histogram/src/Histogram.jsx
index 2c0726774861..67d5f30f9022 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-histogram/src/Histogram.jsx
+++ b/superset-frontend/plugins/legacy-plugin-chart-histogram/src/Histogram.jsx
@@ -111,7 +111,7 @@ class CustomHistogram extends React.PureComponent {
renderTooltip={({ datum, color }) => (
- {datum.bin0} to {datum.bin1}
+ {datum.bin0} {t('to')} {datum.bin1}
{t('count')}
diff --git a/superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts
index ca18b712b82f..c81e802b3dca 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts
@@ -82,9 +82,9 @@ const config: ControlPanelConfig = {
renderTrigger: true,
label: t('Value Domain'),
choices: [
- ['series', 'series'],
- ['overall', 'overall'],
- ['change', 'change'],
+ ['series', t('series')],
+ ['overall', t('overall')],
+ ['change', t('change')],
],
default: 'series',
description: t(
diff --git a/superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts
index 8d05cda07828..1dc75d96ef44 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts
@@ -40,12 +40,12 @@ const columnsConfig = isFeatureEnabled(FeatureFlag.ENABLE_EXPLORE_DRAG_AND_DROP)
: allColumns;
const colorChoices = [
- ['rgb(0, 139, 139)', 'Dark Cyan'],
- ['rgb(128, 0, 128)', 'Purple'],
- ['rgb(255, 215, 0)', 'Gold'],
- ['rgb(69, 69, 69)', 'Dim Gray'],
- ['rgb(220, 20, 60)', 'Crimson'],
- ['rgb(34, 139, 34)', 'Forest Green'],
+ ['rgb(0, 139, 139)', t('Dark Cyan')],
+ ['rgb(128, 0, 128)', t('Purple')],
+ ['rgb(255, 215, 0)', t('Gold')],
+ ['rgb(69, 69, 69)', t('Dim Gray')],
+ ['rgb(220, 20, 60)', t('Crimson')],
+ ['rgb(34, 139, 34)', t('Forest Green')],
];
const config: ControlPanelConfig = {
@@ -124,9 +124,7 @@ const config: ControlPanelConfig = {
),
mapStateToProps: state => {
const datasourceChoices = columnChoices(state.datasource);
- const choices: [string, string][] = formatSelectOptions([
- 'Auto',
- ]);
+ const choices: [string, string][] = [['Auto', t('Auto')]];
return {
choices: choices.concat(datasourceChoices),
};
@@ -141,7 +139,11 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Point Radius Unit'),
default: 'Pixels',
- choices: formatSelectOptions(['Pixels', 'Miles', 'Kilometers']),
+ choices: [
+ ['Pixels', t('Pixels')],
+ ['Miles', t('Miles')],
+ ['Kilometers', t('Kilometers')],
+ ],
description: t(
'The unit of measure for the specified point radius',
),
@@ -180,14 +182,14 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Cluster label aggregator'),
clearable: false,
- choices: formatSelectOptions([
- 'sum',
- 'mean',
- 'min',
- 'max',
- 'std',
- 'var',
- ]),
+ choices: [
+ ['sum', t('sum')],
+ ['mean', t('mean')],
+ ['min', t('min')],
+ ['max', t('max')],
+ ['std', t('std')],
+ ['var', t('var')],
+ ],
default: 'sum',
description: t(
'Aggregate function applied to the list of points ' +
@@ -223,15 +225,15 @@ const config: ControlPanelConfig = {
clearable: false,
renderTrigger: true,
choices: [
- ['mapbox://styles/mapbox/streets-v9', 'Streets'],
- ['mapbox://styles/mapbox/dark-v9', 'Dark'],
- ['mapbox://styles/mapbox/light-v9', 'Light'],
+ ['mapbox://styles/mapbox/streets-v9', t('Streets')],
+ ['mapbox://styles/mapbox/dark-v9', t('Dark')],
+ ['mapbox://styles/mapbox/light-v9', t('Light')],
[
'mapbox://styles/mapbox/satellite-streets-v9',
- 'Satellite Streets',
+ t('Satellite Streets'),
],
- ['mapbox://styles/mapbox/satellite-v9', 'Satellite'],
- ['mapbox://styles/mapbox/outdoors-v9', 'Outdoors'],
+ ['mapbox://styles/mapbox/satellite-v9', t('Satellite')],
+ ['mapbox://styles/mapbox/outdoors-v9', t('Outdoors')],
],
default: 'mapbox://styles/mapbox/light-v9',
description: t('Base layer map style'),
diff --git a/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/ReactParallelCoordinates.jsx b/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/ReactParallelCoordinates.jsx
index 712509e4eb0d..4a7675d555cd 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/ReactParallelCoordinates.jsx
+++ b/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/ReactParallelCoordinates.jsx
@@ -23,17 +23,17 @@ import Component from './ParallelCoordinates';
const ReactComponent = reactify(Component);
-const ParallelCoordianes = ({ className, ...otherProps }) => (
+const ParallelCoordinates = ({ className, ...otherProps }) => (
);
-ParallelCoordianes.propTypes = {
+ParallelCoordinates.propTypes = {
className: PropTypes.string.isRequired,
};
-export default styled(ParallelCoordianes)`
+export default styled(ParallelCoordinates)`
${({ theme }) => `
.superset-legacy-chart-parallel-coordinates {
div.grid {
diff --git a/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/images/example1.jpg b/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/images/example1.jpg
new file mode 100644
index 000000000000..6d73037214c6
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/images/example1.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/images/example2.jpg b/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/images/example2.jpg
new file mode 100644
index 000000000000..d5858bdc84c4
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/images/example2.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/index.js
index cc7975f97b42..0a6ff7bb5aac 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/index.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/index.js
@@ -19,6 +19,8 @@
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from './transformProps';
import thumbnail from './images/thumbnail.png';
+import example1 from './images/example1.jpg';
+import example2 from './images/example2.jpg';
import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
@@ -27,6 +29,7 @@ const metadata = new ChartMetadata({
description: t(
'Plots the individual metrics for each row in the data vertically and links them together as a line. This chart is useful for comparing multiple metrics across all of the samples or rows in the data.',
),
+ exampleGallery: [{ url: example1 }, { url: example2 }],
name: t('Parallel Coordinates'),
tags: [t('Coordinates'), t('Directional'), t('Legacy'), t('Relational')],
thumbnail,
diff --git a/superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx b/superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx
index ab1f8dfba6cc..f910a8bbfd4a 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx
+++ b/superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx
@@ -24,7 +24,6 @@ import {
D3_FORMAT_DOCS,
D3_FORMAT_OPTIONS,
D3_TIME_FORMAT_OPTIONS,
- formatSelectOptions,
getStandardizedControls,
sections,
} from '@superset-ui/chart-controls';
@@ -250,13 +249,13 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Rolling Function'),
default: 'None',
- choices: formatSelectOptions([
- 'None',
- 'mean',
- 'sum',
- 'std',
- 'cumsum',
- ]),
+ choices: [
+ ['None', t('None')],
+ ['mean', t('mean')],
+ ['sum', t('sum')],
+ ['std', t('std')],
+ ['cumsum', t('cumsum')],
+ ],
description: t(
'Defines a rolling window function to apply, works along ' +
'with the [Periods] text box',
@@ -303,22 +302,22 @@ const config: ControlPanelConfig = {
multi: true,
freeForm: true,
label: t('Time Shift'),
- choices: formatSelectOptions([
- '1 day',
- '1 week',
- '28 days',
- '30 days',
- '52 weeks',
- '1 year',
- '104 weeks',
- '2 years',
- '156 weeks',
- '3 years',
- ]),
+ choices: [
+ ['1 day', t('1 day')],
+ ['1 week', t('1 week')],
+ ['28 days', t('28 days')],
+ ['30 days', t('30 days')],
+ ['52 weeks', t('52 weeks')],
+ ['1 year', t('1 year')],
+ ['104 weeks', t('104 weeks')],
+ ['2 years', t('2 years')],
+ ['156 weeks', t('156 weeks')],
+ ['3 years', t('3 years')],
+ ],
description: t(
'Overlay one or more timeseries from a ' +
'relative time period. Expects relative time deltas ' +
- 'in natural language (example: 24 hours, 7 days, ' +
+ 'in natural language (example: 24 hours, 7 days, ' +
'52 weeks, 365 days). Free text is supported.',
),
},
@@ -352,14 +351,14 @@ const config: ControlPanelConfig = {
freeForm: true,
label: t('Rule'),
default: null,
- choices: formatSelectOptions([
- '1T',
- '1H',
- '1D',
- '7D',
- '1M',
- '1AS',
- ]),
+ choices: [
+ ['1T', t('1T')],
+ ['1H', t('1H')],
+ ['1D', t('1D')],
+ ['7D', t('7D')],
+ ['1M', t('1M')],
+ ['1AS', t('1AS')],
+ ],
description: t('Pandas resample rule'),
},
},
@@ -370,14 +369,14 @@ const config: ControlPanelConfig = {
freeForm: true,
label: t('Method'),
default: null,
- choices: formatSelectOptions([
- 'asfreq',
- 'bfill',
- 'ffill',
- 'median',
- 'mean',
- 'sum',
- ]),
+ choices: [
+ ['asfreq', t('asfreq')],
+ ['bfill', t('bfill')],
+ ['ffill', t('ffill')],
+ ['median', t('median')],
+ ['mean', t('mean')],
+ ['sum', t('sum')],
+ ],
description: t('Pandas resample method'),
},
},
diff --git a/superset-frontend/plugins/legacy-plugin-chart-partition/src/images/example.jpg b/superset-frontend/plugins/legacy-plugin-chart-partition/src/images/example.jpg
new file mode 100644
index 000000000000..7799791a27ae
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-partition/src/images/example.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-partition/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-partition/src/index.js
index 1094b21e9f38..866a18d0f00a 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-partition/src/index.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-partition/src/index.js
@@ -19,11 +19,13 @@
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from './transformProps';
import thumbnail from './images/thumbnail.png';
+import example from './images/example.jpg';
import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
category: t('Part of a Whole'),
description: t('Compare the same summarized metric across multiple groups.'),
+ exampleGallery: [{ url: example }],
name: t('Partition Chart'),
tags: [t('Categorical'), t('Comparison'), t('Legacy'), t('Proportional')],
thumbnail,
diff --git a/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/controlPanel.ts
index e4c0b477c482..11daca1e9429 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/controlPanel.ts
@@ -19,7 +19,6 @@
import { t } from '@superset-ui/core';
import {
ControlPanelConfig,
- formatSelectOptions,
D3_FORMAT_DOCS,
D3_FORMAT_OPTIONS,
D3_TIME_FORMAT_OPTIONS,
@@ -52,14 +51,14 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Aggregation function'),
clearable: false,
- choices: formatSelectOptions([
- 'sum',
- 'mean',
- 'min',
- 'max',
- 'std',
- 'var',
- ]),
+ choices: [
+ ['sum', t('sum')],
+ ['mean', t('mean')],
+ ['min', t('min')],
+ ['max', t('max')],
+ ['std', t('std')],
+ ['var', t('var')],
+ ],
default: 'sum',
description: t(
'Aggregate function to apply when pivoting and ' +
diff --git a/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/images/example.jpg b/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/images/example.jpg
new file mode 100644
index 000000000000..b6258eeba7e3
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/images/example.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/index.js
index a141ab60531c..9d45be221993 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/index.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-pivot-table/src/index.js
@@ -19,6 +19,7 @@
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from './transformProps';
import thumbnail from './images/thumbnail.png';
+import example from './images/example.jpg';
import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
@@ -27,7 +28,8 @@ const metadata = new ChartMetadata({
t(`Used to summarize a set of data by grouping together multiple statistics along two axes. Examples: Sales numbers by region and month, tasks by status and assignee, active users by age and location.
This chart is being deprecated and we recommend checking out Pivot Table V2 instead!`),
- name: t('Pivot Table'),
+ exampleGallery: [{ url: example }],
+ name: t('Pivot Table (legacy)'),
tags: [t('Legacy')],
thumbnail,
useLegacyApi: true,
diff --git a/superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx b/superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx
index a62febe9545e..11bb451d57f9 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx
+++ b/superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx
@@ -20,7 +20,6 @@ import React from 'react';
import { t } from '@superset-ui/core';
import {
ControlPanelConfig,
- formatSelectOptions,
D3_FORMAT_DOCS,
D3_FORMAT_OPTIONS,
D3_TIME_FORMAT_OPTIONS,
@@ -132,13 +131,13 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Rolling Function'),
default: 'None',
- choices: formatSelectOptions([
- 'None',
- 'mean',
- 'sum',
- 'std',
- 'cumsum',
- ]),
+ choices: [
+ ['None', t('None')],
+ ['mean', t('mean')],
+ ['sum', t('sum')],
+ ['std', t('std')],
+ ['cumsum', t('cumsum')],
+ ],
description: t(
'Defines a rolling window function to apply, works along ' +
'with the [Periods] text box',
@@ -185,18 +184,18 @@ const config: ControlPanelConfig = {
multi: true,
freeForm: true,
label: t('Time Shift'),
- choices: formatSelectOptions([
- '1 day',
- '1 week',
- '28 days',
- '30 days',
- '52 weeks',
- '1 year',
- '104 weeks',
- '2 years',
- '156 weeks',
- '3 years',
- ]),
+ choices: [
+ ['1 day', t('1 day')],
+ ['1 week', t('1 week')],
+ ['28 days', t('28 days')],
+ ['30 days', t('30 days')],
+ ['52 weeks', t('52 weeks')],
+ ['1 year', t('1 year')],
+ ['104 weeks', t('104 weeks')],
+ ['2 years', t('2 years')],
+ ['156 weeks', t('156 weeks')],
+ ['3 years', t('3 years')],
+ ],
description: t(
'Overlay one or more timeseries from a ' +
'relative time period. Expects relative time deltas ' +
@@ -212,10 +211,10 @@ const config: ControlPanelConfig = {
label: t('Calculation type'),
default: 'values',
choices: [
- ['values', 'Actual Values'],
- ['absolute', 'Difference'],
- ['percentage', 'Percentage change'],
- ['ratio', 'Ratio'],
+ ['values', t('Actual Values')],
+ ['absolute', t('Difference')],
+ ['percentage', t('Percentage change')],
+ ['ratio', t('Ratio')],
],
description: t(
'How to display time shifts: as individual lines; as the ' +
@@ -234,14 +233,14 @@ const config: ControlPanelConfig = {
freeForm: true,
label: t('Rule'),
default: null,
- choices: formatSelectOptions([
- '1T',
- '1H',
- '1D',
- '7D',
- '1M',
- '1AS',
- ]),
+ choices: [
+ ['1T', t('1T')],
+ ['1H', t('1H')],
+ ['1D', t('1D')],
+ ['7D', t('7D')],
+ ['1M', t('1M')],
+ ['1AS', t('1AS')],
+ ],
description: t('Pandas resample rule'),
},
},
@@ -252,14 +251,14 @@ const config: ControlPanelConfig = {
freeForm: true,
label: t('Method'),
default: null,
- choices: formatSelectOptions([
- 'asfreq',
- 'bfill',
- 'ffill',
- 'median',
- 'mean',
- 'sum',
- ]),
+ choices: [
+ ['asfreq', t('asfreq')],
+ ['bfill', t('bfill')],
+ ['ffill', t('ffill')],
+ ['median', t('median')],
+ ['mean', t('mean')],
+ ['sum', t('sum')],
+ ],
description: t('Pandas resample method'),
},
},
diff --git a/superset-frontend/plugins/legacy-plugin-chart-rose/src/images/example1.jpg b/superset-frontend/plugins/legacy-plugin-chart-rose/src/images/example1.jpg
new file mode 100644
index 000000000000..732aa8dde50c
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-rose/src/images/example1.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-rose/src/images/example2.jpg b/superset-frontend/plugins/legacy-plugin-chart-rose/src/images/example2.jpg
new file mode 100644
index 000000000000..0424e67660f3
Binary files /dev/null and b/superset-frontend/plugins/legacy-plugin-chart-rose/src/images/example2.jpg differ
diff --git a/superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js
index 6c215aea0393..a46e0b753570 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js
@@ -19,6 +19,8 @@
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from './transformProps';
import thumbnail from './images/thumbnail.png';
+import example1 from './images/example1.jpg';
+import example2 from './images/example2.jpg';
import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
@@ -26,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
'A polar coordinate chart where the circle is broken into wedges of equal angle, and the value represented by any wedge is illustrated by its area, rather than its radius or sweep angle.',
),
+ exampleGallery: [{ url: example1 }, { url: example2 }],
name: t('Nightingale Rose Chart'),
tags: [
t('Legacy'),
diff --git a/superset-frontend/plugins/legacy-plugin-chart-sankey-loop/src/SankeyLoop.js b/superset-frontend/plugins/legacy-plugin-chart-sankey-loop/src/SankeyLoop.js
index 33a349015961..00f47ada2666 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-sankey-loop/src/SankeyLoop.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-sankey-loop/src/SankeyLoop.js
@@ -26,9 +26,9 @@ import {
CategoricalColorNamespace,
} from '@superset-ui/core';
-// a problem with 'd3-sankey-diagram' is that the sankey().extent() paramters, which
+// a problem with 'd3-sankey-diagram' is that the sankey().extent() parameters, which
// informs the layout of the bounding box of the sankey columns, does not account
-// for labels and paths which happen to be layedout outside that rectangle.
+// for labels and paths which happen to be layed out outside that rectangle.
// for that reason i've selected relatively large default left/right margins, and have
// made 'margin' a property. i have raised an issue in the chart repo:
//
diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/Sunburst.js b/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/Sunburst.js
index f967c985fcfd..dd70afad3b36 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/Sunburst.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/Sunburst.js
@@ -24,6 +24,7 @@ import {
NumberFormats,
CategoricalColorNamespace,
getSequentialSchemeRegistry,
+ t,
} from '@superset-ui/core';
import wrapSvgText from './utils/wrapSvgText';
@@ -381,7 +382,10 @@ function Sunburst(element, props) {
.append('text')
.attr('class', 'path-abs-percent')
.attr('y', yOffsets[offsetIndex])
- .text(`${absolutePercString} of total`);
+ // eslint-disable-next-line prefer-template
+ .text(absolutePercString + ' ' + t('of total'));
+
+ const OF_PARENT_TEXT = t('of parent');
if (conditionalPercString) {
offsetIndex += 1;
@@ -389,7 +393,7 @@ function Sunburst(element, props) {
.append('text')
.attr('class', 'path-cond-percent')
.attr('y', yOffsets[offsetIndex])
- .text(`${conditionalPercString} of parent`);
+ .text(`${conditionalPercString} ${OF_PARENT_TEXT}`);
}
offsetIndex += 1;
diff --git a/superset-frontend/plugins/legacy-plugin-chart-treemap/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-treemap/src/index.js
index 0b517d6a2d6a..5603d7e30100 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-treemap/src/index.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-treemap/src/index.js
@@ -37,7 +37,7 @@ const metadata = new ChartMetadata({
{ url: example3 },
{ url: example4 },
],
- name: t('Treemap'),
+ name: t('Treemap (legacy)'),
tags: [
t('Categorical'),
t('Legacy'),
diff --git a/superset-frontend/plugins/legacy-plugin-chart-world-map/src/WorldMap.js b/superset-frontend/plugins/legacy-plugin-chart-world-map/src/WorldMap.js
index 7b56d432eaaa..abb9e19b9f11 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-world-map/src/WorldMap.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-world-map/src/WorldMap.js
@@ -24,8 +24,6 @@ import {
getNumberFormatter,
getSequentialSchemeRegistry,
CategoricalColorNamespace,
- logging,
- t,
} from '@superset-ui/core';
import Datamap from 'datamaps/dist/datamaps.world.min';
import { ColorBy } from './utils';
@@ -46,6 +44,9 @@ const propTypes = {
showBubbles: PropTypes.bool,
linearColorScheme: PropTypes.string,
color: PropTypes.string,
+ setDataMask: PropTypes.func,
+ onContextMenu: PropTypes.func,
+ emitCrossFilters: PropTypes.bool,
};
const formatter = getNumberFormatter();
@@ -66,7 +67,10 @@ function WorldMap(element, props) {
sliceId,
theme,
onContextMenu,
+ setDataMask,
inContextMenu,
+ filterState,
+ emitCrossFilters,
} = props;
const div = d3.select(element);
div.classed('superset-legacy-chart-world-map', true);
@@ -108,13 +112,68 @@ function WorldMap(element, props) {
mapData[d.country] = d;
});
+ const getCrossFilterDataMask = source => {
+ const selected = Object.values(filterState.selectedValues || {});
+ const key = source.id || source.country;
+ const country =
+ countryFieldtype === 'name' ? mapData[key]?.name : mapData[key]?.country;
+
+ if (!country) {
+ return undefined;
+ }
+
+ let values;
+ if (selected.includes(key)) {
+ values = [];
+ } else {
+ values = [country];
+ }
+
+ return {
+ dataMask: {
+ extraFormData: {
+ filters: values.length
+ ? [
+ {
+ col: entity,
+ op: 'IN',
+ val: values,
+ },
+ ]
+ : [],
+ },
+ filterState: {
+ value: values.length ? values : null,
+ selectedValues: values.length ? [key] : null,
+ },
+ },
+ isCurrentValueSelected: selected.includes(key),
+ };
+ };
+
+ const handleClick = source => {
+ if (!emitCrossFilters) {
+ return;
+ }
+ const pointerEvent = d3.event;
+ pointerEvent.preventDefault();
+ getCrossFilterDataMask(source);
+
+ const dataMask = getCrossFilterDataMask(source)?.dataMask;
+ if (dataMask) {
+ setDataMask(dataMask);
+ }
+ };
+
const handleContextMenu = source => {
const pointerEvent = d3.event;
pointerEvent.preventDefault();
const key = source.id || source.country;
- const val = countryFieldtype === 'name' ? mapData[key]?.name : key;
+ const val =
+ countryFieldtype === 'name' ? mapData[key]?.name : mapData[key]?.country;
+ let drillToDetailFilters;
if (val) {
- const filters = [
+ drillToDetailFilters = [
{
col: entity,
op: '==',
@@ -122,15 +181,11 @@ function WorldMap(element, props) {
formattedVal: val,
},
];
- onContextMenu(pointerEvent.clientX, pointerEvent.clientY, filters);
- } else {
- logging.warn(
- t(
- `Unable to process right-click on %s. Check you chart configuration.`,
- ),
- key,
- );
}
+ onContextMenu(pointerEvent.clientX, pointerEvent.clientY, {
+ drillToDetail: drillToDetailFilters,
+ crossFilter: getCrossFilterDataMask(source),
+ });
};
const map = new Datamap({
@@ -178,7 +233,8 @@ function WorldMap(element, props) {
done: datamap => {
datamap.svg
.selectAll('.datamaps-subunit')
- .on('contextmenu', handleContextMenu);
+ .on('contextmenu', handleContextMenu)
+ .on('click', handleClick);
},
});
@@ -190,7 +246,26 @@ function WorldMap(element, props) {
.selectAll('circle.datamaps-bubble')
.style('fill', color)
.style('stroke', color)
- .on('contextmenu', handleContextMenu);
+ .on('contextmenu', handleContextMenu)
+ .on('click', handleClick);
+ }
+
+ if (filterState.selectedValues?.length > 0) {
+ d3.selectAll('path.datamaps-subunit')
+ .filter(
+ countryFeature =>
+ !filterState.selectedValues.includes(countryFeature.id),
+ )
+ .style('fill-opacity', theme.opacity.mediumLight);
+
+ // hack to ensure that the clicked country's color is preserved
+ // sometimes the fill color would get default grey value after applying cross filter
+ filterState.selectedValues.forEach(value => {
+ d3.select(`path.datamaps-subunit.${value}`).style(
+ 'fill',
+ mapData[value]?.fillColor,
+ );
+ });
}
}
diff --git a/superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts
index feea2e08481c..b0f3be22c50e 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts
@@ -41,10 +41,10 @@ const config: ControlPanelConfig = {
label: t('Country Field Type'),
default: 'cca2',
choices: [
- ['name', 'Full name'],
- ['cioc', 'code International Olympic Committee (cioc)'],
- ['cca2', 'code ISO 3166-1 alpha-2 (cca2)'],
- ['cca3', 'code ISO 3166-1 alpha-3 (cca3)'],
+ ['name', t('Full name')],
+ ['cioc', t('code International Olympic Committee (cioc)')],
+ ['cca2', t('code ISO 3166-1 alpha-2 (cca2)')],
+ ['cca3', t('code ISO 3166-1 alpha-3 (cca3)')],
],
description: t(
'The country code standard that Superset should expect ' +
diff --git a/superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js
index 6303caec08db..8fc0d9aad68a 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js
@@ -45,7 +45,7 @@ const metadata = new ChartMetadata({
],
thumbnail,
useLegacyApi: true,
- behaviors: [Behavior.DRILL_TO_DETAIL],
+ behaviors: [Behavior.INTERACTIVE_CHART, Behavior.DRILL_TO_DETAIL],
});
export default class WorldMapChartPlugin extends ChartPlugin {
diff --git a/superset-frontend/plugins/legacy-plugin-chart-world-map/src/transformProps.js b/superset-frontend/plugins/legacy-plugin-chart-world-map/src/transformProps.js
index 6348874eaba0..5f8c71844917 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-world-map/src/transformProps.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-world-map/src/transformProps.js
@@ -19,9 +19,17 @@
import { rgb } from 'd3-color';
export default function transformProps(chartProps) {
- const { width, height, formData, queriesData, hooks, inContextMenu } =
- chartProps;
- const { onContextMenu } = hooks;
+ const {
+ width,
+ height,
+ formData,
+ queriesData,
+ hooks,
+ inContextMenu,
+ filterState,
+ emitCrossFilters,
+ } = chartProps;
+ const { onContextMenu, setDataMask } = hooks;
const {
countryFieldtype,
entity,
@@ -49,6 +57,9 @@ export default function transformProps(chartProps) {
colorScheme,
sliceId,
onContextMenu,
+ setDataMask,
inContextMenu,
+ filterState,
+ emitCrossFilters,
};
}
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/package.json b/superset-frontend/plugins/legacy-preset-chart-deckgl/package.json
index 172430b57a79..83a4a977324f 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/package.json
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/package.json
@@ -37,7 +37,7 @@
"mousetrap": "^1.6.1",
"prop-types": "^15.6.0",
"react-bootstrap-slider": "2.1.5",
- "underscore": "^1.8.3",
+ "underscore": "^1.12.1",
"urijs": "^1.19.8",
"xss": "^1.0.10"
},
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/components/PlaySlider.jsx b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/components/PlaySlider.jsx
index eda7803f2175..1705b8f53384 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/components/PlaySlider.jsx
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/components/PlaySlider.jsx
@@ -27,7 +27,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import Mousetrap from 'mousetrap';
import { t, styled } from '@superset-ui/core';
-import BootrapSliderWrapper from './BootstrapSliderWrapper';
+import BootstrapSliderWrapper from './BootstrapSliderWrapper';
const StyledSlider = styled.div`
${({ theme }) => `
@@ -210,7 +210,7 @@ export default class PlaySlider extends React.PureComponent {
/>
- (
{formData.dimension && (
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/Grid.jsx b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/Grid.jsx
index de2a6036598a..d19ef3edb161 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/Grid.jsx
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/Grid.jsx
@@ -30,11 +30,13 @@ function setTooltipContent(o) {
return (
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/Hex.jsx b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/Hex.jsx
index cd99138028fb..a3c430acb19f 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/Hex.jsx
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/Hex.jsx
@@ -30,11 +30,12 @@ function setTooltipContent(o) {
return (
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts
index eee7c341a19c..2f9293c52182 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts
@@ -22,7 +22,6 @@ import {
sections,
} from '@superset-ui/chart-controls';
import { t } from '@superset-ui/core';
-import { formatSelectOptions } from '../../utilities/utils';
import {
autozoom,
extruded,
@@ -71,20 +70,20 @@ const config: ControlPanelConfig = {
default: 'sum',
clearable: false,
renderTrigger: true,
- choices: formatSelectOptions([
- 'sum',
- 'min',
- 'max',
- 'mean',
- 'median',
- 'count',
- 'variance',
- 'deviation',
- 'p1',
- 'p5',
- 'p95',
- 'p99',
- ]),
+ choices: [
+ ['sum', t('sum')],
+ ['min', t('min')],
+ ['max', t('max')],
+ ['mean', t('mean')],
+ ['median', t('median')],
+ ['count', t('count')],
+ ['variance', t('variance')],
+ ['deviation', t('deviation')],
+ ['p1', t('p1')],
+ ['p5', t('p5')],
+ ['p95', t('p95')],
+ ['p99', t('p99')],
+ ],
},
},
],
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts
index 99866115ab02..cdbb06746bc9 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts
@@ -52,8 +52,8 @@ const config: ControlPanelConfig = {
config: {
...lineType.config,
choices: [
- ['polyline', 'Polyline'],
- ['json', 'JSON'],
+ ['polyline', t('Polyline')],
+ ['json', t('JSON')],
],
},
},
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/Polygon.jsx b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/Polygon.jsx
index bdd4f66bc116..81df4384f9da 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/Polygon.jsx
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/Polygon.jsx
@@ -22,6 +22,7 @@
/* eslint no-underscore-dangle: ["error", { "allow": ["", "__timestamp"] }] */
import React from 'react';
+import { t } from '@superset-ui/core';
import PropTypes from 'prop-types';
import { PolygonLayer } from 'deck.gl';
@@ -39,7 +40,7 @@ import getPointsFromPolygon from '../../utils/getPointsFromPolygon';
// eslint-disable-next-line import/extensions
import fitViewport from '../../utils/fitViewport';
-const DOUBLE_CLICK_TRESHOLD = 250; // milliseconds
+const DOUBLE_CLICK_THRESHOLD = 250; // milliseconds
function getElevation(d, colorScaler) {
/* in deck.gl 5.3.4 (used in Superset as of 2018-10-24), if a polygon has
@@ -57,7 +58,11 @@ function setTooltipContent(formData) {
return (
{o.object.name && (
-
+
)}
{o.object[formData.line_column] && (
{o.object.cat_color && (
)}
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts
index 4932019bb7ad..ef3d45a95685 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts
@@ -80,12 +80,12 @@ const config: ControlPanelConfig = {
default: 'square_m',
clearable: false,
choices: [
- ['square_m', 'Square meters'],
- ['square_km', 'Square kilometers'],
- ['square_miles', 'Square miles'],
- ['radius_m', 'Radius in meters'],
- ['radius_km', 'Radius in kilometers'],
- ['radius_miles', 'Radius in miles'],
+ ['square_m', t('Square meters')],
+ ['square_km', t('Square kilometers')],
+ ['square_miles', t('Square miles')],
+ ['radius_m', t('Radius in meters')],
+ ['radius_km', t('Radius in kilometers')],
+ ['radius_miles', t('Radius in miles')],
],
description: t(
'The unit of measure for the specified point radius',
@@ -119,7 +119,7 @@ const config: ControlPanelConfig = {
renderTrigger: true,
default: 250,
description: t(
- 'Maxium radius size of the circle, in pixels. As the zoom level changes, this ' +
+ 'Maximum radius size of the circle, in pixels. As the zoom level changes, this ' +
'insures that the circle respects this maximum radius.',
),
},
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/Screengrid.jsx b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/Screengrid.jsx
index ca61ec0b81cc..7883dda17ed6 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/Screengrid.jsx
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/Screengrid.jsx
@@ -40,10 +40,15 @@ function setTooltipContent(o) {
return (
-
+
);
}
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx
index f665c118eacc..3ae47ac054e8 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx
@@ -38,8 +38,8 @@ const DEFAULT_VIEWPORT = {
};
const sandboxUrl =
- 'https://github.com/apache/incubator-superset/' +
- 'blob/master/superset-frontend/src/modules/sandbox.js';
+ 'https://github.com/apache/superset/' +
+ 'blob/master/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/sandbox.js';
const jsFunctionInfo = (
{t(
@@ -121,7 +121,7 @@ export const jsColumns = {
label: t('Extra data for JS'),
default: [],
description: t(
- 'List of extra columns made available in Javascript functions',
+ 'List of extra columns made available in JavaScript functions',
),
},
};
@@ -129,7 +129,7 @@ export const jsColumns = {
export const jsDataMutator = {
name: 'js_data_mutator',
config: jsFunctionControl(
- t('Javascript data interceptor'),
+ t('JavaScript data interceptor'),
t(
'Define a javascript function that receives the data array used in the visualization ' +
'and is expected to return a modified version of that array. This can be used ' +
@@ -141,7 +141,7 @@ export const jsDataMutator = {
export const jsTooltip = {
name: 'js_tooltip',
config: jsFunctionControl(
- t('Javascript tooltip generator'),
+ t('JavaScript tooltip generator'),
t(
'Define a function that receives the input and outputs the content for a tooltip',
),
@@ -151,7 +151,7 @@ export const jsTooltip = {
export const jsOnclickHref = {
name: 'js_onclick_href',
config: jsFunctionControl(
- t('Javascript onClick href'),
+ t('JavaScript onClick href'),
t('Define a function that returns a URL to navigate to when user clicks'),
),
};
@@ -179,11 +179,11 @@ export const legendPosition = {
clearable: false,
default: 'tr',
choices: [
- [null, 'None'],
- ['tl', 'Top left'],
- ['tr', 'Top right'],
- ['bl', 'Bottom left'],
- ['br', 'Bottom right'],
+ [null, t('None')],
+ ['tl', t('Top left')],
+ ['tr', t('Top right')],
+ ['bl', t('Bottom left')],
+ ['br', t('Bottom right')],
],
renderTrigger: true,
},
@@ -270,7 +270,7 @@ export const extruded = {
label: t('Extruded'),
renderTrigger: true,
default: true,
- description: 'Whether to make the grid 3D',
+ description: t('Whether to make the grid 3D'),
},
};
@@ -347,9 +347,9 @@ export const lineType = {
default: 'json',
description: t('The encoding format of the lines'),
choices: [
- ['polyline', 'Polyline'],
- ['json', 'JSON'],
- ['geohash', 'geohash (square)'],
+ ['polyline', t('Polyline')],
+ ['json', t('JSON')],
+ ['geohash', t('geohash (square)')],
],
},
};
@@ -371,12 +371,12 @@ export const mapboxStyle = {
clearable: false,
renderTrigger: true,
choices: [
- ['mapbox://styles/mapbox/streets-v9', 'Streets'],
- ['mapbox://styles/mapbox/dark-v9', 'Dark'],
- ['mapbox://styles/mapbox/light-v9', 'Light'],
- ['mapbox://styles/mapbox/satellite-streets-v9', 'Satellite Streets'],
- ['mapbox://styles/mapbox/satellite-v9', 'Satellite'],
- ['mapbox://styles/mapbox/outdoors-v9', 'Outdoors'],
+ ['mapbox://styles/mapbox/streets-v9', t('Streets')],
+ ['mapbox://styles/mapbox/dark-v9', t('Dark')],
+ ['mapbox://styles/mapbox/light-v9', t('Light')],
+ ['mapbox://styles/mapbox/satellite-streets-v9', t('Satellite Streets')],
+ ['mapbox://styles/mapbox/satellite-v9', t('Satellite')],
+ ['mapbox://styles/mapbox/outdoors-v9', t('Outdoors')],
],
default: 'mapbox://styles/mapbox/light-v9',
description: t('Base layer map style'),
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/fitViewport.ts b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/fitViewport.ts
index 5b5bbb6b478f..c8e2487b90c1 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/fitViewport.ts
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/fitViewport.ts
@@ -21,7 +21,7 @@ import computeBoundsFromPoints from './computeBoundsFromPoints';
import { Point } from '../types';
export type Viewport = {
- longtitude: number;
+ longitude: number;
latitude: number;
zoom: number;
bearing?: number;
diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/time.js b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/time.js
index 83cb78b494c1..6554adb7a1dd 100644
--- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/time.js
+++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/time.js
@@ -20,7 +20,7 @@
import moment from 'moment';
// array with the minimum values of each part of a timestamp -- note that
-// months are zero-indexed in Javascript
+// months are zero-indexed in JavaScript
const truncatePartTo = [
1, // year
0, // month
@@ -62,13 +62,13 @@ export function truncate(timestamp, step) {
function getStepSeconds(step, start) {
/* Return number of seconds in a step.
*
- * The step might be ambigous, eg, "1 month" has a variable number of
+ * The step might be ambiguous, eg, "1 month" has a variable number of
* seconds, which is why we need to know the start time.
*/
- const startMillliseconds = parseInt(moment(start).format('x'), 10);
+ const startMilliseconds = parseInt(moment(start).format('x'), 10);
const endMilliseconds = parseInt(moment(start).add(step).format('x'), 10);
- return endMilliseconds - startMillliseconds;
+ return endMilliseconds - startMilliseconds;
}
export function getPlaySliderParams(timestamps, timeGrain) {
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/controlPanel.ts
index c3c08a23c028..d06883a222f0 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/controlPanel.ts
@@ -52,9 +52,9 @@ const config: ControlPanelConfig = {
label: t('Stacked Style'),
renderTrigger: true,
choices: [
- ['stack', 'stack'],
- ['stream', 'stream'],
- ['expand', 'expand'],
+ ['stack', t('stack')],
+ ['stream', t('stream')],
+ ['expand', t('expand')],
],
default: 'stack',
description: '',
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js
index 1b31acfd4468..c0208b8e9786 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js
@@ -38,7 +38,7 @@ const metadata = new ChartMetadata({
{ url: example3, caption: t('Video game consoles') },
{ url: example4, caption: t('Vehicle Types') },
],
- name: t('Area Chart'),
+ name: t('Area Chart (legacy)'),
supportedAnnotationTypes: [ANNOTATION_TYPES.INTERVAL, ANNOTATION_TYPES.EVENT],
tags: [
t('Aesthetic'),
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js
index 073d533d3819..35a345fdbbaa 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js
@@ -32,7 +32,7 @@ const metadata = new ChartMetadata({
'Visualize how a metric changes over time using bars. Add a group by column to visualize group level metrics and how they change over time.',
),
exampleGallery: [{ url: example1 }, { url: example2 }, { url: example3 }],
- name: t('Time-series Bar Chart'),
+ name: t('Time-series Bar Chart (legacy)'),
supportedAnnotationTypes: [ANNOTATION_TYPES.INTERVAL, ANNOTATION_TYPES.EVENT],
tags: [
t('Bar'),
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/images/example.jpg b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/images/example.jpg
new file mode 100644
index 000000000000..b515822fa2c9
Binary files /dev/null and b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/images/example.jpg differ
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/index.js b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/index.js
index a97d9bd7b67d..4b5a032ee654 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/index.js
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/index.js
@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from '../transformProps';
+import example from './images/example.jpg';
import thumbnail from './images/thumbnail.png';
import controlPanel from './controlPanel';
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
'Visualizes a metric across three dimensions of data in a single chart (X axis, Y axis, and bubble size). Bubbles from the same group can be showcased using bubble color.',
),
+ exampleGallery: [{ url: example }],
name: t('Bubble Chart'),
tags: [
t('Multi-Dimensions'),
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/images/example.jpg b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/images/example.jpg
new file mode 100644
index 000000000000..360d255eb5e3
Binary files /dev/null and b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/images/example.jpg differ
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/index.js b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/index.js
index 2626c42d2cdb..4160d9277094 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/index.js
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/index.js
@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from '../transformProps';
+import example from './images/example.jpg';
import thumbnail from './images/thumbnail.png';
import controlPanel from './controlPanel';
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
'Showcases the progress of a single metric against a given target. The higher the fill, the closer the metric is to the target.',
),
+ exampleGallery: [{ url: example }],
name: t('Bullet Chart'),
tags: [t('Business'), t('Legacy'), t('Report'), t('nvd3')],
thumbnail,
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/images/example.jpg b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/images/example.jpg
new file mode 100644
index 000000000000..375ef57a6aab
Binary files /dev/null and b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/images/example.jpg differ
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/index.js b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/index.js
index e417e45e440b..91d6bbb4f774 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/index.js
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/index.js
@@ -19,6 +19,7 @@
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from '../transformProps';
import thumbnail from './images/thumbnail.png';
+import example from './images/example.jpg';
import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
'Visualizes many different time-series objects in a single chart. This chart is being deprecated and we recommend using the Time-series Chart instead.',
),
+ exampleGallery: [{ url: example }],
name: t('Time-series Percent Change'),
tags: [
t('Legacy'),
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/index.js b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/index.js
index 16b66c00b4c6..09d289d694e8 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/index.js
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/index.js
@@ -16,7 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
+import {
+ t,
+ ChartMetadata,
+ ChartPlugin,
+ hasGenericChartAxes,
+} from '@superset-ui/core';
import transformProps from '../transformProps';
import thumbnail from './images/thumbnail.png';
import example1 from './images/Bar_Chart.jpg';
@@ -35,7 +40,7 @@ const metadata = new ChartMetadata({
{ url: example2, caption: 'Grouped style' },
{ url: example3 },
],
- name: t('Bar Chart'),
+ name: hasGenericChartAxes ? t('Bar Chart (legacy)') : t('Bar Chart'),
tags: [
t('Additive'),
t('Bar'),
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DualLine/images/example.jpg b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DualLine/images/example.jpg
new file mode 100644
index 000000000000..d8a13f67e820
Binary files /dev/null and b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DualLine/images/example.jpg differ
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DualLine/index.js b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DualLine/index.js
index a314c4650795..218e45f9cd75 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DualLine/index.js
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/DualLine/index.js
@@ -19,6 +19,7 @@
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from '../transformProps';
import thumbnail from './images/thumbnail.png';
+import example from './images/example.jpg';
import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
'Visualizes 2 metrics as line plots using the same x-axis. This chart is useful for comparing metrics across the same time range.',
),
+ exampleGallery: [{ url: example }],
name: t('Dual Line Chart'),
tags: [t('Legacy'), t('nvd3')],
thumbnail,
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Line/index.js b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Line/index.js
index 3ec8f2c7fd06..0d903ce3ca1b 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Line/index.js
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Line/index.js
@@ -35,7 +35,7 @@ const metadata = new ChartMetadata({
{ url: example2 },
{ url: battery, caption: t('Battery level over time') },
],
- name: t('Line Chart'),
+ name: t('Line Chart (legacy)'),
supportedAnnotationTypes: [
ANNOTATION_TYPES.TIME_SERIES,
ANNOTATION_TYPES.INTERVAL,
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/LineMulti/images/example.jpg b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/LineMulti/images/example.jpg
new file mode 100644
index 000000000000..2ec8881c31b5
Binary files /dev/null and b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/LineMulti/images/example.jpg differ
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/LineMulti/index.js b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/LineMulti/index.js
index 3adcd73a289b..ae7d194b90c9 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/LineMulti/index.js
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/LineMulti/index.js
@@ -19,6 +19,7 @@
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from '../transformProps';
import thumbnail from './images/thumbnail.png';
+import example from './images/example.jpg';
import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
'Visualize two different time series using the same x-axis time range. This chart is being deprecated and we recommend using the Mixed Timeseries Chart instead!',
),
+ exampleGallery: [{ url: example }],
name: t('Multiple Line Charts'),
tags: [
t('Multi-Variables'),
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx
index 4532da95748d..a466b337425a 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx
@@ -23,7 +23,6 @@ import { t } from '@superset-ui/core';
import {
ControlPanelSectionConfig,
CustomControlItem,
- formatSelectOptions,
D3_TIME_FORMAT_OPTIONS,
D3_FORMAT_DOCS,
D3_FORMAT_OPTIONS,
@@ -75,7 +74,15 @@ export const leftMargin: CustomControlItem = {
freeForm: true,
clearable: false,
label: t('Left Margin'),
- choices: formatSelectOptions(['auto', 50, 75, 100, 125, 150, 200]),
+ choices: [
+ ['auto', t('auto')],
+ [50, '50'],
+ [75, '75'],
+ [100, '100'],
+ [125, '125'],
+ [150, '150'],
+ [200, '200'],
+ ],
default: 'auto',
renderTrigger: true,
description: t(
@@ -112,14 +119,14 @@ export const lineInterpolation: CustomControlItem = {
type: 'SelectControl',
label: t('Line Style'),
renderTrigger: true,
- choices: formatSelectOptions([
- 'linear',
- 'basis',
- 'cardinal',
- 'monotone',
- 'step-before',
- 'step-after',
- ]),
+ choices: [
+ ['linear', t('linear')],
+ ['basis', t('basis')],
+ ['cardinal', t('cardinal')],
+ ['monotone', t('monotone')],
+ ['step-before', t('step-before')],
+ ['step-after', t('step-after')],
+ ],
default: 'linear',
description: t('Line interpolation as defined by d3.js'),
},
@@ -134,9 +141,9 @@ export const showBrush: CustomControlItem = {
clearable: false,
default: 'auto',
choices: [
- ['yes', 'Yes'],
- ['no', 'No'],
- ['auto', 'Auto'],
+ ['yes', t('Yes')],
+ ['no', t('No')],
+ ['auto', t('Auto')],
],
description: t('Whether to display the time range interactive selector'),
},
@@ -185,7 +192,15 @@ export const bottomMargin: CustomControlItem = {
clearable: false,
freeForm: true,
label: t('Bottom Margin'),
- choices: formatSelectOptions(['auto', 50, 75, 100, 125, 150, 200]),
+ choices: [
+ ['auto', t('auto')],
+ [50, '50'],
+ [75, '75'],
+ [100, '100'],
+ [125, '125'],
+ [150, '150'],
+ [200, '200'],
+ ],
default: 'auto',
renderTrigger: true,
description: t(
@@ -199,7 +214,12 @@ export const xTicksLayout: CustomControlItem = {
config: {
type: 'SelectControl',
label: t('X Tick Layout'),
- choices: formatSelectOptions(['auto', 'flat', '45°', 'staggered']),
+ choices: [
+ ['auto', t('auto')],
+ ['flat', t('flat')],
+ ['45°', '45°'],
+ ['staggered', t('staggered')],
+ ],
default: 'auto',
clearable: false,
renderTrigger: true,
@@ -378,13 +398,13 @@ export const timeSeriesSection: ControlPanelSectionConfig[] = [
type: 'SelectControl',
label: t('Rolling Function'),
default: 'None',
- choices: formatSelectOptions([
- 'None',
- 'mean',
- 'sum',
- 'std',
- 'cumsum',
- ]),
+ choices: [
+ ['None', t('None')],
+ ['mean', t('mean')],
+ ['sum', t('sum')],
+ ['std', t('std')],
+ ['cumsum', t('cumsum')],
+ ],
description: t(
'Defines a rolling window function to apply, works along ' +
'with the [Periods] text box',
@@ -432,22 +452,22 @@ export const timeSeriesSection: ControlPanelSectionConfig[] = [
multi: true,
freeForm: true,
label: t('Time Shift'),
- choices: formatSelectOptions([
- '1 day',
- '1 week',
- '28 days',
- '30 days',
- '52 weeks',
- '1 year',
- '104 weeks',
- '2 years',
- '156 weeks',
- '3 years',
- ]),
+ choices: [
+ ['1 day', t('1 day')],
+ ['1 week', t('1 week')],
+ ['28 days', t('28 days')],
+ ['30 days', t('30 days')],
+ ['52 weeks', t('52 weeks')],
+ ['1 year', t('1 year')],
+ ['104 weeks', t('104 weeks')],
+ ['2 years', t('2 years')],
+ ['156 weeks', t('156 weeks')],
+ ['3 years', t('3 years')],
+ ],
description: t(
'Overlay one or more timeseries from a ' +
'relative time period. Expects relative time deltas ' +
- 'in natural language (example: 24 hours, 7 days, ' +
+ 'in natural language (example: 24 hours, 7 days, ' +
'52 weeks, 365 days). Free text is supported.',
),
},
@@ -483,7 +503,14 @@ export const timeSeriesSection: ControlPanelSectionConfig[] = [
freeForm: true,
label: t('Rule'),
default: null,
- choices: formatSelectOptions(['1T', '1H', '1D', '7D', '1M', '1AS']),
+ choices: [
+ ['1T', t('1T')],
+ ['1H', t('1H')],
+ ['1D', t('1D')],
+ ['7D', t('7D')],
+ ['1M', t('1M')],
+ ['1AS', t('1AS')],
+ ],
description: t('Pandas resample rule'),
},
},
@@ -496,14 +523,14 @@ export const timeSeriesSection: ControlPanelSectionConfig[] = [
freeForm: true,
label: t('Method'),
default: null,
- choices: formatSelectOptions([
- 'asfreq',
- 'bfill',
- 'ffill',
- 'median',
- 'mean',
- 'sum',
- ]),
+ choices: [
+ ['asfreq', t('asfreq')],
+ ['bfill', t('bfill')],
+ ['ffill', t('ffill')],
+ ['median', t('median')],
+ ['mean', t('mean')],
+ ['sum', t('sum')],
+ ],
description: t('Pandas resample method'),
},
},
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts
index 9145d5a8429a..ca4bf66062ae 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts
@@ -19,7 +19,9 @@
import { t } from '@superset-ui/core';
import {
ControlPanelConfig,
+ D3_FORMAT_DOCS,
D3_FORMAT_OPTIONS,
+ D3_NUMBER_FORMAT_DESCRIPTION_PERCENTAGE_TEXT,
} from '@superset-ui/chart-controls';
import { showLegend } from '../NVD3Controls';
@@ -48,12 +50,12 @@ const config: ControlPanelConfig = {
default: 'key',
renderTrigger: true,
choices: [
- ['key', 'Category Name'],
- ['value', 'Value'],
- ['percent', 'Percentage'],
- ['key_value', 'Category and Value'],
- ['key_percent', 'Category and Percentage'],
- ['key_value_percent', 'Category, Value and Percentage'],
+ ['key', t('Category Name')],
+ ['value', t('Value')],
+ ['percent', t('Percentage')],
+ ['key_value', t('Category and Value')],
+ ['key_percent', t('Category and Percentage')],
+ ['key_value_percent', t('Category, Value and Percentage')],
],
description: t('What should be shown on the label?'),
},
@@ -67,11 +69,7 @@ const config: ControlPanelConfig = {
renderTrigger: true,
default: 'SMART_NUMBER',
choices: D3_FORMAT_OPTIONS,
- description: `${t(
- 'D3 format syntax: https://github.com/d3/d3-format',
- )} ${t(
- 'Only applies when the "Label Type" is not set to a percentage.',
- )}`,
+ description: `${D3_FORMAT_DOCS} ${D3_NUMBER_FORMAT_DESCRIPTION_PERCENTAGE_TEXT}`,
},
},
],
@@ -97,7 +95,7 @@ const config: ControlPanelConfig = {
renderTrigger: true,
default: true,
description: t(
- 'Whether to display the labels. Note that the label only displays when the the 5% ' +
+ 'Whether to display the labels. Note that the label only displays when the 5% ' +
'threshold.',
),
},
diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts
index 36d6189c054c..595d5d4b7211 100644
--- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts
@@ -56,12 +56,12 @@ const config: ControlPanelConfig = {
freeForm: true,
clearable: false,
choices: [
- ['AS', 'Year (freq=AS)'],
- ['52W-MON', '52 weeks starting Monday (freq=52W-MON)'],
- ['W-SUN', '1 week starting Sunday (freq=W-SUN)'],
- ['W-MON', '1 week starting Monday (freq=W-MON)'],
- ['D', 'Day (freq=D)'],
- ['4W-MON', '4 weeks (freq=4W-MON)'],
+ ['AS', t('Year (freq=AS)')],
+ ['52W-MON', t('52 weeks starting Monday (freq=52W-MON)')],
+ ['W-SUN', t('1 week starting Sunday (freq=W-SUN)')],
+ ['W-MON', t('1 week starting Monday (freq=W-MON)')],
+ ['D', t('Day (freq=D)')],
+ ['4W-MON', t('4 weeks (freq=4W-MON)')],
],
description: t(
`The periodicity over which to pivot time. Users can provide
diff --git a/superset-frontend/plugins/plugin-chart-echarts/package.json b/superset-frontend/plugins/plugin-chart-echarts/package.json
index 02da13b0d12b..3326bad60ddc 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/package.json
+++ b/superset-frontend/plugins/plugin-chart-echarts/package.json
@@ -27,7 +27,7 @@
},
"dependencies": {
"d3-array": "^1.2.0",
- "echarts": "^5.4.0",
+ "echarts": "^5.4.1",
"lodash": "^4.17.15",
"moment": "^2.26.0"
},
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.tsx
index 669926d58ba8..4762a789d002 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.tsx
@@ -220,8 +220,8 @@ class BigNumberVis extends React.PureComponent {
const { data } = eventParams;
if (data) {
const pointerEvent = eventParams.event.event;
- const filters: BinaryQueryObjectFilterClause[] = [];
- filters.push({
+ const drillToDetailFilters: BinaryQueryObjectFilterClause[] = [];
+ drillToDetailFilters.push({
col: this.props.formData?.granularitySqla,
grain: this.props.formData?.timeGrainSqla,
op: '==',
@@ -231,7 +231,7 @@ class BigNumberVis extends React.PureComponent {
this.props.onContextMenu(
pointerEvent.clientX,
pointerEvent.clientY,
- filters,
+ { drillToDetail: drillToDetailFilters },
);
}
}
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx
index b142dd1852ea..81e6d2012820 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx
@@ -21,7 +21,6 @@ import {
ControlPanelConfig,
D3_FORMAT_DOCS,
D3_TIME_FORMAT_OPTIONS,
- formatSelectOptions,
getStandardizedControls,
sections,
temporalColumnMixin,
@@ -179,13 +178,13 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Rolling Function'),
default: 'None',
- choices: formatSelectOptions([
- 'None',
- 'mean',
- 'sum',
- 'std',
- 'cumsum',
- ]),
+ choices: [
+ ['None', t('None')],
+ ['mean', t('mean')],
+ ['sum', t('sum')],
+ ['std', t('std')],
+ ['cumsum', t('cumsum')],
+ ],
description: t(
'Defines a rolling window function to apply, works along ' +
'with the [Periods] text box',
@@ -234,14 +233,14 @@ const config: ControlPanelConfig = {
label: t('Rule'),
default: null,
choices: [
- ['1T', '1 minutely frequency'],
- ['1H', '1 hourly frequency'],
- ['1D', '1 calendar day frequency'],
- ['7D', '7 calendar day frequency'],
- ['1MS', '1 month start frequency'],
- ['1M', '1 month end frequency'],
- ['1AS', '1 year start frequency'],
- ['1A', '1 year end frequency'],
+ ['1T', t('1 minutely frequency')],
+ ['1H', t('1 hourly frequency')],
+ ['1D', t('1 calendar day frequency')],
+ ['7D', t('7 calendar day frequency')],
+ ['1MS', t('1 month start frequency')],
+ ['1M', t('1 month end frequency')],
+ ['1AS', t('1 year start frequency')],
+ ['1A', t('1 year end frequency')],
],
description: t('Pandas resample rule'),
},
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/types.ts
index 90b852b01e4e..f0a17e708b89 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/types.ts
@@ -19,8 +19,8 @@
import { EChartsCoreOption } from 'echarts';
import {
- BinaryQueryObjectFilterClause,
ChartDataResponseResult,
+ ContextMenuFilters,
DataRecordValue,
NumberFormatter,
QueryFormData,
@@ -89,7 +89,7 @@ export type BigNumberVizProps = {
onContextMenu?: (
clientX: number,
clientY: number,
- filters?: BinaryQueryObjectFilterClause[],
+ filters?: ContextMenuFilters,
) => void;
xValueFormatter?: TimeFormatter;
formData?: BigNumberWithTrendlineFormData;
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/EchartsBoxPlot.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/EchartsBoxPlot.tsx
index 135d31317e22..e66035a3c798 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/EchartsBoxPlot.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/EchartsBoxPlot.tsx
@@ -16,60 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-import React, { useCallback } from 'react';
+import React from 'react';
import Echart from '../components/Echart';
import { allEventHandlers } from '../utils/eventHandlers';
import { BoxPlotChartTransformedProps } from './types';
export default function EchartsBoxPlot(props: BoxPlotChartTransformedProps) {
- const {
- height,
- width,
- echartOptions,
- setDataMask,
- labelMap,
- groupby,
- selectedValues,
- formData,
- refs,
- } = props;
- const handleChange = useCallback(
- (values: string[]) => {
- if (!formData.emitFilter) {
- return;
- }
+ const { height, width, echartOptions, selectedValues, refs } = props;
- const groupbyValues = values.map(value => labelMap[value]);
-
- setDataMask({
- extraFormData: {
- filters:
- values.length === 0
- ? []
- : groupby.map((col, idx) => {
- const val = groupbyValues.map(v => v[idx]);
- if (val === null || val === undefined)
- return {
- col,
- op: 'IS NULL',
- };
- return {
- col,
- op: 'IN',
- val: val as (string | number | boolean)[],
- };
- }),
- },
- filterState: {
- value: groupbyValues.length ? groupbyValues : null,
- selectedValues: values.length ? values : null,
- },
- });
- },
- [groupby, labelMap, setDataMask, selectedValues],
- );
-
- const eventHandlers = allEventHandlers(props, handleChange);
+ const eventHandlers = allEventHandlers(props);
return (
{}, onContextMenu } = hooks;
@@ -64,7 +65,6 @@ export default function transformProps(
numberFormat,
dateFormat,
xTicksLayout,
- emitFilter,
legendOrientation = 'top',
xAxisTitle,
yAxisTitle,
@@ -291,7 +291,7 @@ export default function transformProps(
height,
echartOptions,
setDataMask,
- emitFilter,
+ emitCrossFilters,
labelMap,
groupby,
selectedValues,
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/types.ts
index dcbc9da17aa9..6cdc57a26de0 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/types.ts
@@ -30,7 +30,6 @@ export type BoxPlotQueryFormData = QueryFormData & {
numberFormat?: string;
whiskerOptions?: BoxPlotFormDataWhiskerOptions;
xTickLayout?: BoxPlotFormXTickLayout;
- emitFilter: boolean;
} & TitleFormData;
export type BoxPlotFormDataWhiskerOptions =
@@ -48,7 +47,6 @@ export type BoxPlotFormXTickLayout =
// @ts-ignore
export const DEFAULT_FORM_DATA: BoxPlotQueryFormData = {
- emitFilter: false,
...DEFAULT_TITLE_FORM_DATA,
};
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Funnel/EchartsFunnel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Funnel/EchartsFunnel.tsx
index c492500e8e9a..b20fc858fa2c 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Funnel/EchartsFunnel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Funnel/EchartsFunnel.tsx
@@ -16,60 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-import React, { useCallback } from 'react';
+import React from 'react';
import { FunnelChartTransformedProps } from './types';
import Echart from '../components/Echart';
import { allEventHandlers } from '../utils/eventHandlers';
export default function EchartsFunnel(props: FunnelChartTransformedProps) {
- const {
- height,
- width,
- echartOptions,
- setDataMask,
- labelMap,
- groupby,
- selectedValues,
- formData,
- refs,
- } = props;
- const handleChange = useCallback(
- (values: string[]) => {
- if (!formData.emitFilter) {
- return;
- }
+ const { height, width, echartOptions, selectedValues, refs } = props;
- const groupbyValues = values.map(value => labelMap[value]);
-
- setDataMask({
- extraFormData: {
- filters:
- values.length === 0
- ? []
- : groupby.map((col, idx) => {
- const val = groupbyValues.map(v => v[idx]);
- if (val === null || val === undefined)
- return {
- col,
- op: 'IS NULL',
- };
- return {
- col,
- op: 'IN',
- val: val as (string | number | boolean)[],
- };
- }),
- },
- filterState: {
- value: groupbyValues.length ? groupbyValues : null,
- selectedValues: values.length ? values : null,
- },
- });
- },
- [groupby, labelMap, setDataMask, selectedValues],
- );
-
- const eventHandlers = allEventHandlers(props, handleChange);
+ const eventHandlers = allEventHandlers(props);
return (
{
- if (!emitFilter) {
- return;
- }
+ const { height, width, echartOptions, selectedValues, refs } = props;
- const groupbyValues = values.map(value => labelMap[value]);
-
- setDataMask({
- extraFormData: {
- filters:
- values.length === 0
- ? []
- : groupby.map((col, idx) => {
- const val = groupbyValues.map(v => v[idx]);
- if (val === null || val === undefined)
- return {
- col,
- op: 'IS NULL',
- };
- return {
- col,
- op: 'IN',
- val: val as (string | number | boolean)[],
- };
- }),
- },
- filterState: {
- value: groupbyValues.length ? groupbyValues : null,
- selectedValues: values.length ? values : null,
- },
- });
- },
- [groupby, labelMap, setDataMask, selectedValues],
- );
-
- const eventHandlers = allEventHandlers(props, handleChange);
+ const eventHandlers = allEventHandlers(props);
return (
export default function transformProps(
chartProps: EchartsGaugeChartProps,
): GaugeChartTransformedProps {
- const { width, height, formData, queriesData, hooks, filterState, theme } =
- chartProps;
+ const {
+ width,
+ height,
+ formData,
+ queriesData,
+ hooks,
+ filterState,
+ theme,
+ emitCrossFilters,
+ } = chartProps;
const gaugeSeriesOptions = defaultGaugeSeriesOption(theme);
@@ -117,7 +125,6 @@ export default function transformProps(
intervals,
intervalColorIndices,
valueFormatter,
- emitFilter,
sliceId,
}: EchartsGaugeFormData = { ...DEFAULT_GAUGE_FORM_DATA, ...formData };
const refs: Refs = {};
@@ -327,7 +334,7 @@ export default function transformProps(
height,
echartOptions,
setDataMask,
- emitFilter,
+ emitCrossFilters,
labelMap: Object.fromEntries(columnsLabelMap),
groupby,
selectedValues: filterState.selectedValues || [],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Gauge/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Gauge/types.ts
index 9f2c08fd5f0b..02cda2db7f64 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Gauge/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Gauge/types.ts
@@ -52,7 +52,6 @@ export type EchartsGaugeFormData = QueryFormData & {
intervals: string;
intervalColorIndices: string;
valueFormatter: string;
- emitFilter: boolean;
};
export const DEFAULT_FORM_DATA: Partial = {
@@ -76,7 +75,6 @@ export const DEFAULT_FORM_DATA: Partial = {
intervals: '',
intervalColorIndices: '',
valueFormatter: '{value}',
- emitFilter: false,
};
export interface EchartsGaugeChartProps
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Graph/EchartsGraph.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/EchartsGraph.tsx
index 4f83d1bcaf57..47bcb00a3d09 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Graph/EchartsGraph.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/EchartsGraph.tsx
@@ -17,15 +17,23 @@
* under the License.
*/
import React from 'react';
-import { BinaryQueryObjectFilterClause } from '@superset-ui/core';
import { EventHandlers } from '../types';
import Echart from '../components/Echart';
import { GraphChartTransformedProps } from './types';
+type DataRow = {
+ source?: string;
+ target?: string;
+ id?: string;
+ col: string;
+ name: string;
+};
+type Data = DataRow[];
type Event = {
name: string;
event: { stop: () => void; event: PointerEvent };
- data: { source: string; target: string };
+ data: DataRow;
+ dataType: 'node' | 'edge';
};
export default function EchartsGraph({
@@ -34,36 +42,107 @@ export default function EchartsGraph({
echartOptions,
formData,
onContextMenu,
+ setDataMask,
+ filterState,
+ emitCrossFilters,
refs,
}: GraphChartTransformedProps) {
+ const getCrossFilterDataMask = (node: DataRow | undefined) => {
+ if (!node?.name || !node?.col) {
+ return undefined;
+ }
+ const { name, col } = node;
+ const selected = Object.values(
+ filterState?.selectedValues || {},
+ ) as string[];
+ let values: string[];
+ if (selected.includes(name)) {
+ values = selected.filter(v => v !== name);
+ } else {
+ values = [name];
+ }
+ return {
+ dataMask: {
+ extraFormData: {
+ filters: values.length
+ ? [
+ {
+ col,
+ op: 'IN' as const,
+ val: values,
+ },
+ ]
+ : [],
+ },
+ filterState: {
+ value: values.length ? values : null,
+ selectedValues: values.length ? values : null,
+ },
+ },
+ isCurrentValueSelected: selected.includes(name),
+ };
+ };
const eventHandlers: EventHandlers = {
+ click: (e: Event) => {
+ if (!emitCrossFilters || !setDataMask) {
+ return;
+ }
+ e.event.stop();
+ const data = (echartOptions as any).series[0].data as Data;
+ const node = data.find(item => item.id === e.data.id);
+ const dataMask = getCrossFilterDataMask(node)?.dataMask;
+ if (dataMask) {
+ setDataMask(dataMask);
+ }
+ },
contextmenu: (e: Event) => {
- if (onContextMenu) {
- e.event.stop();
- const pointerEvent = e.event.event;
- const data = (echartOptions as any).series[0].data as {
- id: string;
- name: string;
- }[];
+ const handleNodeClick = (data: Data) => {
+ const node = data.find(item => item.id === e.data.id);
+ if (node?.name) {
+ return [
+ {
+ col: node.col,
+ op: '==' as const,
+ val: node.name,
+ formattedVal: node.name,
+ },
+ ];
+ }
+ return undefined;
+ };
+ const handleEdgeClick = (data: Data) => {
const sourceValue = data.find(item => item.id === e.data.source)?.name;
const targetValue = data.find(item => item.id === e.data.target)?.name;
if (sourceValue && targetValue) {
- const filters: BinaryQueryObjectFilterClause[] = [
+ return [
{
col: formData.source,
- op: '==',
+ op: '==' as const,
val: sourceValue,
formattedVal: sourceValue,
},
{
col: formData.target,
- op: '==',
+ op: '==' as const,
val: targetValue,
formattedVal: targetValue,
},
];
- onContextMenu(pointerEvent.clientX, pointerEvent.clientY, filters);
}
+ return undefined;
+ };
+ if (onContextMenu) {
+ e.event.stop();
+ const pointerEvent = e.event.event;
+ const data = (echartOptions as any).series[0].data as Data;
+ const drillToDetailFilters =
+ e.dataType === 'node' ? handleNodeClick(data) : handleEdgeClick(data);
+ onContextMenu(pointerEvent.clientX, pointerEvent.clientY, {
+ drillToDetail: drillToDetailFilters,
+ crossFilter: getCrossFilterDataMask(
+ data.find(item => item.id === e.data.id),
+ ),
+ });
}
},
};
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Graph/images/example.jpg b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/images/example.jpg
new file mode 100644
index 000000000000..53aa9cfafc57
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/images/example.jpg differ
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts
index 7e3c26a92508..b3bc239d2ba8 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts
@@ -16,10 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { t, ChartMetadata, ChartPlugin, Behavior } from '@superset-ui/core';
+import { Behavior, ChartMetadata, ChartPlugin, t } from '@superset-ui/core';
import controlPanel from './controlPanel';
import transformProps from './transformProps';
import thumbnail from './images/thumbnail.png';
+import example from './images/example.jpg';
import buildQuery from './buildQuery';
export default class EchartsGraphChartPlugin extends ChartPlugin {
@@ -34,6 +35,7 @@ export default class EchartsGraphChartPlugin extends ChartPlugin {
description: t(
'Displays connections between entities in a graph structure. Useful for mapping relationships and showing which nodes are important in a network. Graph charts can be configured to be force-directed or circulate. If your data has a geospatial component, try the deck.gl Arc chart.',
),
+ exampleGallery: [{ url: example }],
name: t('Graph Chart'),
tags: [
t('Aesthetic'),
@@ -46,7 +48,7 @@ export default class EchartsGraphChartPlugin extends ChartPlugin {
t('Transformable'),
],
thumbnail,
- behaviors: [Behavior.DRILL_TO_DETAIL],
+ behaviors: [Behavior.INTERACTIVE_CHART, Behavior.DRILL_TO_DETAIL],
}),
transformProps,
});
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Graph/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/transformProps.ts
index 593b02907dfb..a2c01b483957 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Graph/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/transformProps.ts
@@ -162,8 +162,16 @@ function getCategoryName(columnName: string, name?: DataRecordValue) {
export default function transformProps(
chartProps: EchartsGraphChartProps,
): GraphChartTransformedProps {
- const { width, height, formData, queriesData, hooks, inContextMenu } =
- chartProps;
+ const {
+ width,
+ height,
+ formData,
+ queriesData,
+ hooks,
+ inContextMenu,
+ filterState,
+ emitCrossFilters,
+ } = chartProps;
const data: DataRecord[] = queriesData[0].data || [];
const {
@@ -204,12 +212,13 @@ export default function transformProps(
* Get the node id of an existing node,
* or create a new node if it doesn't exist.
*/
- function getOrCreateNode(name: string, category?: string) {
+ function getOrCreateNode(name: string, col: string, category?: string) {
if (!(name in nodes)) {
nodes[name] = echartNodes.length;
echartNodes.push({
id: String(nodes[name]),
name,
+ col,
value: 0,
category,
select: DEFAULT_GRAPH_SERIES_OPTION.select,
@@ -244,8 +253,8 @@ export default function transformProps(
const targetCategoryName = targetCategory
? getCategoryName(targetCategory, link[targetCategory])
: undefined;
- const sourceNode = getOrCreateNode(sourceName, sourceCategoryName);
- const targetNode = getOrCreateNode(targetName, targetCategoryName);
+ const sourceNode = getOrCreateNode(sourceName, source, sourceCategoryName);
+ const targetNode = getOrCreateNode(targetName, target, targetCategoryName);
sourceNode.value += value;
targetNode.value += value;
@@ -321,7 +330,7 @@ export default function transformProps(
series,
};
- const { onContextMenu } = hooks;
+ const { onContextMenu, setDataMask } = hooks;
return {
width,
@@ -329,6 +338,9 @@ export default function transformProps(
formData,
echartOptions,
onContextMenu,
+ setDataMask,
+ filterState,
refs,
+ emitCrossFilters,
};
}
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Graph/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/types.ts
index 95dc386eb238..4a45f79c4157 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Graph/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Graph/types.ts
@@ -55,6 +55,7 @@ export type EchartsGraphFormData = QueryFormData &
export type EChartGraphNode = Omit & {
value: number;
+ col: string;
tooltip?: Pick;
};
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/EchartsMixedTimeseries.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/EchartsMixedTimeseries.tsx
index 1d1cd6547752..0018c0e876e5 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/EchartsMixedTimeseries.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/EchartsMixedTimeseries.tsx
@@ -39,6 +39,7 @@ export default function EchartsMixedTimeseries({
groupbyB,
selectedValues,
formData,
+ emitCrossFilters,
seriesBreakdown,
onContextMenu,
xValueFormatter,
@@ -50,13 +51,14 @@ export default function EchartsMixedTimeseries({
[seriesBreakdown],
);
- const handleChange = useCallback(
- (values: string[], seriesIndex: number) => {
- const emitFilter = isFirstQuery(seriesIndex)
- ? formData.emitFilter
- : formData.emitFilterB;
- if (!emitFilter) {
- return;
+ const getCrossFilterDataMask = useCallback(
+ (seriesName, seriesIndex) => {
+ const selected: string[] = Object.values(selectedValues || {});
+ let values: string[];
+ if (selected.includes(seriesName)) {
+ values = selected.filter(v => v !== seriesName);
+ } else {
+ values = [seriesName];
}
const currentGroupBy = isFirstQuery(seriesIndex) ? groupby : groupbyB;
@@ -65,51 +67,57 @@ export default function EchartsMixedTimeseries({
.map(value => currentLabelMap?.[value])
.filter(value => !!value);
- setDataMask({
- extraFormData: {
- // @ts-ignore
- filters:
- values.length === 0
- ? []
- : [
- ...currentGroupBy.map((col, idx) => {
- const val: DataRecordValue[] = groupbyValues.map(
- v => v[idx],
- );
- if (val === null || val === undefined)
+ return {
+ dataMask: {
+ extraFormData: {
+ // @ts-ignore
+ filters:
+ values.length === 0
+ ? []
+ : [
+ ...currentGroupBy.map((col, idx) => {
+ const val: DataRecordValue[] = groupbyValues.map(
+ v => v[idx],
+ );
+ if (val === null || val === undefined)
+ return {
+ col,
+ op: 'IS NULL' as const,
+ };
return {
col,
- op: 'IS NULL',
+ op: 'IN' as const,
+ val: val as (string | number | boolean)[],
};
- return {
- col,
- op: 'IN',
- val: val as (string | number | boolean)[],
- };
- }),
- ],
- },
- filterState: {
- value: !groupbyValues.length ? null : groupbyValues,
- selectedValues: values.length ? values : null,
+ }),
+ ],
+ },
+ filterState: {
+ value: !groupbyValues.length ? null : groupbyValues,
+ selectedValues: values.length ? values : null,
+ },
},
- });
+ isCurrentValueSelected: selected.includes(seriesName),
+ };
},
- [groupby, groupbyB, labelMap, labelMapB, setDataMask, selectedValues],
+ [groupby, groupbyB, isFirstQuery, labelMap, labelMapB, selectedValues],
+ );
+
+ const handleChange = useCallback(
+ (seriesName: string, seriesIndex: number) => {
+ if (!emitCrossFilters) {
+ return;
+ }
+
+ setDataMask(getCrossFilterDataMask(seriesName, seriesIndex).dataMask);
+ },
+ [emitCrossFilters, setDataMask, getCrossFilterDataMask],
);
const eventHandlers: EventHandlers = {
click: props => {
const { seriesName, seriesIndex } = props;
- const values: string[] = Object.values(selectedValues || {});
- if (values.includes(seriesName)) {
- handleChange(
- values.filter(v => v !== seriesName),
- seriesIndex,
- );
- } else {
- handleChange([seriesName], seriesIndex);
- }
+ handleChange(seriesName, seriesIndex);
},
mouseout: () => {
currentSeries.name = '';
@@ -120,18 +128,18 @@ export default function EchartsMixedTimeseries({
contextmenu: eventParams => {
if (onContextMenu) {
eventParams.event.stop();
- const { data, seriesIndex } = eventParams;
+ const { data, seriesName, seriesIndex } = eventParams;
+ const pointerEvent = eventParams.event.event;
+ const drillToDetailFilters: BinaryQueryObjectFilterClause[] = [];
if (data) {
- const pointerEvent = eventParams.event.event;
const values = [
...(eventParams.name ? [eventParams.name] : []),
...(isFirstQuery(seriesIndex) ? labelMap : labelMapB)[
eventParams.seriesName
],
];
- const filters: BinaryQueryObjectFilterClause[] = [];
if (xAxis.type === AxisType.time) {
- filters.push({
+ drillToDetailFilters.push({
col:
xAxis.label === DTTM_ALIAS
? formData.granularitySqla
@@ -148,15 +156,18 @@ export default function EchartsMixedTimeseries({
? formData.groupby
: formData.groupbyB),
].forEach((dimension, i) =>
- filters.push({
+ drillToDetailFilters.push({
col: dimension,
op: '==',
val: values[i],
formattedVal: String(values[i]),
}),
);
- onContextMenu(pointerEvent.clientX, pointerEvent.clientY, filters);
}
+ onContextMenu(pointerEvent.clientX, pointerEvent.clientY, {
+ drillToDetail: drillToDetailFilters,
+ crossFilter: getCrossFilterDataMask(seriesName, seriesIndex),
+ });
}
},
};
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts
index 5b74e0aeb161..2173dd99085b 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts
@@ -68,10 +68,7 @@ export default function buildQuery(formData: QueryFormData) {
queryObject,
)
? timeComparePivotOperator(fd, queryObject)
- : pivotOperator(fd, {
- ...queryObject,
- columns: fd.groupby,
- });
+ : pivotOperator(fd, queryObject);
const tmpQueryObject = {
...queryObject,
@@ -81,10 +78,7 @@ export default function buildQuery(formData: QueryFormData) {
rollingWindowOperator(fd, queryObject),
timeCompareOperator(fd, queryObject),
resampleOperator(fd, queryObject),
- renameOperator(fd, {
- ...queryObject,
- columns: fd.groupby,
- }),
+ renameOperator(fd, queryObject),
flattenOperator(fd, queryObject),
],
} as QueryObject;
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx
index 619290a69626..c1a300778588 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx
@@ -24,7 +24,6 @@ import {
ControlPanelSectionConfig,
ControlSetRow,
CustomControlItem,
- emitFilterControl,
getStandardizedControls,
sections,
sharedControls,
@@ -79,14 +78,6 @@ function createQuerySection(
config: sharedControls.adhoc_filters,
},
],
- emitFilterControl.length > 0
- ? [
- {
- ...emitFilterControl[0],
- name: `emit_filter${controlSuffix}`,
- },
- ]
- : [],
[
{
name: `limit${controlSuffix}`,
@@ -147,13 +138,13 @@ function createCustomizeSection(
renderTrigger: true,
default: seriesType,
choices: [
- [EchartsTimeseriesSeriesType.Line, 'Line'],
- [EchartsTimeseriesSeriesType.Scatter, 'Scatter'],
- [EchartsTimeseriesSeriesType.Smooth, 'Smooth Line'],
- [EchartsTimeseriesSeriesType.Bar, 'Bar'],
- [EchartsTimeseriesSeriesType.Start, 'Step - start'],
- [EchartsTimeseriesSeriesType.Middle, 'Step - middle'],
- [EchartsTimeseriesSeriesType.End, 'Step - end'],
+ [EchartsTimeseriesSeriesType.Line, t('Line')],
+ [EchartsTimeseriesSeriesType.Scatter, t('Scatter')],
+ [EchartsTimeseriesSeriesType.Smooth, t('Smooth Line')],
+ [EchartsTimeseriesSeriesType.Bar, t('Bar')],
+ [EchartsTimeseriesSeriesType.Start, t('Step - start')],
+ [EchartsTimeseriesSeriesType.Middle, t('Step - middle')],
+ [EchartsTimeseriesSeriesType.End, t('Step - end')],
],
description: t('Series chart type (line, bar etc)'),
},
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/images/example.jpg b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/images/example.jpg
new file mode 100644
index 000000000000..8a7edb3200fb
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/images/example.jpg differ
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/index.ts
index 05bc71604d4e..eb1bef3c9b71 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/index.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/index.ts
@@ -28,6 +28,7 @@ import buildQuery from './buildQuery';
import controlPanel from './controlPanel';
import transformProps from './transformProps';
import thumbnail from './images/thumbnail.png';
+import example from './images/example.jpg';
import {
EchartsMixedTimeseriesFormData,
EchartsMixedTimeseriesProps,
@@ -69,6 +70,7 @@ export default class EchartsTimeseriesChartPlugin extends ChartPlugin<
AnnotationType.Interval,
AnnotationType.Timeseries,
],
+ exampleGallery: [{ url: example }],
name: hasGenericChartAxes ? t('Mixed Chart') : t('Mixed Time-Series'),
thumbnail,
tags: [
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts
index a39ca1d4d57e..98367daf9a84 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts
@@ -95,6 +95,7 @@ export default function transformProps(
datasource,
theme,
inContextMenu,
+ emitCrossFilters,
} = chartProps;
const { verboseMap = {} } = datasource;
const { label_map: labelMap } =
@@ -144,8 +145,6 @@ export default function transformProps(
xAxisLabelRotation,
groupby,
groupbyB,
- emitFilter,
- emitFilterB,
xAxis: xAxisOrig,
xAxisTitle,
yAxisTitle,
@@ -504,8 +503,7 @@ export default function transformProps(
height,
echartOptions,
setDataMask,
- emitFilter,
- emitFilterB,
+ emitCrossFilters,
labelMap,
labelMapB,
groupby,
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/types.ts
index a39e556cac6f..3ec9b2a4b6d3 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/types.ts
@@ -86,7 +86,6 @@ export type EchartsMixedTimeseriesFormData = QueryFormData & {
yAxisIndexB?: number;
groupby: QueryFormColumn[];
groupbyB: QueryFormColumn[];
- emitFilter: boolean;
} & LegendFormData &
TitleFormData;
@@ -143,7 +142,6 @@ export type EchartsMixedTimeseriesChartTransformedProps =
BaseTransformedProps &
ContextMenuTransformedProps &
CrossFilterTransformedProps & {
- emitFilterB: boolean;
groupbyB: QueryFormColumn[];
labelMapB: Record;
seriesBreakdown: number;
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Pie/EchartsPie.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Pie/EchartsPie.tsx
index 6de4c8423dc4..3cd697248c6e 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Pie/EchartsPie.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Pie/EchartsPie.tsx
@@ -16,60 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-import React, { useCallback } from 'react';
+import React from 'react';
import { PieChartTransformedProps } from './types';
import Echart from '../components/Echart';
import { allEventHandlers } from '../utils/eventHandlers';
export default function EchartsPie(props: PieChartTransformedProps) {
- const {
- height,
- width,
- echartOptions,
- setDataMask,
- labelMap,
- groupby,
- selectedValues,
- formData,
- refs,
- } = props;
- const handleChange = useCallback(
- (values: string[]) => {
- if (!formData.emitFilter) {
- return;
- }
+ const { height, width, echartOptions, selectedValues, refs } = props;
- const groupbyValues = values.map(value => labelMap[value]);
-
- setDataMask({
- extraFormData: {
- filters:
- values.length === 0
- ? []
- : groupby.map((col, idx) => {
- const val = groupbyValues.map(v => v[idx]);
- if (val === null || val === undefined)
- return {
- col,
- op: 'IS NULL',
- };
- return {
- col,
- op: 'IN',
- val: val as (string | number | boolean)[],
- };
- }),
- },
- filterState: {
- value: groupbyValues.length ? groupbyValues : null,
- selectedValues: values.length ? values : null,
- },
- });
- },
- [groupby, labelMap, setDataMask, selectedValues],
- );
-
- const eventHandlers = allEventHandlers(props, handleChange);
+ const eventHandlers = allEventHandlers(props);
return (
{
- if (!formData.emitFilter) {
- return;
- }
-
- const groupbyValues = values.map(value => labelMap[value]);
-
- setDataMask({
- extraFormData: {
- filters:
- values.length === 0
- ? []
- : groupby.map((col, idx) => {
- const val = groupbyValues.map(v => v[idx]);
- if (val === null || val === undefined)
- return {
- col,
- op: 'IS NULL',
- };
- return {
- col,
- op: 'IN',
- val: val as (string | number | boolean)[],
- };
- }),
- },
- filterState: {
- value: groupbyValues.length ? groupbyValues : null,
- selectedValues: values.length ? values : null,
- },
- });
- },
- [groupby, labelMap, setDataMask, selectedValues],
- );
-
- const eventHandlers = allEventHandlers(props, handleChange);
+ const { height, width, echartOptions, selectedValues, refs } = props;
+ const eventHandlers = allEventHandlers(props);
return (
{
let { metrics, orderby = [] } = baseQueryObject;
metrics = metrics || [];
- // orverride orderby with timeseries metric
+ // override orderby with timeseries metric
if (sortByMetric) {
orderby = [[sortByMetric, false]];
} else if (metrics?.length > 0) {
// default to ordering by first metric in descending order
- // when no "sort by" metric is set (regargless if "SORT DESC" is set to true)
+ // when no "sort by" metric is set (regardless if "SORT DESC" is set to true)
orderby = [[metrics[0], false]];
}
return [
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx
index 4d03d07373d9..61ac18209a49 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx
@@ -27,11 +27,11 @@ import {
import {
ControlPanelConfig,
D3_FORMAT_DOCS,
+ D3_NUMBER_FORMAT_DESCRIPTION_VALUES_TEXT,
D3_FORMAT_OPTIONS,
D3_TIME_FORMAT_OPTIONS,
sections,
sharedControls,
- emitFilterControl,
ControlFormItemSpec,
getStandardizedControls,
} from '@superset-ui/chart-controls';
@@ -51,7 +51,7 @@ const radarMetricMaxValue: { name: string; config: ControlFormItemSpec } = {
'The maximum value of metrics. It is an optional configuration',
),
width: 120,
- placeholder: 'auto',
+ placeholder: t('auto'),
debounceDelay: 400,
validators: [validateNumber],
},
@@ -68,7 +68,6 @@ const config: ControlPanelConfig = {
['metrics'],
['timeseries_limit_metric'],
['adhoc_filters'],
- emitFilterControl,
[
{
name: 'row_limit',
@@ -108,8 +107,8 @@ const config: ControlPanelConfig = {
default: labelType,
renderTrigger: true,
choices: [
- ['value', 'Value'],
- ['key_value', 'Category and Value'],
+ ['value', t('Value')],
+ ['key_value', t('Category and Value')],
],
description: t('What should be shown on the label?'),
},
@@ -139,9 +138,7 @@ const config: ControlPanelConfig = {
renderTrigger: true,
default: numberFormat,
choices: D3_FORMAT_OPTIONS,
- description: `${t(
- 'D3 format syntax: https://github.com/d3/d3-format. ',
- )} ${t('Only applies when "Label Type" is set to show values.')}`,
+ description: `${D3_FORMAT_DOCS} ${D3_NUMBER_FORMAT_DESCRIPTION_VALUES_TEXT}`,
},
},
],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/images/example1.jpg b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/images/example1.jpg
new file mode 100644
index 000000000000..056ada15086c
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/images/example1.jpg differ
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/images/example2.jpg b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/images/example2.jpg
new file mode 100644
index 000000000000..8dd0854409c6
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/images/example2.jpg differ
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts
index d810a0a3214c..69f1ee8dac5b 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts
@@ -2,7 +2,7 @@
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
- * regardin
+ * regarding
* g copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
@@ -22,6 +22,8 @@ import buildQuery from './buildQuery';
import controlPanel from './controlPanel';
import transformProps from './transformProps';
import thumbnail from './images/thumbnail.png';
+import example1 from './images/example1.jpg';
+import example2 from './images/example2.jpg';
import { EchartsRadarChartProps, EchartsRadarFormData } from './types';
export default class EchartsRadarChartPlugin extends ChartPlugin<
@@ -50,6 +52,7 @@ export default class EchartsRadarChartPlugin extends ChartPlugin<
description: t(
'Visualize a parallel set of metrics across multiple groups. Each group is visualized using its own line of points and each metric is represented as an edge in the chart.',
),
+ exampleGallery: [{ url: example1 }, { url: example2 }],
name: t('Radar Chart'),
tags: [
t('Business'),
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/transformProps.ts
index 04c928036ca6..f185859f4eee 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/transformProps.ts
@@ -80,6 +80,7 @@ export default function transformProps(
width,
theme,
inContextMenu,
+ emitCrossFilters,
} = chartProps;
const refs: Refs = {};
const { data = [] } = queriesData[0];
@@ -101,7 +102,6 @@ export default function transformProps(
isCircle,
columnConfig,
sliceId,
- emitFilter,
}: EchartsRadarFormData = {
...DEFAULT_LEGEND_FORM_DATA,
...DEFAULT_RADAR_FORM_DATA,
@@ -252,7 +252,7 @@ export default function transformProps(
width,
height,
echartOptions,
- emitFilter,
+ emitCrossFilters,
setDataMask,
labelMap: Object.fromEntries(columnsLabelMap),
groupby,
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/types.ts
index 97e3c1a32a85..ca7cdbd2c2db 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Radar/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Radar/types.ts
@@ -50,7 +50,6 @@ export type EchartsRadarFormData = QueryFormData &
isCircle: boolean;
numberFormat: string;
dateFormat: string;
- emitFilter: boolean;
};
export enum EchartsRadarLabelType {
@@ -73,7 +72,6 @@ export const DEFAULT_FORM_DATA: EchartsRadarFormData = {
legendType: LegendType.Scroll,
numberFormat: 'SMART_NUMBER',
showLabels: true,
- emitFilter: false,
dateFormat: 'smart_date',
isCircle: false,
};
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/EchartsSunburst.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/EchartsSunburst.tsx
new file mode 100644
index 000000000000..5552f7d0eede
--- /dev/null
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/EchartsSunburst.tsx
@@ -0,0 +1,142 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 React, { useCallback } from 'react';
+import { BinaryQueryObjectFilterClause } from '@superset-ui/core';
+import { SunburstTransformedProps } from './types';
+import Echart from '../components/Echart';
+import { EventHandlers, TreePathInfo } from '../types';
+
+export const extractTreePathInfo = (treePathInfo: TreePathInfo[] | undefined) =>
+ (treePathInfo ?? [])
+ .map(pathInfo => pathInfo?.name || '')
+ .filter(path => path !== '');
+
+export default function EchartsSunburst(props: SunburstTransformedProps) {
+ const {
+ height,
+ width,
+ echartOptions,
+ setDataMask,
+ labelMap,
+ selectedValues,
+ formData,
+ onContextMenu,
+ refs,
+ emitCrossFilters,
+ } = props;
+
+ const { columns } = formData;
+
+ const getCrossFilterDataMask = useCallback(
+ (treePathInfo: TreePathInfo[]) => {
+ const treePath = extractTreePathInfo(treePathInfo);
+ const name = treePath.join(',');
+ const selected = Object.values(selectedValues);
+ let values: string[];
+ if (selected.includes(name)) {
+ values = selected.filter(v => v !== name);
+ } else {
+ values = [name];
+ }
+ const labels = values.map(value => labelMap[value]);
+
+ return {
+ dataMask: {
+ extraFormData: {
+ filters:
+ values.length === 0 || !columns
+ ? []
+ : columns.map((col, idx) => {
+ const val = labels.map(v => v[idx]);
+ if (val === null || val === undefined)
+ return {
+ col,
+ op: 'IS NULL' as const,
+ };
+ return {
+ col,
+ op: 'IN' as const,
+ val: val as (string | number | boolean)[],
+ };
+ }),
+ },
+ filterState: {
+ value: labels.length ? labels : null,
+ selectedValues: values.length ? values : null,
+ },
+ },
+ isCurrentValueSelected: selected.includes(name),
+ };
+ },
+ [columns, labelMap, selectedValues],
+ );
+
+ const handleChange = useCallback(
+ (treePathInfo: TreePathInfo[]) => {
+ if (!emitCrossFilters) {
+ return;
+ }
+
+ setDataMask(getCrossFilterDataMask(treePathInfo).dataMask);
+ },
+ [emitCrossFilters, setDataMask, getCrossFilterDataMask],
+ );
+
+ const eventHandlers: EventHandlers = {
+ click: props => {
+ const { treePathInfo } = props;
+ handleChange(treePathInfo);
+ },
+ contextmenu: eventParams => {
+ if (onContextMenu) {
+ eventParams.event.stop();
+ const { data, treePathInfo } = eventParams;
+ const { records } = data;
+ const treePath = extractTreePathInfo(eventParams.treePathInfo);
+ const pointerEvent = eventParams.event.event;
+ const drillToDetailFilters: BinaryQueryObjectFilterClause[] = [];
+ if (columns?.length) {
+ treePath.forEach((path, i) =>
+ drillToDetailFilters.push({
+ col: columns[i],
+ op: '==',
+ val: records[i],
+ formattedVal: path,
+ }),
+ );
+ }
+ onContextMenu(pointerEvent.clientX, pointerEvent.clientY, {
+ drillToDetail: drillToDetailFilters,
+ crossFilter: getCrossFilterDataMask(treePathInfo),
+ });
+ }
+ },
+ };
+
+ return (
+
+ );
+}
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/buildQuery.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/buildQuery.ts
new file mode 100644
index 000000000000..8b47fb5e725c
--- /dev/null
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/buildQuery.ts
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 { buildQueryContext, QueryFormData } from '@superset-ui/core';
+
+export default function buildQuery(formData: QueryFormData) {
+ const { metric, sort_by_metric } = formData;
+ return buildQueryContext(formData, baseQueryObject => [
+ {
+ ...baseQueryObject,
+ ...(sort_by_metric && { orderby: [[metric, false]] }),
+ },
+ ]);
+}
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx
new file mode 100644
index 000000000000..1187fee0a8d3
--- /dev/null
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx
@@ -0,0 +1,205 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 React from 'react';
+import { t } from '@superset-ui/core';
+import {
+ ControlPanelConfig,
+ ControlPanelsContainerProps,
+ D3_FORMAT_DOCS,
+ D3_NUMBER_FORMAT_DESCRIPTION_VALUES_TEXT,
+ D3_FORMAT_OPTIONS,
+ D3_TIME_FORMAT_OPTIONS,
+ getStandardizedControls,
+ sections,
+} from '@superset-ui/chart-controls';
+import { DEFAULT_FORM_DATA } from './types';
+
+const { labelType, numberFormat, showLabels } = DEFAULT_FORM_DATA;
+
+const config: ControlPanelConfig = {
+ controlPanelSections: [
+ sections.legacyRegularTime,
+ {
+ label: t('Query'),
+ expanded: true,
+ controlSetRows: [
+ ['columns'],
+ ['metric'],
+ ['secondary_metric'],
+ ['adhoc_filters'],
+ ['row_limit'],
+ [
+ {
+ name: 'sort_by_metric',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Sort by metric'),
+ description: t(
+ 'Whether to sort results by the selected metric in descending order.',
+ ),
+ },
+ },
+ ],
+ ],
+ },
+ {
+ label: t('Chart Options'),
+ expanded: true,
+ controlSetRows: [
+ ['color_scheme'],
+ ['linear_color_scheme'],
+ [{t('Labels')}],
+ [
+ {
+ name: 'show_labels',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Show Labels'),
+ renderTrigger: true,
+ default: showLabels,
+ description: t('Whether to display the labels.'),
+ },
+ },
+ ],
+ [
+ {
+ name: 'show_labels_threshold',
+ config: {
+ type: 'TextControl',
+ label: t('Percentage threshold'),
+ renderTrigger: true,
+ isFloat: true,
+ default: 5,
+ description: t(
+ 'Minimum threshold in percentage points for showing labels.',
+ ),
+ },
+ },
+ ],
+ [
+ {
+ name: 'show_total',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Show Total'),
+ default: false,
+ renderTrigger: true,
+ description: t('Whether to display the aggregate count'),
+ },
+ },
+ ],
+ [
+ {
+ name: 'label_type',
+ config: {
+ type: 'SelectControl',
+ label: t('Label Type'),
+ default: labelType,
+ renderTrigger: true,
+ choices: [
+ ['key', t('Category Name')],
+ ['value', t('Value')],
+ ['key_value', t('Category and Value')],
+ ],
+ description: t('What should be shown on the label?'),
+ },
+ },
+ ],
+ [
+ {
+ name: 'number_format',
+ config: {
+ type: 'SelectControl',
+ freeForm: true,
+ label: t('Number format'),
+ renderTrigger: true,
+ default: numberFormat,
+ choices: D3_FORMAT_OPTIONS,
+ description: `${D3_FORMAT_DOCS} ${D3_NUMBER_FORMAT_DESCRIPTION_VALUES_TEXT}`,
+ },
+ },
+ ],
+ [
+ {
+ name: 'date_format',
+ config: {
+ type: 'SelectControl',
+ freeForm: true,
+ label: t('Date format'),
+ renderTrigger: true,
+ choices: D3_TIME_FORMAT_OPTIONS,
+ default: 'smart_date',
+ description: D3_FORMAT_DOCS,
+ },
+ },
+ ],
+ ],
+ },
+ ],
+ controlOverrides: {
+ metric: {
+ label: t('Primary Metric'),
+ description: t(
+ 'The primary metric is used to define the arc segment sizes',
+ ),
+ },
+ secondary_metric: {
+ label: t('Secondary Metric'),
+ default: null,
+ description: t(
+ '[optional] this secondary metric is used to ' +
+ 'define the color as a ratio against the primary metric. ' +
+ 'When omitted, the color is categorical and based on labels',
+ ),
+ },
+ color_scheme: {
+ description: t(
+ 'When only a primary metric is provided, a categorical color scale is used.',
+ ),
+ visibility: ({ controls }: ControlPanelsContainerProps) =>
+ Boolean(
+ !controls?.secondary_metric?.value ||
+ controls?.secondary_metric?.value === controls?.metric.value,
+ ),
+ },
+ linear_color_scheme: {
+ description: t(
+ 'When a secondary metric is provided, a linear color scale is used.',
+ ),
+ visibility: ({ controls }: ControlPanelsContainerProps) =>
+ Boolean(
+ controls?.secondary_metric?.value &&
+ controls?.secondary_metric?.value !== controls?.metric.value,
+ ),
+ },
+ columns: {
+ label: t('Hierarchy'),
+ description: t(`Sets the hierarchy levels of the chart. Each level is
+ represented by one ring with the innermost circle as the top of the hierarchy.`),
+ },
+ },
+ formDataOverrides: formData => ({
+ ...formData,
+ groupby: getStandardizedControls().popAllColumns(),
+ metric: getStandardizedControls().shiftMetric(),
+ secondary_metric: getStandardizedControls().shiftMetric(),
+ }),
+};
+
+export default config;
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/images/Sunburst1.png b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/images/Sunburst1.png
new file mode 100644
index 000000000000..87c140e7c3ed
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/images/Sunburst1.png differ
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/images/Sunburst2.png b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/images/Sunburst2.png
new file mode 100644
index 000000000000..677b2a196665
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/images/Sunburst2.png differ
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/images/thumbnail.png b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/images/thumbnail.png
new file mode 100644
index 000000000000..87c140e7c3ed
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/images/thumbnail.png differ
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts
new file mode 100644
index 000000000000..5ca8d5a8fc46
--- /dev/null
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 { t, ChartMetadata, ChartPlugin, Behavior } from '@superset-ui/core';
+import transformProps from './transformProps';
+import thumbnail from './images/thumbnail.png';
+import controlPanel from './controlPanel';
+import buildQuery from './buildQuery';
+import example1 from './images/Sunburst1.png';
+import example2 from './images/Sunburst2.png';
+
+export default class EchartsSunburstChartPlugin extends ChartPlugin {
+ constructor() {
+ super({
+ buildQuery,
+ controlPanel,
+ loadChart: () => import('./EchartsSunburst'),
+ metadata: new ChartMetadata({
+ behaviors: [Behavior.INTERACTIVE_CHART, Behavior.DRILL_TO_DETAIL],
+ category: t('Part of a Whole'),
+ credits: ['https://echarts.apache.org'],
+ description: t(
+ 'Uses circles to visualize the flow of data through different stages of a system. Hover over individual paths in the visualization to understand the stages a value took. Useful for multi-stage, multi-group visualizing funnels and pipelines.',
+ ),
+ exampleGallery: [{ url: example1 }, { url: example2 }],
+ name: t('Sunburst Chart v2'),
+ tags: [
+ t('ECharts'),
+ t('Aesthetic'),
+ t('Multi-Levels'),
+ t('Proportional'),
+ ],
+ thumbnail,
+ }),
+ transformProps,
+ });
+ }
+}
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/transformProps.ts
new file mode 100644
index 000000000000..51e89f8c6c73
--- /dev/null
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/transformProps.ts
@@ -0,0 +1,381 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 {
+ CategoricalColorNamespace,
+ DataRecordValue,
+ getColumnLabel,
+ getMetricLabel,
+ getNumberFormatter,
+ getSequentialSchemeRegistry,
+ getTimeFormatter,
+ NumberFormats,
+ NumberFormatter,
+ SupersetTheme,
+ t,
+} from '@superset-ui/core';
+import { EChartsCoreOption } from 'echarts';
+import { CallbackDataParams } from 'echarts/types/src/util/types';
+import { OpacityEnum } from '../constants';
+import { defaultGrid } from '../defaults';
+import { Refs } from '../types';
+import { formatSeriesName, getColtypesMapping } from '../utils/series';
+import { treeBuilder, TreeNode } from '../utils/treeBuilder';
+import {
+ EchartsSunburstChartProps,
+ EchartsSunburstLabelType,
+ NodeItemOption,
+ SunburstTransformedProps,
+} from './types';
+import { getDefaultTooltip } from '../utils/tooltip';
+
+export function getLinearDomain(
+ treeData: TreeNode[],
+ callback: (treeNode: TreeNode) => number,
+) {
+ let min = 0;
+ let max = 0;
+ let temp = null;
+ function traverse(tree: TreeNode[]) {
+ tree.forEach(treeNode => {
+ if (treeNode.children?.length) {
+ traverse(treeNode.children);
+ }
+ temp = callback(treeNode);
+ if (temp !== null) {
+ if (min > temp) min = temp;
+ if (max < temp) max = temp;
+ }
+ });
+ }
+ traverse(treeData);
+ return [min, max];
+}
+
+export function formatLabel({
+ params,
+ labelType,
+ numberFormatter,
+}: {
+ params: CallbackDataParams;
+ labelType: EchartsSunburstLabelType;
+ numberFormatter: NumberFormatter;
+}): string {
+ const { name = '', value } = params;
+ const formattedValue = numberFormatter(value as number);
+
+ switch (labelType) {
+ case EchartsSunburstLabelType.Key:
+ return name;
+ case EchartsSunburstLabelType.Value:
+ return formattedValue;
+ case EchartsSunburstLabelType.KeyValue:
+ return `${name}: ${formattedValue}`;
+ default:
+ return name;
+ }
+}
+
+export function formatTooltip({
+ params,
+ numberFormatter,
+ colorByCategory,
+ totalValue,
+ metricLabel,
+ secondaryMetricLabel,
+ theme,
+}: {
+ params: CallbackDataParams & {
+ treePathInfo: {
+ name: string;
+ dataIndex: number;
+ value: number;
+ }[];
+ };
+ numberFormatter: NumberFormatter;
+ colorByCategory: boolean;
+ totalValue: number;
+ metricLabel: string;
+ secondaryMetricLabel?: string;
+ theme: SupersetTheme;
+}): string {
+ const { data, treePathInfo = [] } = params;
+ const node = data as TreeNode;
+ const formattedValue = numberFormatter(node.value);
+ const formattedSecondaryValue = numberFormatter(node.secondaryValue);
+
+ const percentFormatter = getNumberFormatter(NumberFormats.PERCENT_2_POINT);
+ const compareValuePercentage = percentFormatter(
+ node.secondaryValue / node.value,
+ );
+ const absolutePercentage = percentFormatter(node.value / totalValue);
+ const parentNode =
+ treePathInfo.length > 2 ? treePathInfo[treePathInfo.length - 2] : undefined;
+
+ const result = [
+ ``,
+ `
+ ${node.name}
+ `,
+ `
+ ${absolutePercentage} of total
+ `,
+ ];
+ if (parentNode) {
+ const conditionalPercentage = percentFormatter(
+ node.value / parentNode.value,
+ );
+ result.push(`
+
+ ${conditionalPercentage} of ${parentNode.name}
+ `);
+ }
+ result.push(
+ `
+ ${metricLabel}: ${formattedValue}${
+ colorByCategory
+ ? ''
+ : `, ${secondaryMetricLabel}: ${formattedSecondaryValue}`
+ }
+ `,
+ colorByCategory
+ ? ''
+ : `${metricLabel}/${secondaryMetricLabel}: ${compareValuePercentage}`,
+ );
+ result.push('');
+ return result.join('\n');
+}
+
+export default function transformProps(
+ chartProps: EchartsSunburstChartProps,
+): SunburstTransformedProps {
+ const {
+ formData,
+ height,
+ hooks,
+ filterState,
+ queriesData,
+ width,
+ theme,
+ inContextMenu,
+ emitCrossFilters,
+ } = chartProps;
+ const { data = [] } = queriesData[0];
+ const coltypeMapping = getColtypesMapping(queriesData[0]);
+ const {
+ groupby = [],
+ columns = [],
+ metric = '',
+ secondaryMetric = '',
+ colorScheme,
+ linearColorScheme,
+ labelType,
+ numberFormat,
+ dateFormat,
+ showLabels,
+ showLabelsThreshold,
+ showTotal,
+ sliceId,
+ } = formData;
+ const refs: Refs = {};
+ const numberFormatter = getNumberFormatter(numberFormat);
+ const formatter = (params: CallbackDataParams) =>
+ formatLabel({
+ params,
+ numberFormatter,
+ labelType,
+ });
+ const minShowLabelAngle = (showLabelsThreshold || 0) * 3.6;
+ const padding = {
+ top: theme.gridUnit * 3,
+ right: theme.gridUnit,
+ bottom: theme.gridUnit * 3,
+ left: theme.gridUnit,
+ };
+ const containerWidth = width;
+ const containerHeight = height;
+ const visWidth = containerWidth - padding.left - padding.right;
+ const visHeight = containerHeight - padding.top - padding.bottom;
+ const radius = Math.min(visWidth, visHeight) / 2;
+ const { setDataMask = () => {}, onContextMenu } = hooks;
+ const columnsLabelMap = new Map();
+ const metricLabel = getMetricLabel(metric);
+ const secondaryMetricLabel = secondaryMetric
+ ? getMetricLabel(secondaryMetric)
+ : undefined;
+ const columnLabels = columns.map(getColumnLabel);
+ const treeData = treeBuilder(
+ data,
+ columnLabels,
+ metricLabel,
+ secondaryMetricLabel,
+ );
+ const totalValue = treeData.reduce(
+ (result, treeNode) => result + treeNode.value,
+ 0,
+ );
+ const totalSecondaryValue = treeData.reduce(
+ (result, treeNode) => result + treeNode.secondaryValue,
+ 0,
+ );
+
+ const categoricalColorScale = CategoricalColorNamespace.getScale(
+ colorScheme as string,
+ );
+ let linearColorScale: any;
+ let colorByCategory = true;
+ if (secondaryMetric && metric !== secondaryMetric) {
+ const domain = getLinearDomain(
+ treeData,
+ node => node.secondaryValue / node.value,
+ );
+ colorByCategory = false;
+ linearColorScale = getSequentialSchemeRegistry()
+ ?.get(linearColorScheme)
+ ?.createLinearScale(domain);
+ }
+
+ // add a base color to keep feature parity
+ if (colorByCategory) {
+ categoricalColorScale(metricLabel, sliceId);
+ } else {
+ linearColorScale(totalSecondaryValue / totalValue);
+ }
+
+ const traverse = (
+ treeNodes: TreeNode[],
+ path: string[],
+ pathRecords?: DataRecordValue[],
+ ) =>
+ treeNodes.map(treeNode => {
+ const { name: nodeName, value, secondaryValue, groupBy } = treeNode;
+ const records = [...(pathRecords || []), nodeName];
+ let name = formatSeriesName(nodeName, {
+ numberFormatter,
+ timeFormatter: getTimeFormatter(dateFormat),
+ ...(coltypeMapping[groupBy] && {
+ coltype: coltypeMapping[groupBy],
+ }),
+ });
+ const newPath = path.concat(name);
+ let item: NodeItemOption = {
+ records,
+ name,
+ value,
+ secondaryValue,
+ itemStyle: {
+ color: colorByCategory
+ ? categoricalColorScale(name, sliceId)
+ : linearColorScale(secondaryValue / value),
+ },
+ };
+ if (treeNode.children?.length) {
+ item.children = traverse(treeNode.children, newPath, records);
+ } else {
+ name = newPath.join(',');
+ }
+ columnsLabelMap.set(name, newPath);
+ if (filterState.selectedValues?.[0]?.includes(name) === false) {
+ item = {
+ ...item,
+ itemStyle: {
+ ...item.itemStyle,
+ opacity: OpacityEnum.SemiTransparent,
+ },
+ label: {
+ color: `rgba(0, 0, 0, ${OpacityEnum.SemiTransparent})`,
+ },
+ };
+ }
+ return item;
+ });
+
+ const echartOptions: EChartsCoreOption = {
+ grid: {
+ ...defaultGrid,
+ },
+ tooltip: {
+ ...getDefaultTooltip(refs),
+ show: !inContextMenu,
+ trigger: 'item',
+ formatter: (params: any) =>
+ formatTooltip({
+ params,
+ numberFormatter,
+ colorByCategory,
+ totalValue,
+ metricLabel,
+ secondaryMetricLabel,
+ theme,
+ }),
+ },
+ series: [
+ {
+ type: 'sunburst',
+ ...padding,
+ nodeClick: false,
+ emphasis: {
+ focus: 'ancestor',
+ label: {
+ show: showLabels,
+ },
+ },
+ label: {
+ width: (radius * 0.6) / (columns.length || 1),
+ show: showLabels,
+ formatter,
+ color: theme.colors.grayscale.dark2,
+ minAngle: minShowLabelAngle,
+ overflow: 'breakAll',
+ },
+ radius: [radius * 0.3, radius],
+ data: traverse(treeData, []),
+ },
+ ],
+ graphic: showTotal
+ ? {
+ type: 'text',
+ top: 'center',
+ left: 'center',
+ style: {
+ text: t('Total: %s', numberFormatter(totalValue)),
+ fontSize: 16,
+ fontWeight: 'bold',
+ },
+ z: 10,
+ }
+ : null,
+ };
+
+ return {
+ formData,
+ width,
+ height,
+ echartOptions,
+ setDataMask,
+ emitCrossFilters,
+ labelMap: Object.fromEntries(columnsLabelMap),
+ groupby,
+ selectedValues: filterState.selectedValues || [],
+ onContextMenu,
+ refs,
+ };
+}
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/types.ts
new file mode 100644
index 000000000000..37844addea49
--- /dev/null
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/types.ts
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 {
+ ChartDataResponseResult,
+ ChartProps,
+ DataRecordValue,
+ QueryFormColumn,
+ QueryFormData,
+ QueryFormMetric,
+} from '@superset-ui/core';
+import { SunburstSeriesNodeItemOption } from 'echarts/types/src/chart/sunburst/SunburstSeries';
+import {
+ BaseTransformedProps,
+ ContextMenuTransformedProps,
+ CrossFilterTransformedProps,
+} from '../types';
+
+export type EchartsSunburstFormData = QueryFormData & {
+ groupby: QueryFormColumn[];
+ metric: QueryFormMetric;
+ secondaryMetric?: QueryFormMetric;
+ colorScheme?: string;
+ linearColorScheme?: string;
+};
+
+export enum EchartsSunburstLabelType {
+ Key = 'key',
+ Value = 'value',
+ KeyValue = 'key_value',
+}
+
+export const DEFAULT_FORM_DATA: Partial = {
+ groupby: [],
+ numberFormat: 'SMART_NUMBER',
+ labelType: EchartsSunburstLabelType.Key,
+ showLabels: false,
+ dateFormat: 'smart_date',
+};
+
+export interface EchartsSunburstChartProps
+ extends ChartProps {
+ formData: EchartsSunburstFormData;
+ queriesData: ChartDataResponseResult[];
+}
+
+export type SunburstTransformedProps =
+ BaseTransformedProps &
+ ContextMenuTransformedProps &
+ CrossFilterTransformedProps;
+
+export type NodeItemOption = SunburstSeriesNodeItemOption & {
+ records: DataRecordValue[];
+ secondaryValue: number;
+};
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx
index 66bc2d0e79bc..82ca0b585d67 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx
@@ -28,7 +28,7 @@ import {
} from '@superset-ui/chart-controls';
import { EchartsTimeseriesSeriesType } from '../types';
-import { DEFAULT_FORM_DATA } from '../constants';
+import { DEFAULT_FORM_DATA, TIME_SERIES_DESCRIPTION_TEXT } from '../constants';
import {
legendSection,
onlyTotalControl,
@@ -72,11 +72,11 @@ const config: ControlPanelConfig = {
renderTrigger: true,
default: seriesType,
choices: [
- [EchartsTimeseriesSeriesType.Line, 'Line'],
- [EchartsTimeseriesSeriesType.Smooth, 'Smooth Line'],
- [EchartsTimeseriesSeriesType.Start, 'Step - start'],
- [EchartsTimeseriesSeriesType.Middle, 'Step - middle'],
- [EchartsTimeseriesSeriesType.End, 'Step - end'],
+ [EchartsTimeseriesSeriesType.Line, t('Line')],
+ [EchartsTimeseriesSeriesType.Smooth, t('Smooth Line')],
+ [EchartsTimeseriesSeriesType.Start, t('Step - start')],
+ [EchartsTimeseriesSeriesType.Middle, t('Step - middle')],
+ [EchartsTimeseriesSeriesType.End, t('Step - end')],
],
description: t('Series chart type (line, bar etc)'),
},
@@ -182,9 +182,7 @@ const config: ControlPanelConfig = {
config: {
...sharedControls.x_axis_time_format,
default: 'smart_date',
- description: `${D3_TIME_FORMAT_DOCS}. ${t(
- 'When using other than adaptive formatting, labels may overlap.',
- )}`,
+ description: `${D3_TIME_FORMAT_DOCS}. ${TIME_SERIES_DESCRIPTION_TEXT}`,
},
},
],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/index.ts
index 200b25616b4e..b560cf0b4f79 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/index.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/index.ts
@@ -68,7 +68,7 @@ export default class EchartsAreaChartPlugin extends ChartPlugin<
AnnotationType.Timeseries,
],
name: hasGenericChartAxes
- ? t('Area Chart v2')
+ ? t('Area Chart')
: t('Time-series Area Chart'),
tags: [
t('ECharts'),
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/EchartsTimeseries.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/EchartsTimeseries.tsx
index 2ffdb0e87bdc..db4f730aff94 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/EchartsTimeseries.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/EchartsTimeseries.tsx
@@ -49,8 +49,9 @@ export default function EchartsTimeseries({
xValueFormatter,
xAxis,
refs,
+ emitCrossFilters,
}: TimeseriesChartTransformedProps) {
- const { emitFilter, stack } = formData;
+ const { stack } = formData;
const echartRef = useRef(null);
// eslint-disable-next-line no-param-reassign
refs.echartRef = echartRef;
@@ -107,40 +108,56 @@ export default function EchartsTimeseries({
return model;
};
- const handleChange = useCallback(
- (values: string[]) => {
- if (!emitFilter) {
- return;
+ const getCrossFilterDataMask = useCallback(
+ (value: string) => {
+ const selected: string[] = Object.values(selectedValues);
+ let values: string[];
+ if (selected.includes(value)) {
+ values = selected.filter(v => v !== value);
+ } else {
+ values = [value];
}
const groupbyValues = values.map(value => labelMap[value]);
-
- setDataMask({
- extraFormData: {
- filters:
- values.length === 0
- ? []
- : groupby.map((col, idx) => {
- const val = groupbyValues.map(v => v[idx]);
- if (val === null || val === undefined)
+ return {
+ dataMask: {
+ extraFormData: {
+ filters:
+ values.length === 0
+ ? []
+ : groupby.map((col, idx) => {
+ const val = groupbyValues.map(v => v[idx]);
+ if (val === null || val === undefined)
+ return {
+ col,
+ op: 'IS NULL' as const,
+ };
return {
col,
- op: 'IS NULL',
+ op: 'IN' as const,
+ val: val as (string | number | boolean)[],
};
- return {
- col,
- op: 'IN',
- val: val as (string | number | boolean)[],
- };
- }),
+ }),
+ },
+ filterState: {
+ label: groupbyValues.length ? groupbyValues : undefined,
+ value: groupbyValues.length ? groupbyValues : null,
+ selectedValues: values.length ? values : null,
+ },
},
- filterState: {
- label: groupbyValues.length ? groupbyValues : undefined,
- value: groupbyValues.length ? groupbyValues : null,
- selectedValues: values.length ? values : null,
- },
- });
+ isCurrentValueSelected: selected.includes(value),
+ };
},
- [groupby, labelMap, setDataMask, emitFilter],
+ [groupby, labelMap, selectedValues],
+ );
+
+ const handleChange = useCallback(
+ (value: string) => {
+ if (!emitCrossFilters) {
+ return;
+ }
+ setDataMask(getCrossFilterDataMask(value).dataMask);
+ },
+ [emitCrossFilters, setDataMask, getCrossFilterDataMask],
);
const eventHandlers: EventHandlers = {
@@ -151,12 +168,7 @@ export default function EchartsTimeseries({
// Ensure that double-click events do not trigger single click event. So we put it in the timer.
clickTimer.current = setTimeout(() => {
const { seriesName: name } = props;
- const values = Object.values(selectedValues);
- if (values.includes(name)) {
- handleChange(values.filter(v => v !== name));
- } else {
- handleChange([name]);
- }
+ handleChange(name);
}, TIMER_DURATION);
},
mouseout: () => {
@@ -187,16 +199,16 @@ export default function EchartsTimeseries({
contextmenu: eventParams => {
if (onContextMenu) {
eventParams.event.stop();
- const { data } = eventParams;
+ const { data, seriesName } = eventParams;
+ const drillToDetailFilters: BinaryQueryObjectFilterClause[] = [];
+ const pointerEvent = eventParams.event.event;
+ const values = [
+ ...(eventParams.name ? [eventParams.name] : []),
+ ...labelMap[eventParams.seriesName],
+ ];
if (data) {
- const pointerEvent = eventParams.event.event;
- const values = [
- ...(eventParams.name ? [eventParams.name] : []),
- ...labelMap[eventParams.seriesName],
- ];
- const filters: BinaryQueryObjectFilterClause[] = [];
if (xAxis.type === AxisType.time) {
- filters.push({
+ drillToDetailFilters.push({
col:
// if the xAxis is '__timestamp', granularity_sqla will be the column of filter
xAxis.label === DTTM_ALIAS
@@ -212,15 +224,18 @@ export default function EchartsTimeseries({
...(xAxis.type === AxisType.category ? [xAxis.label] : []),
...formData.groupby,
].forEach((dimension, i) =>
- filters.push({
+ drillToDetailFilters.push({
col: dimension,
op: '==',
val: values[i],
formattedVal: String(values[i]),
}),
);
- onContextMenu(pointerEvent.clientX, pointerEvent.clientY, filters);
}
+ onContextMenu(pointerEvent.clientX, pointerEvent.clientY, {
+ drillToDetail: drillToDetailFilters,
+ crossFilter: getCrossFilterDataMask(seriesName),
+ });
}
},
};
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx
index bb6284406415..509dc6c815f6 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx
@@ -31,7 +31,10 @@ import {
} from '@superset-ui/chart-controls';
import { OrientationType } from '../../types';
-import { DEFAULT_FORM_DATA } from '../../constants';
+import {
+ DEFAULT_FORM_DATA,
+ TIME_SERIES_DESCRIPTION_TEXT,
+} from '../../constants';
import {
legendSection,
richTooltipSection,
@@ -52,7 +55,7 @@ function createAxisTitleControl(axis: 'x' | 'y'): ControlSetRow[] {
const isXAxis = axis === 'x';
const isVertical = (controls: ControlStateMapping) =>
Boolean(controls?.orientation.value === OrientationType.vertical);
- const isHorizental = (controls: ControlStateMapping) =>
+ const isHorizontal = (controls: ControlStateMapping) =>
Boolean(controls?.orientation.value === OrientationType.horizontal);
return [
[
@@ -65,7 +68,7 @@ function createAxisTitleControl(axis: 'x' | 'y'): ControlSetRow[] {
default: '',
description: t('Changing this control takes effect instantly'),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isVertical(controls) : isHorizental(controls),
+ isXAxis ? isVertical(controls) : isHorizontal(controls),
},
},
],
@@ -82,7 +85,7 @@ function createAxisTitleControl(axis: 'x' | 'y'): ControlSetRow[] {
choices: formatSelectOptions(sections.TITLE_MARGIN_OPTIONS),
description: t('Changing this control takes effect instantly'),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isVertical(controls) : isHorizental(controls),
+ isXAxis ? isVertical(controls) : isHorizontal(controls),
},
},
],
@@ -96,7 +99,7 @@ function createAxisTitleControl(axis: 'x' | 'y'): ControlSetRow[] {
default: '',
description: t('Changing this control takes effect instantly'),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isHorizental(controls) : isVertical(controls),
+ isXAxis ? isHorizontal(controls) : isVertical(controls),
},
},
],
@@ -113,7 +116,7 @@ function createAxisTitleControl(axis: 'x' | 'y'): ControlSetRow[] {
choices: formatSelectOptions(sections.TITLE_MARGIN_OPTIONS),
description: t('Changing this control takes effect instantly'),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isHorizental(controls) : isVertical(controls),
+ isXAxis ? isHorizontal(controls) : isVertical(controls),
},
},
],
@@ -126,11 +129,11 @@ function createAxisTitleControl(axis: 'x' | 'y'): ControlSetRow[] {
clearable: false,
label: t('AXIS TITLE POSITION'),
renderTrigger: true,
- default: sections.TITLE_POSITION_OPTIONS[0],
- choices: formatSelectOptions(sections.TITLE_POSITION_OPTIONS),
+ default: sections.TITLE_POSITION_OPTIONS[0][0],
+ choices: sections.TITLE_POSITION_OPTIONS,
description: t('Changing this control takes effect instantly'),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isHorizental(controls) : isVertical(controls),
+ isXAxis ? isHorizontal(controls) : isVertical(controls),
},
},
],
@@ -141,7 +144,7 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
const isXAxis = axis === 'x';
const isVertical = (controls: ControlStateMapping) =>
Boolean(controls?.orientation.value === OrientationType.vertical);
- const isHorizental = (controls: ControlStateMapping) =>
+ const isHorizontal = (controls: ControlStateMapping) =>
Boolean(controls?.orientation.value === OrientationType.horizontal);
return [
[
@@ -150,11 +153,9 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
config: {
...sharedControls.x_axis_time_format,
default: 'smart_date',
- description: `${D3_TIME_FORMAT_DOCS}. ${t(
- 'When using other than adaptive formatting, labels may overlap.',
- )}`,
+ description: `${D3_TIME_FORMAT_DOCS}. ${TIME_SERIES_DESCRIPTION_TEXT}`,
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isVertical(controls) : isHorizental(controls),
+ isXAxis ? isVertical(controls) : isHorizontal(controls),
},
},
],
@@ -176,7 +177,7 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
'Input field supports custom rotation. e.g. 30 for 30°',
),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isVertical(controls) : isHorizental(controls),
+ isXAxis ? isVertical(controls) : isHorizontal(controls),
},
},
],
@@ -187,7 +188,7 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
...sharedControls.y_axis_format,
label: t('Axis Format'),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isHorizental(controls) : isVertical(controls),
+ isXAxis ? isHorizontal(controls) : isVertical(controls),
},
},
],
@@ -201,7 +202,7 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
default: logAxis,
description: t('Logarithmic axis'),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isHorizental(controls) : isVertical(controls),
+ isXAxis ? isHorizontal(controls) : isVertical(controls),
},
},
],
@@ -215,7 +216,7 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
default: minorSplitLine,
description: t('Draw split lines for minor axis ticks'),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isHorizental(controls) : isVertical(controls),
+ isXAxis ? isHorizontal(controls) : isVertical(controls),
},
},
],
@@ -229,7 +230,7 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
renderTrigger: true,
description: t('It’s not recommended to truncate axis in Bar chart.'),
visibility: ({ controls }: ControlPanelsContainerProps) =>
- isXAxis ? isHorizental(controls) : isVertical(controls),
+ isXAxis ? isHorizontal(controls) : isVertical(controls),
},
},
],
@@ -249,7 +250,7 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
),
visibility: ({ controls }: ControlPanelsContainerProps) =>
Boolean(controls?.truncateYAxis?.value) &&
- (isXAxis ? isHorizental(controls) : isVertical(controls)),
+ (isXAxis ? isHorizontal(controls) : isVertical(controls)),
},
},
],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/index.ts
index 6ec20be442ed..de0050edaa94 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/index.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/index.ts
@@ -75,9 +75,7 @@ export default class EchartsTimeseriesBarChartPlugin extends ChartPlugin<
AnnotationType.Interval,
AnnotationType.Timeseries,
],
- name: hasGenericChartAxes
- ? t('Bar Chart v2')
- : t('Time-series Bar Chart v2'),
+ name: hasGenericChartAxes ? t('Bar Chart') : t('Time-series Bar Chart'),
tags: [
t('ECharts'),
t('Predictive'),
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx
index 1b7357eaaa18..0ceb518b8834 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx
@@ -28,7 +28,10 @@ import {
} from '@superset-ui/chart-controls';
import { EchartsTimeseriesSeriesType } from '../../types';
-import { DEFAULT_FORM_DATA } from '../../constants';
+import {
+ DEFAULT_FORM_DATA,
+ TIME_SERIES_DESCRIPTION_TEXT,
+} from '../../constants';
import {
legendSection,
richTooltipSection,
@@ -71,13 +74,13 @@ const config: ControlPanelConfig = {
renderTrigger: true,
default: seriesType,
choices: [
- [EchartsTimeseriesSeriesType.Line, 'Line'],
- [EchartsTimeseriesSeriesType.Scatter, 'Scatter'],
- [EchartsTimeseriesSeriesType.Smooth, 'Smooth Line'],
- [EchartsTimeseriesSeriesType.Bar, 'Bar'],
- [EchartsTimeseriesSeriesType.Start, 'Step - start'],
- [EchartsTimeseriesSeriesType.Middle, 'Step - middle'],
- [EchartsTimeseriesSeriesType.End, 'Step - end'],
+ [EchartsTimeseriesSeriesType.Line, t('Line')],
+ [EchartsTimeseriesSeriesType.Scatter, t('Scatter')],
+ [EchartsTimeseriesSeriesType.Smooth, t('Smooth Line')],
+ [EchartsTimeseriesSeriesType.Bar, t('Bar')],
+ [EchartsTimeseriesSeriesType.Start, t('Step - start')],
+ [EchartsTimeseriesSeriesType.Middle, t('Step - middle')],
+ [EchartsTimeseriesSeriesType.End, t('Step - end')],
],
description: t('Series chart type (line, bar etc)'),
},
@@ -169,9 +172,7 @@ const config: ControlPanelConfig = {
config: {
...sharedControls.x_axis_time_format,
default: 'smart_date',
- description: `${D3_TIME_FORMAT_DOCS}. ${t(
- 'When using other than adaptive formatting, labels may overlap.',
- )}`,
+ description: `${D3_TIME_FORMAT_DOCS}. ${TIME_SERIES_DESCRIPTION_TEXT}`,
},
},
],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/index.ts
index 3a384293e530..b6f7f1fceb2b 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/index.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/index.ts
@@ -73,7 +73,7 @@ export default class EchartsTimeseriesLineChartPlugin extends ChartPlugin<
AnnotationType.Timeseries,
],
name: hasGenericChartAxes
- ? t('Line Chart v2')
+ ? t('Line Chart')
: t('Time-series Line Chart'),
tags: [
t('ECharts'),
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Scatter/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Scatter/controlPanel.tsx
index 379840ae3cbf..9e36db0d3b3a 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Scatter/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Scatter/controlPanel.tsx
@@ -27,7 +27,10 @@ import {
sharedControls,
} from '@superset-ui/chart-controls';
-import { DEFAULT_FORM_DATA } from '../../constants';
+import {
+ DEFAULT_FORM_DATA,
+ TIME_SERIES_DESCRIPTION_TEXT,
+} from '../../constants';
import {
legendSection,
richTooltipSection,
@@ -112,9 +115,7 @@ const config: ControlPanelConfig = {
config: {
...sharedControls.x_axis_time_format,
default: 'smart_date',
- description: `${D3_TIME_FORMAT_DOCS}. ${t(
- 'When using other than adaptive formatting, labels may overlap.',
- )}`,
+ description: `${D3_TIME_FORMAT_DOCS}. ${TIME_SERIES_DESCRIPTION_TEXT}`,
},
},
],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx
index f758249572f1..bfb7671ddbf3 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx
@@ -27,7 +27,10 @@ import {
sharedControls,
} from '@superset-ui/chart-controls';
-import { DEFAULT_FORM_DATA } from '../../constants';
+import {
+ DEFAULT_FORM_DATA,
+ TIME_SERIES_DESCRIPTION_TEXT,
+} from '../../constants';
import {
legendSection,
richTooltipSection,
@@ -111,9 +114,7 @@ const config: ControlPanelConfig = {
config: {
...sharedControls.x_axis_time_format,
default: 'smart_date',
- description: `${D3_TIME_FORMAT_DOCS}. ${t(
- 'When using other than adaptive formatting, labels may overlap.',
- )}`,
+ description: `${D3_TIME_FORMAT_DOCS}. ${TIME_SERIES_DESCRIPTION_TEXT}`,
},
},
],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx
index 8001acc5220c..6a8e6eef1778 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx
@@ -28,7 +28,7 @@ import {
} from '@superset-ui/chart-controls';
import { EchartsTimeseriesSeriesType } from '../../types';
-import { DEFAULT_FORM_DATA } from '../constants';
+import { DEFAULT_FORM_DATA, TIME_SERIES_DESCRIPTION_TEXT } from '../constants';
import {
legendSection,
richTooltipSection,
@@ -70,9 +70,9 @@ const config: ControlPanelConfig = {
renderTrigger: true,
default: EchartsTimeseriesSeriesType.Start,
choices: [
- [EchartsTimeseriesSeriesType.Start, 'Start'],
- [EchartsTimeseriesSeriesType.Middle, 'Middle'],
- [EchartsTimeseriesSeriesType.End, 'End'],
+ [EchartsTimeseriesSeriesType.Start, t('Start')],
+ [EchartsTimeseriesSeriesType.Middle, t('Middle')],
+ [EchartsTimeseriesSeriesType.End, t('End')],
],
description: t(
'Defines whether the step should appear at the beginning, middle or end between two data points',
@@ -166,9 +166,7 @@ const config: ControlPanelConfig = {
config: {
...sharedControls.x_axis_time_format,
default: 'smart_date',
- description: `${D3_TIME_FORMAT_DOCS}. ${t(
- 'When using other than adaptive formatting, labels may overlap.',
- )}`,
+ description: `${D3_TIME_FORMAT_DOCS}. ${TIME_SERIES_DESCRIPTION_TEXT}`,
},
},
],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts
index ad021f92b918..69a8020657b8 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts
@@ -19,24 +19,25 @@
import {
buildQueryContext,
ensureIsArray,
+ getXAxisColumn,
+ isXAxisSet,
normalizeOrderBy,
PostProcessingPivot,
QueryFormData,
- getXAxisColumn,
- isXAxisSet,
} from '@superset-ui/core';
import {
- rollingWindowOperator,
- timeCompareOperator,
+ contributionOperator,
+ extractExtraMetrics,
+ flattenOperator,
isTimeComparison,
pivotOperator,
- resampleOperator,
- renameOperator,
- contributionOperator,
prophetOperator,
- timeComparePivotOperator,
- flattenOperator,
+ renameOperator,
+ resampleOperator,
+ rollingWindowOperator,
sortOperator,
+ timeComparePivotOperator,
+ timeCompareOperator,
} from '@superset-ui/chart-controls';
export default function buildQuery(formData: QueryFormData) {
@@ -62,6 +63,9 @@ export default function buildQuery(formData: QueryFormData) {
2015-03-01 318.0 0.0
*/
+ // only add series limit metric if it's explicitly needed e.g. for sorting
+ const extra_metrics = extractExtraMetrics(formData);
+
const pivotOperatorInRuntime: PostProcessingPivot = isTimeComparison(
formData,
baseQueryObject,
@@ -69,15 +73,16 @@ export default function buildQuery(formData: QueryFormData) {
? timeComparePivotOperator(formData, baseQueryObject)
: pivotOperator(formData, baseQueryObject);
+ const columns = [
+ ...(isXAxisSet(formData) ? ensureIsArray(getXAxisColumn(formData)) : []),
+ ...ensureIsArray(groupby),
+ ];
+
return [
{
...baseQueryObject,
- columns: [
- ...(isXAxisSet(formData)
- ? ensureIsArray(getXAxisColumn(formData))
- : []),
- ...ensureIsArray(groupby),
- ],
+ metrics: [...(baseQueryObject.metrics || []), ...extra_metrics],
+ columns,
series_columns: groupby,
...(isXAxisSet(formData) ? {} : { is_timeseries: true }),
// todo: move `normalizeOrderBy to extractQueryFields`
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/constants.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/constants.ts
index 2590441ef67f..1d7b87194493 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/constants.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/constants.ts
@@ -17,6 +17,7 @@
* under the License.
*/
import { sections } from '@superset-ui/chart-controls';
+import { t } from '@superset-ui/core';
import {
OrientationType,
EchartsTimeseriesSeriesType,
@@ -57,10 +58,13 @@ export const DEFAULT_FORM_DATA: EchartsTimeseriesFormData = {
zoomable: false,
richTooltip: true,
xAxisLabelRotation: 0,
- emitFilter: false,
groupby: [],
showValue: false,
onlyTotal: false,
percentageThreshold: 0,
orientation: OrientationType.vertical,
};
+
+export const TIME_SERIES_DESCRIPTION_TEXT: string = t(
+ 'When using other than adaptive formatting, labels may overlap',
+);
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts
index 4065a170d087..c8210cd98191 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts
@@ -49,10 +49,10 @@ export default class EchartsTimeseriesChartPlugin extends ChartPlugin<
credits: ['https://echarts.apache.org'],
description: hasGenericChartAxes
? t(
- 'Swiss army knife for visualizing data. Choose between step, line, scatter, and bar charts. This viz type has many customization options as well.',
+ 'Swiss army knife for visualizing data. Choose between step, line, scatter, and bar charts. This viz type has many customization options as well.',
)
: t(
- 'Swiss army knife for visualizing time series data. Choose between step, line, scatter, and bar charts. This viz type has many customization options as well.',
+ 'Swiss army knife for visualizing time series data. Choose between step, line, scatter, and bar charts. This viz type has many customization options as well.',
),
exampleGallery: [{ url: example }],
supportedAnnotationTypes: [
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
index fa947b421b9f..a853c4b869d1 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
@@ -19,21 +19,25 @@
/* eslint-disable camelcase */
import {
AnnotationLayer,
+ AxisType,
CategoricalColorNamespace,
GenericDataType,
+ getMetricLabel,
getNumberFormatter,
+ getXAxisLabel,
+ isDefined,
isEventAnnotationLayer,
isFormulaAnnotationLayer,
isIntervalAnnotationLayer,
+ isPhysicalColumn,
isTimeseriesAnnotationLayer,
- TimeseriesChartDataResponseResult,
t,
- AxisType,
- getXAxisLabel,
- isPhysicalColumn,
- isDefined,
+ TimeseriesChartDataResponseResult,
} from '@superset-ui/core';
-import { isDerivedSeries } from '@superset-ui/chart-controls';
+import {
+ extractExtraMetrics,
+ isDerivedSeries,
+} from '@superset-ui/chart-controls';
import { EChartsCoreOption, SeriesOption } from 'echarts';
import { ZRLineType } from 'echarts/types/src/util/types';
import {
@@ -99,11 +103,13 @@ export default function transformProps(
datasource,
theme,
inContextMenu,
+ emitCrossFilters,
} = chartProps;
const { verboseMap = {} } = datasource;
const [queryData] = queriesData;
- const { data = [], label_map: labelMap } =
+ const { data = [], label_map = {} } =
queryData as TimeseriesChartDataResponseResult;
+
const dataTypes = getColtypesMapping(queryData);
const annotationData = getAnnotationData(chartProps);
@@ -113,43 +119,54 @@ export default function transformProps(
colorScheme,
contributionMode,
forecastEnabled,
+ groupby,
legendOrientation,
legendType,
legendMargin,
logAxis,
markerEnabled,
markerSize,
- opacity,
minorSplitLine,
+ onlyTotal,
+ opacity,
+ orientation,
+ percentageThreshold,
+ richTooltip,
seriesType,
showLegend,
+ showValue,
+ sliceId,
+ timeGrainSqla,
+ timeCompare,
stack,
- truncateYAxis,
- yAxisFormat,
- xAxisTimeFormat,
- yAxisBounds,
tooltipTimeFormat,
tooltipSortByMetric,
- zoomable,
- richTooltip,
+ truncateYAxis,
xAxis: xAxisOrig,
xAxisLabelRotation,
- emitFilter,
- groupby,
- showValue,
- onlyTotal,
- percentageThreshold,
+ xAxisTimeFormat,
xAxisTitle,
- yAxisTitle,
xAxisTitleMargin,
+ yAxisBounds,
+ yAxisFormat,
+ yAxisTitle,
yAxisTitleMargin,
yAxisTitlePosition,
- sliceId,
- timeGrainSqla,
- orientation,
+ zoomable,
}: EchartsTimeseriesFormData = { ...DEFAULT_FORM_DATA, ...formData };
const refs: Refs = {};
+ const labelMap = Object.entries(label_map).reduce((acc, entry) => {
+ if (
+ entry[1].length > groupby.length &&
+ Array.isArray(timeCompare) &&
+ timeCompare.includes(entry[1][0])
+ ) {
+ entry[1].shift();
+ }
+ return { ...acc, [entry[0]]: entry[1] };
+ }, {});
+
const colorScale = CategoricalColorNamespace.getScale(colorScheme as string);
const rebasedData = rebaseForecastDatum(data, verboseMap);
let xAxisLabel = getXAxisLabel(chartProps.rawFormData) as string;
@@ -168,9 +185,14 @@ export default function transformProps(
xAxisCol: xAxisLabel,
},
);
+ const extraMetricLabels = extractExtraMetrics(chartProps.rawFormData).map(
+ getMetricLabel,
+ );
+
const rawSeries = extractSeries(rebasedData, {
fillNeighborValue: stack && !forecastEnabled ? 0 : undefined,
xAxis: xAxisLabel,
+ extraMetricLabels,
removeNulls: seriesType === EchartsTimeseriesSeriesType.Scatter,
stack,
totalStackedValues,
@@ -370,6 +392,7 @@ export default function transformProps(
if (isHorizontal) {
[xAxis, yAxis] = [yAxis, xAxis];
[padding.bottom, padding.left] = [padding.left, padding.bottom];
+ yAxis.inverse = true;
}
const echartOptions: EChartsCoreOption = {
@@ -448,7 +471,7 @@ export default function transformProps(
return {
echartOptions,
- emitFilter,
+ emitCrossFilters,
formData,
groupby,
height,
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts
index 82a204e38d7f..bca13a058466 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts
@@ -71,6 +71,7 @@ export type EchartsTimeseriesFormData = QueryFormData & {
rowLimit: number;
seriesType: EchartsTimeseriesSeriesType;
stack: StackType;
+ timeCompare?: string[];
tooltipTimeFormat?: string;
truncateYAxis: boolean;
yAxisFormat?: string;
@@ -80,7 +81,6 @@ export type EchartsTimeseriesFormData = QueryFormData & {
zoomable: boolean;
richTooltip: boolean;
xAxisLabelRotation: number;
- emitFilter: boolean;
groupby: QueryFormColumn[];
showValue: boolean;
onlyTotal: boolean;
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx
index f8035203fe6b..a6ee81589a28 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx
@@ -161,7 +161,7 @@ const controlPanel: ControlPanelConfig = {
['right', t('right')],
['bottom', t('bottom')],
],
- description: t('Position of intermidiate node label on tree'),
+ description: t('Position of intermediate node label on tree'),
},
},
],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/EchartsTreemap.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/EchartsTreemap.tsx
index 8559688939b0..1ee793cfc7ea 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/EchartsTreemap.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/EchartsTreemap.tsx
@@ -29,7 +29,7 @@ import { TreemapTransformedProps } from './types';
export default function EchartsTreemap({
echartOptions,
- formData,
+ emitCrossFilters,
groupby,
height,
labelMap,
@@ -39,74 +39,95 @@ export default function EchartsTreemap({
selectedValues,
width,
}: TreemapTransformedProps) {
- const handleChange = useCallback(
- (values: string[]) => {
- if (!formData.emitFilter) {
- return;
+ const getCrossFilterDataMask = useCallback(
+ (data, treePathInfo) => {
+ if (data?.children) {
+ return undefined;
+ }
+ const { treePath } = extractTreePathInfo(treePathInfo);
+ const name = treePath.join(',');
+ const selected = Object.values(selectedValues);
+ let values: string[];
+ if (selected.includes(name)) {
+ values = selected.filter(v => v !== name);
+ } else {
+ values = [name];
}
const groupbyValues = values.map(value => labelMap[value]);
- setDataMask({
- extraFormData: {
- filters:
- values.length === 0
- ? []
- : groupby.map((col, idx) => {
- const val: DataRecordValue[] = groupbyValues.map(v => v[idx]);
- if (val === null || val === undefined)
+ return {
+ dataMask: {
+ extraFormData: {
+ filters:
+ values.length === 0
+ ? []
+ : groupby.map((col, idx) => {
+ const val: DataRecordValue[] = groupbyValues.map(
+ v => v[idx],
+ );
+ if (val === null || val === undefined)
+ return {
+ col,
+ op: 'IS NULL' as const,
+ };
return {
col,
- op: 'IS NULL',
+ op: 'IN' as const,
+ val: val as (string | number | boolean)[],
};
- return {
- col,
- op: 'IN',
- val: val as (string | number | boolean)[],
- };
- }),
- },
- filterState: {
- value: groupbyValues.length ? groupbyValues : null,
- selectedValues: values.length ? values : null,
+ }),
+ },
+ filterState: {
+ value: groupbyValues.length ? groupbyValues : null,
+ selectedValues: values.length ? values : null,
+ },
},
- });
+ isCurrentValueSelected: selected.includes(name),
+ };
},
- [groupby, labelMap, setDataMask, selectedValues],
+ [groupby, labelMap, selectedValues],
);
- const eventHandlers: EventHandlers = {
- click: props => {
- const { data, treePathInfo } = props;
- // do nothing when clicking on the parent node
- if (data?.children) {
+ const handleChange = useCallback(
+ (data, treePathInfo) => {
+ if (!emitCrossFilters) {
return;
}
- const { treePath } = extractTreePathInfo(treePathInfo);
- const name = treePath.join(',');
- const values = Object.values(selectedValues);
- if (values.includes(name)) {
- handleChange(values.filter(v => v !== name));
- } else {
- handleChange([name]);
+
+ const dataMask = getCrossFilterDataMask(data, treePathInfo)?.dataMask;
+ if (dataMask) {
+ setDataMask(dataMask);
}
},
+ [emitCrossFilters, getCrossFilterDataMask, setDataMask],
+ );
+
+ const eventHandlers: EventHandlers = {
+ click: props => {
+ const { data, treePathInfo } = props;
+ handleChange(data, treePathInfo);
+ },
contextmenu: eventParams => {
if (onContextMenu) {
eventParams.event.stop();
- const { treePath } = extractTreePathInfo(eventParams.treePathInfo);
+ const { data, treePathInfo } = eventParams;
+ const { treePath } = extractTreePathInfo(treePathInfo);
if (treePath.length > 0) {
const pointerEvent = eventParams.event.event;
- const filters: BinaryQueryObjectFilterClause[] = [];
+ const drillToDetailFilters: BinaryQueryObjectFilterClause[] = [];
treePath.forEach((path, i) =>
- filters.push({
+ drillToDetailFilters.push({
col: groupby[i],
op: '==',
val: path === 'null' ? NULL_STRING : path,
formattedVal: path,
}),
);
- onContextMenu(pointerEvent.clientX, pointerEvent.clientY, filters);
+ onContextMenu(pointerEvent.clientX, pointerEvent.clientY, {
+ drillToDetail: drillToDetailFilters,
+ crossFilter: getCrossFilterDataMask(data, treePathInfo),
+ });
}
}
},
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/constants.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/constants.ts
index 080565229ac2..2cc660f35f5a 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/constants.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/constants.ts
@@ -17,7 +17,7 @@
* under the License.
*/
-import { TreePathInfo } from './types';
+import { TreePathInfo } from '../types';
export const COLOR_SATURATION = [0.7, 0.4];
export const LABEL_FONTSIZE = 11;
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx
index 2b816b3f25bc..e5f470470143 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx
@@ -21,10 +21,10 @@ import { t } from '@superset-ui/core';
import {
ControlPanelConfig,
D3_FORMAT_DOCS,
+ D3_NUMBER_FORMAT_DESCRIPTION_VALUES_TEXT,
D3_FORMAT_OPTIONS,
D3_TIME_FORMAT_OPTIONS,
sections,
- emitFilterControl,
getStandardizedControls,
} from '@superset-ui/chart-controls';
import { DEFAULT_FORM_DATA } from './types';
@@ -55,7 +55,6 @@ const config: ControlPanelConfig = {
},
],
['adhoc_filters'],
- emitFilterControl,
],
},
{
@@ -97,9 +96,9 @@ const config: ControlPanelConfig = {
default: labelType,
renderTrigger: true,
choices: [
- ['Key', 'Key'],
- ['value', 'Value'],
- ['key_value', 'Category and Value'],
+ ['Key', t('Key')],
+ ['value', t('Value')],
+ ['key_value', t('Category and Value')],
],
description: t('What should be shown on the label?'),
},
@@ -115,9 +114,7 @@ const config: ControlPanelConfig = {
renderTrigger: true,
default: numberFormat,
choices: D3_FORMAT_OPTIONS,
- description: `${t(
- 'D3 format syntax: https://github.com/d3/d3-format. ',
- )} ${t('Only applies when "Label Type" is set to show values.')}`,
+ description: `${D3_FORMAT_DOCS} ${D3_NUMBER_FORMAT_DESCRIPTION_VALUES_TEXT}`,
},
},
],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts
index 49be2849ac0b..ec6d2d38230c 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts
@@ -2,7 +2,7 @@
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
- * regardin
+ * regarding
* g copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
@@ -50,10 +50,10 @@ export default class EchartsTreemapChartPlugin extends ChartPlugin<
category: t('Part of a Whole'),
credits: ['https://echarts.apache.org'],
description: t(
- 'Show hierarchical relationships of data, with with the value represented by area, showing proportion and contribution to the whole.',
+ 'Show hierarchical relationships of data, with the value represented by area, showing proportion and contribution to the whole.',
),
exampleGallery: [{ url: example1 }, { url: example2 }],
- name: t('Treemap v2'),
+ name: t('Treemap'),
tags: [
t('Aesthetic'),
t('Categorical'),
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/transformProps.ts
index 5c4b4cd93617..b220b55b3d3c 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/transformProps.ts
@@ -18,7 +18,6 @@
*/
import {
CategoricalColorNamespace,
- DataRecord,
getColumnLabel,
getMetricLabel,
getNumberFormatter,
@@ -26,7 +25,6 @@ import {
NumberFormats,
NumberFormatter,
} from '@superset-ui/core';
-import { groupBy, isNumber, transform } from 'lodash';
import { TreemapSeriesNodeItemOption } from 'echarts/types/src/chart/treemap/TreemapSeries';
import { EChartsCoreOption, TreemapSeriesOption } from 'echarts';
import {
@@ -49,6 +47,7 @@ import {
import { OpacityEnum } from '../constants';
import { getDefaultTooltip } from '../utils/tooltip';
import { Refs } from '../types';
+import { treeBuilder, TreeNode } from '../utils/treeBuilder';
export function formatLabel({
params,
@@ -118,6 +117,7 @@ export default function transformProps(
filterState,
theme,
inContextMenu,
+ emitCrossFilters,
} = chartProps;
const { data = [] } = queriesData[0];
const { setDataMask = () => {}, onContextMenu } = hooks;
@@ -134,7 +134,6 @@ export default function transformProps(
showLabels,
showUpperLabels,
dashboardId,
- emitFilter,
sliceId,
}: EchartsTreemapFormData = {
...DEFAULT_TREEMAP_FORM_DATA,
@@ -151,97 +150,58 @@ export default function transformProps(
});
const columnsLabelMap = new Map();
-
- const transformer = (
- data: DataRecord[],
- groupbyLabels: string[],
- metric: string,
- depth: number,
- path: string[],
- ): TreemapSeriesNodeItemOption[] => {
- const [currGroupby, ...restGroupby] = groupbyLabels;
- const currGrouping = groupBy(data, currGroupby);
- if (!restGroupby.length) {
- return transform(
- currGrouping,
- (result, value, key) => {
- (value ?? []).forEach(datum => {
- const name = formatSeriesName(key, {
- numberFormatter,
- timeFormatter: getTimeFormatter(dateFormat),
- ...(coltypeMapping[currGroupby] && {
- coltype: coltypeMapping[currGroupby],
- }),
- });
- const item: TreemapSeriesNodeItemOption = {
- name,
- value: isNumber(datum[metric]) ? (datum[metric] as number) : 0,
- };
- const joinedName = path.concat(name).join(',');
- // map(joined_name: [columnLabel_1, columnLabel_2, ...])
- columnsLabelMap.set(joinedName, path.concat(name));
- if (
- filterState.selectedValues &&
- !filterState.selectedValues.includes(joinedName)
- ) {
- item.itemStyle = {
- colorAlpha: OpacityEnum.SemiTransparent,
- };
- item.label = {
- color: `rgba(0, 0, 0, ${OpacityEnum.SemiTransparent})`,
- };
- }
- result.push(item);
- });
- },
- [] as TreemapSeriesNodeItemOption[],
- );
- }
- const sortedData = transform(
- currGrouping,
- (result, value, key) => {
- const name = formatSeriesName(key, {
- numberFormatter,
- timeFormatter: getTimeFormatter(dateFormat),
- ...(coltypeMapping[currGroupby] && {
- coltype: coltypeMapping[currGroupby],
- }),
- });
- const children = transformer(
- value,
- restGroupby,
- metric,
- depth + 1,
- path.concat(name),
- );
- result.push({
- name,
- children,
- value: children.reduce(
- (prev, cur) => prev + (cur.value as number),
- 0,
- ),
- });
- result.sort((a, b) => (b.value as number) - (a.value as number));
- },
- [] as TreemapSeriesNodeItemOption[],
- );
- // sort according to the area and then take the color value in order
- return sortedData.map(child => ({
- ...child,
- colorSaturation: COLOR_SATURATION,
- itemStyle: {
- borderColor: BORDER_COLOR,
- color: colorFn(`${child.name}`, sliceId),
- borderWidth: BORDER_WIDTH,
- gapWidth: GAP_WIDTH,
- },
- }));
- };
-
const metricLabel = getMetricLabel(metric);
const groupbyLabels = groupby.map(getColumnLabel);
- const initialDepth = 1;
+ const treeData = treeBuilder(data, groupbyLabels, metricLabel);
+ const traverse = (treeNodes: TreeNode[], path: string[]) =>
+ treeNodes.map(treeNode => {
+ const { name: nodeName, value, groupBy } = treeNode;
+ const name = formatSeriesName(nodeName, {
+ numberFormatter,
+ timeFormatter: getTimeFormatter(dateFormat),
+ ...(coltypeMapping[groupBy] && {
+ coltype: coltypeMapping[groupBy],
+ }),
+ });
+ const newPath = path.concat(name);
+ let item: TreemapSeriesNodeItemOption = {
+ name,
+ value,
+ };
+ if (treeNode.children?.length) {
+ item = {
+ ...item,
+ children: traverse(treeNode.children, newPath),
+ colorSaturation: COLOR_SATURATION,
+ itemStyle: {
+ borderColor: BORDER_COLOR,
+ color: colorFn(name, sliceId),
+ borderWidth: BORDER_WIDTH,
+ gapWidth: GAP_WIDTH,
+ },
+ };
+ } else {
+ const joinedName = newPath.join(',');
+ // map(joined_name: [columnLabel_1, columnLabel_2, ...])
+ columnsLabelMap.set(joinedName, newPath);
+ if (
+ filterState.selectedValues &&
+ !filterState.selectedValues.includes(joinedName)
+ ) {
+ item = {
+ ...item,
+ itemStyle: {
+ colorAlpha: OpacityEnum.SemiTransparent,
+ },
+ label: {
+ color: `rgba(0, 0, 0, ${OpacityEnum.SemiTransparent})`,
+ },
+ };
+ }
+ }
+ return item;
+ });
+
const transformedData: TreemapSeriesNodeItemOption[] = [
{
name: metricLabel,
@@ -255,7 +215,7 @@ export default function transformProps(
upperLabel: {
show: false,
},
- children: transformer(data, groupbyLabels, metricLabel, initialDepth, []),
+ children: traverse(treeData, []),
},
];
@@ -328,7 +288,7 @@ export default function transformProps(
height,
echartOptions,
setDataMask,
- emitFilter,
+ emitCrossFilters,
labelMap: Object.fromEntries(columnsLabelMap),
groupby,
selectedValues: filterState.selectedValues || [],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/types.ts
index c318b2ac2a36..1d4298838918 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/types.ts
@@ -29,6 +29,7 @@ import {
ContextMenuTransformedProps,
CrossFilterTransformedProps,
LabelPositionEnum,
+ TreePathInfo,
} from '../types';
export type EchartsTreemapFormData = QueryFormData & {
@@ -42,7 +43,6 @@ export type EchartsTreemapFormData = QueryFormData & {
numberFormat: string;
dateFormat: string;
dashboardId?: number;
- emitFilter: boolean;
};
export enum EchartsTreemapLabelType {
@@ -65,14 +65,7 @@ export const DEFAULT_FORM_DATA: Partial = {
showLabels: true,
showUpperLabels: true,
dateFormat: 'smart_date',
- emitFilter: false,
};
-
-export interface TreePathInfo {
- name: string;
- dataIndex: number;
- value: number | number[];
-}
export interface TreemapSeriesCallbackDataParams extends CallbackDataParams {
treePathInfo?: TreePathInfo[];
}
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/defaults.ts b/superset-frontend/plugins/plugin-chart-echarts/src/defaults.ts
index d76de5b53db8..c5ada14932eb 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/defaults.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/defaults.ts
@@ -1,7 +1,3 @@
-import { CallbackDataParams } from 'echarts/types/src/util/types';
-import { LegendOrientation } from './types';
-import { TOOLTIP_POINTER_MARGIN, TOOLTIP_OVERFLOW_MARGIN } from './constants';
-
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -20,66 +16,12 @@ import { TOOLTIP_POINTER_MARGIN, TOOLTIP_OVERFLOW_MARGIN } from './constants';
* specific language governing permissions and limitations
* under the License.
*/
+import { LegendOrientation } from './types';
+
export const defaultGrid = {
containLabel: true,
};
-export const defaultTooltip = {
- position: (
- canvasMousePos: [number, number],
- params: CallbackDataParams,
- tooltipDom: HTMLElement,
- rect: any,
- sizes: { contentSize: [number, number]; viewSize: [number, number] },
- ) => {
- // algorithm copy-pasted from here:
- // https://github.com/apache/echarts/issues/5004#issuecomment-559668309
-
- // The chart canvas position
- const canvasRect = tooltipDom.parentElement
- ?.getElementsByTagName('canvas')[0]
- .getBoundingClientRect();
-
- // The mouse coordinates relative to the whole window
- // The first parameter to the position function is the mouse position relative to the canvas
- const mouseX = canvasMousePos[0] + (canvasRect?.x || 0);
- const mouseY = canvasMousePos[1] + (canvasRect?.y || 0);
-
- // The width and height of the tooltip dom element
- const tooltipWidth = sizes.contentSize[0];
- const tooltipHeight = sizes.contentSize[1];
-
- // Start by placing the tooltip top and right relative to the mouse position
- let xPos = mouseX + TOOLTIP_POINTER_MARGIN;
- let yPos = mouseY - TOOLTIP_POINTER_MARGIN - tooltipHeight;
-
- // The tooltip is overflowing past the right edge of the window
- if (xPos + tooltipWidth >= document.documentElement.clientWidth) {
- // Attempt to place the tooltip to the left of the mouse position
- xPos = mouseX - TOOLTIP_POINTER_MARGIN - tooltipWidth;
-
- // The tooltip is overflowing past the left edge of the window
- if (xPos <= 0)
- // Place the tooltip a fixed distance from the left edge of the window
- xPos = TOOLTIP_OVERFLOW_MARGIN;
- }
-
- // The tooltip is overflowing past the top edge of the window
- if (yPos <= 0) {
- // Attempt to place the tooltip to the bottom of the mouse position
- yPos = mouseY + TOOLTIP_POINTER_MARGIN;
-
- // The tooltip is overflowing past the bottom edge of the window
- if (yPos + tooltipHeight >= document.documentElement.clientHeight)
- // Place the tooltip a fixed distance from the top edge of the window
- yPos = TOOLTIP_OVERFLOW_MARGIN;
- }
-
- // Return the position (converted back to a relative position on the canvas)
- return [xPos - (canvasRect?.x || 0), yPos - (canvasRect?.y || 0)];
- },
-};
-
export const defaultYAxis = {
scale: true,
};
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/index.ts
index 9890eb4c13e8..0301f265b051 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/index.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/index.ts
@@ -33,6 +33,7 @@ export { default as EchartsFunnelChartPlugin } from './Funnel';
export { default as EchartsTreeChartPlugin } from './Tree';
export { default as EchartsTreemapChartPlugin } from './Treemap';
export { BigNumberChartPlugin, BigNumberTotalChartPlugin } from './BigNumber';
+export { default as EchartsSunburstChartPlugin } from './Sunburst';
export { default as BoxPlotTransformProps } from './BoxPlot/transformProps';
export { default as FunnelTransformProps } from './Funnel/transformProps';
@@ -44,6 +45,7 @@ export { default as RadarTransformProps } from './Radar/transformProps';
export { default as TimeseriesTransformProps } from './Timeseries/transformProps';
export { default as TreeTransformProps } from './Tree/transformProps';
export { default as TreemapTransformProps } from './Treemap/transformProps';
+export { default as SunburstTransformProps } from './Sunburst/transformProps';
export { DEFAULT_FORM_DATA as TimeseriesDefaultFormData } from './Timeseries/constants';
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/types.ts
index 57ed64583999..d51102439f08 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/types.ts
@@ -18,10 +18,12 @@
*/
import React, { RefObject } from 'react';
import {
- BinaryQueryObjectFilterClause,
ChartDataResponseResult,
ChartProps,
+ ContextMenuFilters,
+ FilterState,
HandlerFunction,
+ PlainObject,
QueryFormColumn,
SetDataMaskHook,
} from '@superset-ui/core';
@@ -111,7 +113,7 @@ export enum LabelPositionEnum {
InsideBottomRight = 'insideBottomRight',
}
-export interface BaseChartProps extends ChartProps {
+export interface BaseChartProps extends ChartProps {
queriesData: ChartDataResponseResult[];
}
@@ -122,27 +124,31 @@ export interface BaseTransformedProps {
onContextMenu?: (
clientX: number,
clientY: number,
- filters?: BinaryQueryObjectFilterClause[],
+ filters?: ContextMenuFilters,
) => void;
+ setDataMask?: SetDataMaskHook;
+ filterState?: FilterState;
refs: Refs;
width: number;
+ emitCrossFilters?: boolean;
}
export type CrossFilterTransformedProps = {
- emitFilter: boolean;
groupby: QueryFormColumn[];
labelMap: Record;
setControlValue?: HandlerFunction;
setDataMask: SetDataMaskHook;
selectedValues: Record;
+ emitCrossFilters?: boolean;
};
export type ContextMenuTransformedProps = {
onContextMenu?: (
clientX: number,
clientY: number,
- filters?: BinaryQueryObjectFilterClause[],
+ filters?: ContextMenuFilters,
) => void;
+ setDataMask?: SetDataMaskHook;
};
export interface TitleFormData {
@@ -155,4 +161,10 @@ export interface TitleFormData {
export type StackType = boolean | null | Partial;
+export interface TreePathInfo {
+ name: string;
+ dataIndex: number;
+ value: number | number[];
+}
+
export * from './Timeseries/types';
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/utils/eventHandlers.ts b/superset-frontend/plugins/plugin-chart-echarts/src/utils/eventHandlers.ts
index 0d26b92d08df..6dafe7ba60e9 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/utils/eventHandlers.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/utils/eventHandlers.ts
@@ -16,7 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { BinaryQueryObjectFilterClause } from '@superset-ui/core';
+import {
+ BinaryQueryObjectFilterClause,
+ ContextMenuFilters,
+ DataMask,
+ QueryFormColumn,
+} from '@superset-ui/core';
import {
BaseTransformedProps,
CrossFilterTransformedProps,
@@ -28,17 +33,67 @@ export type Event = {
event: { stop: () => void; event: PointerEvent };
};
-export const clickEventHandler =
+const getCrossFilterDataMask =
(
selectedValues: Record,
- handleChange: (values: string[]) => void,
+ groupby: QueryFormColumn[],
+ labelMap: Record,
) =>
- ({ name }: { name: string }) => {
- const values = Object.values(selectedValues);
- if (values.includes(name)) {
- handleChange(values.filter(v => v !== name));
+ (value: string) => {
+ const selected = Object.values(selectedValues);
+ let values: string[];
+ if (selected.includes(value)) {
+ values = selected.filter(v => v !== value);
} else {
- handleChange([name]);
+ values = [value];
+ }
+
+ const groupbyValues = values.map(value => labelMap[value]);
+
+ return {
+ dataMask: {
+ extraFormData: {
+ filters:
+ values.length === 0
+ ? []
+ : groupby.map((col, idx) => {
+ const val = groupbyValues.map(v => v[idx]);
+ if (val === null || val === undefined)
+ return {
+ col,
+ op: 'IS NULL' as const,
+ };
+ return {
+ col,
+ op: 'IN' as const,
+ val: val as (string | number | boolean)[],
+ };
+ }),
+ },
+ filterState: {
+ value: groupbyValues.length ? groupbyValues : null,
+ selectedValues: values.length ? values : null,
+ },
+ },
+ isCurrentValueSelected: selected.includes(value),
+ };
+ };
+
+export const clickEventHandler =
+ (
+ getCrossFilterDataMask: (
+ value: string,
+ ) => ContextMenuFilters['crossFilter'],
+ setDataMask: (dataMask: DataMask) => void,
+ emitCrossFilters?: boolean,
+ ) =>
+ ({ name }: { name: string }) => {
+ if (!emitCrossFilters) {
+ return;
+ }
+ const dataMask = getCrossFilterDataMask(name)?.dataMask;
+ if (dataMask) {
+ setDataMask(dataMask);
}
};
@@ -48,16 +103,19 @@ export const contextMenuEventHandler =
CrossFilterTransformedProps)['groupby'],
onContextMenu: BaseTransformedProps['onContextMenu'],
labelMap: Record,
+ getCrossFilterDataMask: (
+ value: string,
+ ) => ContextMenuFilters['crossFilter'],
) =>
(e: Event) => {
if (onContextMenu) {
e.event.stop();
const pointerEvent = e.event.event;
- const filters: BinaryQueryObjectFilterClause[] = [];
+ const drillToDetailFilters: BinaryQueryObjectFilterClause[] = [];
if (groupby.length > 0) {
const values = labelMap[e.name];
groupby.forEach((dimension, i) =>
- filters.push({
+ drillToDetailFilters.push({
col: dimension,
op: '==',
val: values[i],
@@ -65,18 +123,36 @@ export const contextMenuEventHandler =
}),
);
}
- onContextMenu(pointerEvent.clientX, pointerEvent.clientY, filters);
+ onContextMenu(pointerEvent.clientX, pointerEvent.clientY, {
+ drillToDetail: drillToDetailFilters,
+ crossFilter: getCrossFilterDataMask(e.name),
+ });
}
};
export const allEventHandlers = (
transformedProps: BaseTransformedProps & CrossFilterTransformedProps,
- handleChange: (values: string[]) => void,
) => {
- const { groupby, selectedValues, onContextMenu, labelMap } = transformedProps;
+ const {
+ groupby,
+ onContextMenu,
+ setDataMask,
+ labelMap,
+ emitCrossFilters,
+ selectedValues,
+ } = transformedProps;
const eventHandlers: EventHandlers = {
- click: clickEventHandler(selectedValues, handleChange),
- contextmenu: contextMenuEventHandler(groupby, onContextMenu, labelMap),
+ click: clickEventHandler(
+ getCrossFilterDataMask(selectedValues, groupby, labelMap),
+ setDataMask,
+ emitCrossFilters,
+ ),
+ contextmenu: contextMenuEventHandler(
+ groupby,
+ onContextMenu,
+ labelMap,
+ getCrossFilterDataMask(selectedValues, groupby, labelMap),
+ ),
};
return eventHandlers;
};
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/utils/series.ts b/superset-frontend/plugins/plugin-chart-echarts/src/utils/series.ts
index c1b61233b6c6..649dedd68051 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/utils/series.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/utils/series.ts
@@ -113,6 +113,7 @@ export function extractSeries(
opts: {
fillNeighborValue?: number;
xAxis?: string;
+ extraMetricLabels?: string[];
removeNulls?: boolean;
stack?: StackType;
totalStackedValues?: number[];
@@ -122,6 +123,7 @@ export function extractSeries(
const {
fillNeighborValue,
xAxis = DTTM_ALIAS,
+ extraMetricLabels = [],
removeNulls = false,
stack = false,
totalStackedValues = [],
@@ -135,6 +137,7 @@ export function extractSeries(
return Object.keys(rows[0])
.filter(key => key !== xAxis && key !== DTTM_ALIAS)
+ .filter(key => !extraMetricLabels.includes(key))
.map(key => ({
id: key,
name: key,
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/utils/treeBuilder.ts b/superset-frontend/plugins/plugin-chart-echarts/src/utils/treeBuilder.ts
new file mode 100644
index 000000000000..97916997d4d4
--- /dev/null
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/utils/treeBuilder.ts
@@ -0,0 +1,88 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 { DataRecord, DataRecordValue } from '@superset-ui/core';
+import _ from 'lodash';
+
+export type TreeNode = {
+ name: DataRecordValue;
+ value: number;
+ secondaryValue: number;
+ groupBy: string;
+ children?: TreeNode[];
+};
+
+function getMetricValue(datum: DataRecord, metric: string) {
+ return _.isNumber(datum[metric]) ? (datum[metric] as number) : 0;
+}
+
+export function treeBuilder(
+ data: DataRecord[],
+ groupBy: string[],
+ metric: string,
+ secondaryMetric?: string,
+): TreeNode[] {
+ const [curGroupBy, ...restGroupby] = groupBy;
+ const curData = _.groupBy(data, curGroupBy);
+ return _.transform(
+ curData,
+ (result, value, key) => {
+ const name = curData[key][0][curGroupBy]!;
+ if (!restGroupby.length) {
+ (value ?? []).forEach(datum => {
+ const metricValue = getMetricValue(datum, metric);
+ const secondaryValue = secondaryMetric
+ ? getMetricValue(datum, secondaryMetric)
+ : metricValue;
+ const item = {
+ name,
+ value: metricValue,
+ secondaryValue,
+ groupBy: curGroupBy,
+ };
+ result.push(item);
+ });
+ } else {
+ const children = treeBuilder(
+ value,
+ restGroupby,
+ metric,
+ secondaryMetric,
+ );
+ const metricValue = children.reduce(
+ (prev, cur) => prev + (cur.value as number),
+ 0,
+ );
+ const secondaryValue = secondaryMetric
+ ? children.reduce(
+ (prev, cur) => prev + (cur.secondaryValue as number),
+ 0,
+ )
+ : metricValue;
+ result.push({
+ name,
+ children,
+ value: metricValue,
+ secondaryValue,
+ groupBy: curGroupBy,
+ });
+ }
+ },
+ [] as TreeNode[],
+ );
+}
diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/buildQuery.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/buildQuery.test.ts
index 304f5b7065cf..0d0f2f838990 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/buildQuery.test.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/buildQuery.test.ts
@@ -27,7 +27,6 @@ import { BoxPlotQueryFormData } from '../../src/BoxPlot/types';
describe('BoxPlot buildQuery', () => {
const formData: BoxPlotQueryFormData = {
...DEFAULT_TITLE_FORM_DATA,
- emitFilter: false,
columns: [],
datasource: '5__table',
granularity_sqla: 'ds',
diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Graph/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Graph/transformProps.test.ts
index 61adda8a98c7..100e39a27e82 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/test/Graph/transformProps.test.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/test/Graph/transformProps.test.ts
@@ -71,6 +71,7 @@ describe('EchartsGraph transformProps', () => {
expect.objectContaining({
data: [
{
+ col: 'source_column',
category: undefined,
id: '0',
label: { show: true },
@@ -88,6 +89,7 @@ describe('EchartsGraph transformProps', () => {
value: 6,
},
{
+ col: 'target_column',
category: undefined,
id: '1',
label: { show: true },
@@ -105,6 +107,7 @@ describe('EchartsGraph transformProps', () => {
value: 6,
},
{
+ col: 'source_column',
category: undefined,
id: '2',
label: { show: true },
@@ -122,6 +125,7 @@ describe('EchartsGraph transformProps', () => {
value: 5,
},
{
+ col: 'target_column',
category: undefined,
id: '3',
label: { show: true },
@@ -229,6 +233,7 @@ describe('EchartsGraph transformProps', () => {
data: [
{
id: '0',
+ col: 'source_column',
name: 'source_value',
value: 11,
symbolSize: 10,
@@ -243,6 +248,7 @@ describe('EchartsGraph transformProps', () => {
},
{
id: '1',
+ col: 'target_column',
name: 'target_value',
value: 11,
symbolSize: 10,
diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/buildQuery.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/buildQuery.test.ts
index 3796870fd883..15d9e2cbb6e1 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/buildQuery.test.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/buildQuery.test.ts
@@ -17,7 +17,7 @@
* under the License.
*/
import {
- ComparisionType,
+ ComparisonType,
FreeFormAdhocFilter,
RollingType,
TimeGranularity,
@@ -46,7 +46,6 @@ const formDataMixedChart = {
row_limit: 10,
timeseries_limit_metric: 'count',
order_desc: true,
- emit_filter: true,
truncate_metric: true,
show_empty_columns: true,
// -- query b
@@ -63,7 +62,6 @@ const formDataMixedChart = {
row_limit_b: 100,
timeseries_limit_metric_b: undefined,
order_desc_b: false,
- emit_filter_b: undefined,
truncate_metric_b: true,
show_empty_columns_b: true,
// chart configs
@@ -74,14 +72,14 @@ const formDataMixedChartWithAA = {
...formDataMixedChart,
rolling_type: RollingType.Cumsum,
time_compare: ['1 years ago'],
- comparison_type: ComparisionType.Values,
+ comparison_type: ComparisonType.Values,
resample_rule: '1AS',
resample_method: 'zerofill',
rolling_type_b: RollingType.Sum,
rolling_periods_b: 1,
min_periods_b: 1,
- comparison_type_b: ComparisionType.Difference,
+ comparison_type_b: ComparisonType.Difference,
time_compare_b: ['3 years ago'],
resample_rule_b: '1A',
resample_method_b: 'asfreq',
@@ -200,6 +198,21 @@ test('should compile AA in query A', () => {
// time comparison
expect(query.time_offsets).toEqual(['1 years ago']);
+ // pivot
+ expect(
+ query.post_processing?.find(operator => operator?.operation === 'pivot'),
+ ).toEqual({
+ operation: 'pivot',
+ options: {
+ index: ['__timestamp'],
+ columns: ['foo'],
+ drop_missing_columns: false,
+ aggregates: {
+ 'sum(sales)': { operator: 'mean' },
+ 'sum(sales)__1 years ago': { operator: 'mean' },
+ },
+ },
+ });
// cumsum
expect(
// prettier-ignore
@@ -386,20 +399,14 @@ test('should convert a queryObject with x-axis although FF is disabled', () => {
});
test("shouldn't convert a queryObject with axis although FF is enabled", () => {
- let windowSpy: any;
-
- beforeAll(() => {
+ const windowSpy = jest
+ .spyOn(window, 'window', 'get')
// @ts-ignore
- windowSpy = jest.spyOn(window, 'window', 'get').mockImplementation(() => ({
+ .mockImplementation(() => ({
featureFlags: {
GENERIC_CHART_AXES: true,
},
}));
- });
-
- afterAll(() => {
- windowSpy.mockRestore();
- });
const { queries } = buildQuery(formDataMixedChart);
expect(queries[0]).toEqual(
@@ -470,4 +477,40 @@ test("shouldn't convert a queryObject with axis although FF is enabled", () => {
],
}),
);
+
+ windowSpy.mockRestore();
+});
+
+test('ensure correct pivot columns with GENERIC_CHART_AXES enabled', () => {
+ const windowSpy = jest
+ .spyOn(window, 'window', 'get')
+ // @ts-ignore
+ .mockImplementation(() => ({
+ featureFlags: {
+ GENERIC_CHART_AXES: true,
+ },
+ }));
+
+ const query = buildQuery({ ...formDataMixedChartWithAA, x_axis: 'ds' })
+ .queries[0];
+
+ expect(query.time_offsets).toEqual(['1 years ago']);
+
+ // pivot
+ expect(
+ query.post_processing?.find(operator => operator?.operation === 'pivot'),
+ ).toEqual({
+ operation: 'pivot',
+ options: {
+ index: ['ds'],
+ columns: ['foo'],
+ drop_missing_columns: false,
+ aggregates: {
+ 'sum(sales)': { operator: 'mean' },
+ 'sum(sales)__1 years ago': { operator: 'mean' },
+ },
+ },
+ });
+
+ windowSpy.mockRestore();
});
diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
index df48354a8158..63ca50449ed0 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
@@ -87,6 +87,44 @@ describe('EchartsTimeseries transformProps', () => {
);
});
+ it('should transform chart props for horizontal viz', () => {
+ const chartProps = new ChartProps({
+ ...chartPropsConfig,
+ formData: {
+ ...formData,
+ orientation: 'horizontal',
+ },
+ });
+ expect(transformProps(chartProps as EchartsTimeseriesChartProps)).toEqual(
+ expect.objectContaining({
+ width: 800,
+ height: 600,
+ echartOptions: expect.objectContaining({
+ legend: expect.objectContaining({
+ data: ['San Francisco', 'New York'],
+ }),
+ series: expect.arrayContaining([
+ expect.objectContaining({
+ data: [
+ [1, 599616000000],
+ [3, 599916000000],
+ ],
+ name: 'San Francisco',
+ }),
+ expect.objectContaining({
+ data: [
+ [2, 599616000000],
+ [4, 599916000000],
+ ],
+ name: 'New York',
+ }),
+ ]),
+ yAxis: expect.objectContaining({ inverse: true }),
+ }),
+ }),
+ );
+ });
+
it('should add a formula annotation to viz', () => {
const formula: FormulaAnnotationLayer = {
name: 'My Formula',
@@ -459,4 +497,35 @@ describe('Does transformProps transform series correctly', () => {
});
});
});
+
+ it('should remove time shift labels from label_map', () => {
+ const updatedChartPropsConfig = {
+ ...chartPropsConfig,
+ formData: {
+ ...formData,
+ timeCompare: ['1 year ago'],
+ },
+ queriesData: [
+ {
+ ...queriesData[0],
+ label_map: {
+ '1 year ago, foo1, bar1': ['1 year ago', 'foo1', 'bar1'],
+ '1 year ago, foo2, bar2': ['1 year ago', 'foo2', 'bar2'],
+ 'foo1, bar1': ['foo1', 'bar1'],
+ 'foo2, bar2': ['foo2', 'bar2'],
+ },
+ },
+ ],
+ };
+ const chartProps = new ChartProps(updatedChartPropsConfig);
+ const transformedProps = transformProps(
+ chartProps as EchartsTimeseriesChartProps,
+ );
+ expect(transformedProps.labelMap).toEqual({
+ '1 year ago, foo1, bar1': ['foo1', 'bar1'],
+ '1 year ago, foo2, bar2': ['foo2', 'bar2'],
+ 'foo1, bar1': ['foo1', 'bar1'],
+ 'foo2, bar2': ['foo2', 'bar2'],
+ });
+ });
});
diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/utils/treeBuilder.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/utils/treeBuilder.test.ts
new file mode 100644
index 000000000000..b91349a89535
--- /dev/null
+++ b/superset-frontend/plugins/plugin-chart-echarts/test/utils/treeBuilder.test.ts
@@ -0,0 +1,274 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 { treeBuilder } from '../../src/utils/treeBuilder';
+
+describe('test treeBuilder', () => {
+ const data = [
+ {
+ foo: 'a-1',
+ bar: 'a',
+ count: 2,
+ count2: 3,
+ },
+ {
+ foo: 'a-2',
+ bar: 'a',
+ count: 2,
+ count2: 3,
+ },
+ {
+ foo: 'b-1',
+ bar: 'b',
+ count: 2,
+ count2: 3,
+ },
+ {
+ foo: 'b-2',
+ bar: 'b',
+ count: 2,
+ count2: 3,
+ },
+ {
+ foo: 'c-1',
+ bar: 'c',
+ count: 2,
+ count2: 3,
+ },
+ {
+ foo: 'c-2',
+ bar: 'c',
+ count: 2,
+ count2: 3,
+ },
+ {
+ foo: 'd-1',
+ bar: 'd',
+ count: 2,
+ count2: 3,
+ },
+ ];
+ it('should build tree as expected', () => {
+ const tree = treeBuilder(data, ['foo', 'bar'], 'count');
+ expect(tree).toEqual([
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'a',
+ secondaryValue: 2,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'a-1',
+ secondaryValue: 2,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'a',
+ secondaryValue: 2,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'a-2',
+ secondaryValue: 2,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'b',
+ secondaryValue: 2,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'b-1',
+ secondaryValue: 2,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'b',
+ secondaryValue: 2,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'b-2',
+ secondaryValue: 2,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'c',
+ secondaryValue: 2,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'c-1',
+ secondaryValue: 2,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'c',
+ secondaryValue: 2,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'c-2',
+ secondaryValue: 2,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'd',
+ secondaryValue: 2,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'd-1',
+ secondaryValue: 2,
+ value: 2,
+ },
+ ]);
+ });
+
+ it('should build tree with secondaryValue as expected', () => {
+ const tree = treeBuilder(data, ['foo', 'bar'], 'count', 'count2');
+ expect(tree).toEqual([
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'a',
+ secondaryValue: 3,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'a-1',
+ secondaryValue: 3,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'a',
+ secondaryValue: 3,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'a-2',
+ secondaryValue: 3,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'b',
+ secondaryValue: 3,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'b-1',
+ secondaryValue: 3,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'b',
+ secondaryValue: 3,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'b-2',
+ secondaryValue: 3,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'c',
+ secondaryValue: 3,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'c-1',
+ secondaryValue: 3,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'c',
+ secondaryValue: 3,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'c-2',
+ secondaryValue: 3,
+ value: 2,
+ },
+ {
+ children: [
+ {
+ groupBy: 'bar',
+ name: 'd',
+ secondaryValue: 3,
+ value: 2,
+ },
+ ],
+ groupBy: 'foo',
+ name: 'd-1',
+ secondaryValue: 3,
+ value: 2,
+ },
+ ]);
+ });
+});
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/package.json b/superset-frontend/plugins/plugin-chart-handlebars/package.json
index 38884b36df3a..0a14440b5bd7 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/package.json
+++ b/superset-frontend/plugins/plugin-chart-handlebars/package.json
@@ -36,7 +36,7 @@
"lodash": "^4.17.11",
"moment": "^2.26.0",
"react": "^16.13.1",
- "react-ace": "^9.4.4",
+ "react-ace": "^10.1.0",
"react-dom": "^16.13.1"
},
"devDependencies": {
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/components/ControlHeader/controlHeader.tsx b/superset-frontend/plugins/plugin-chart-handlebars/src/components/ControlHeader/controlHeader.tsx
index 2dac822f8f2b..460b56f19691 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/src/components/ControlHeader/controlHeader.tsx
+++ b/superset-frontend/plugins/plugin-chart-handlebars/src/components/ControlHeader/controlHeader.tsx
@@ -26,8 +26,6 @@ export const ControlHeader = ({
children,
}: ControlHeaderProps): JSX.Element => (
-
- {children}
-
+ {children}
);
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/components/Handlebars/HandlebarsViewer.tsx b/superset-frontend/plugins/plugin-chart-handlebars/src/components/Handlebars/HandlebarsViewer.tsx
index 77ebe65a8043..371b4f48f91a 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/src/components/Handlebars/HandlebarsViewer.tsx
+++ b/superset-frontend/plugins/plugin-chart-handlebars/src/components/Handlebars/HandlebarsViewer.tsx
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { SafeMarkdown, styled } from '@superset-ui/core';
+import { SafeMarkdown, styled, t } from '@superset-ui/core';
import Handlebars from 'handlebars';
import moment from 'moment';
import React, { useMemo, useState } from 'react';
@@ -34,6 +34,13 @@ export const HandlebarsViewer = ({
}: HandlebarsViewerProps) => {
const [renderedTemplate, setRenderedTemplate] = useState('');
const [error, setError] = useState('');
+ const appContainer = document.getElementById('app');
+ const { common } = JSON.parse(
+ appContainer?.getAttribute('data-bootstrap') || '{}',
+ );
+ const htmlSanitization = common?.conf?.HTML_SANITIZATION ?? true;
+ const htmlSchemaOverrides =
+ common?.conf?.HTML_SANITIZATION_SCHEMA_EXTENSIONS || {};
useMemo(() => {
try {
@@ -56,9 +63,15 @@ export const HandlebarsViewer = ({
}
if (renderedTemplate) {
- return ;
+ return (
+
+ );
}
- return Loading...
;
+ return {t('Loading...')}
;
};
// usage: {{dateFormat my_date format="MMMM YYYY"}}
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/images/example1.jpg b/superset-frontend/plugins/plugin-chart-handlebars/src/images/example1.jpg
new file mode 100644
index 000000000000..2307cec80d2d
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-handlebars/src/images/example1.jpg differ
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/images/example2.jpg b/superset-frontend/plugins/plugin-chart-handlebars/src/images/example2.jpg
new file mode 100644
index 000000000000..94dc10538511
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-handlebars/src/images/example2.jpg differ
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx
index e34394b3043a..03904e54c83f 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx
@@ -18,7 +18,6 @@
*/
import {
ControlPanelConfig,
- emitFilterControl,
getStandardizedControls,
sections,
} from '@superset-ui/chart-controls';
@@ -65,7 +64,6 @@ const config: ControlPanelConfig = {
[includeTimeControlSetItem],
[showTotalsControlSetItem],
['adhoc_filters'],
- emitFilterControl,
],
},
{
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/style.tsx b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/style.tsx
index d3776e77827d..f89a1a6679e1 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/style.tsx
+++ b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/style.tsx
@@ -20,8 +20,9 @@ import {
ControlSetItem,
CustomControlConfig,
sharedControls,
+ InfoTooltipWithTrigger,
} from '@superset-ui/chart-controls';
-import { t } from '@superset-ui/core';
+import { t, useTheme } from '@superset-ui/core';
import React from 'react';
import { CodeEditor } from '../../components/CodeEditor/CodeEditor';
import { ControlHeader } from '../../components/ControlHeader/controlHeader';
@@ -32,17 +33,32 @@ interface StyleCustomControlProps {
}
const StyleControl = (props: CustomControlConfig) => {
- const val = String(
- props?.value ? props?.value : props?.default ? props?.default : '',
- );
+ const theme = useTheme();
+
+ const defaultValue = props?.value
+ ? undefined
+ : `/*
+ .data-list {
+ background-color: yellow;
+ }
+*/`;
return (
- {props.label}
+
+
+ {props.label}
+
+
+
{
debounceFunc(props.onChange, source || '');
}}
@@ -58,11 +74,6 @@ export const styleControlSetItem: ControlSetItem = {
type: StyleControl,
label: t('CSS Styles'),
description: t('CSS applied to the chart'),
- default: `/*
-.data-list {
- background-color: yellow;
-}
-*/`,
isInt: false,
renderTrigger: true,
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/index.ts b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/index.ts
index 48e2d5d904b0..41249f2d7162 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/index.ts
+++ b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/index.ts
@@ -18,6 +18,8 @@
*/
import { ChartMetadata, ChartPlugin, t } from '@superset-ui/core';
import thumbnail from '../images/thumbnail.png';
+import example1 from '../images/example1.jpg';
+import example2 from '../images/example2.jpg';
import buildQuery from './buildQuery';
import controlPanel from './controlPanel';
import transformProps from './transformProps';
@@ -38,6 +40,7 @@ export default class HandlebarsChartPlugin extends ChartPlugin {
description: t('Write a handlebars template to render the data'),
name: t('Handlebars'),
thumbnail,
+ exampleGallery: [{ url: example1 }, { url: example2 }],
});
super({
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/types.ts b/superset-frontend/plugins/plugin-chart-handlebars/src/types.ts
index 2a363059fa7d..741d3b982c48 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/src/types.ts
+++ b/superset-frontend/plugins/plugin-chart-handlebars/src/types.ts
@@ -51,7 +51,6 @@ export type HandlebarsQueryFormData = QueryFormData &
all_columns?: QueryFormMetric[] | null;
order_desc?: boolean;
table_timestamp_format?: string;
- emit_filter?: boolean;
granularitySqla?: string;
time_grain_sqla?: TimeGranularity;
column_config?: Record;
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/test/plugin/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-handlebars/test/plugin/transformProps.test.ts
index 62903ad73f42..5910ea0f493e 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/test/plugin/transformProps.test.ts
+++ b/superset-frontend/plugins/plugin-chart-handlebars/test/plugin/transformProps.test.ts
@@ -20,7 +20,7 @@ import { ChartProps, QueryFormData, supersetTheme } from '@superset-ui/core';
import { HandlebarsQueryFormData } from '../../src/types';
import transformProps from '../../src/plugin/transformProps';
-describe('Handlebars tranformProps', () => {
+describe('Handlebars transformProps', () => {
const formData: HandlebarsQueryFormData = {
colorScheme: 'bnbColors',
datasource: '3__table',
@@ -40,7 +40,7 @@ describe('Handlebars tranformProps', () => {
theme: supersetTheme,
});
- it('should tranform chart props for viz', () => {
+ it('should transform chart props for viz', () => {
expect(transformProps(chartProps)).toEqual(
expect.objectContaining({
width: 800,
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/types/external.d.ts b/superset-frontend/plugins/plugin-chart-handlebars/types/external.d.ts
index a07e4dd26715..ae61945f0535 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/types/external.d.ts
+++ b/superset-frontend/plugins/plugin-chart-handlebars/types/external.d.ts
@@ -20,5 +20,5 @@ declare module '*.png' {
const value: any;
export default value;
}
-
+declare module '*.jpg';
declare module 'just-handlebars-helpers';
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/package.json b/superset-frontend/plugins/plugin-chart-pivot-table/package.json
index bed12a2e7250..9f803467bd4b 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/package.json
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/package.json
@@ -29,7 +29,7 @@
"peerDependencies": {
"@superset-ui/chart-controls": "*",
"@superset-ui/core": "*",
- "@ant-design/icons": "^4.2.2",
+ "@ant-design/icons": "^5.0.1",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"prop-types": "*",
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/PivotTableChart.tsx b/superset-frontend/plugins/plugin-chart-pivot-table/src/PivotTableChart.tsx
index 2063ab95dee6..53e98fd31df0 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/src/PivotTableChart.tsx
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/PivotTableChart.tsx
@@ -29,6 +29,8 @@ import {
useTheme,
isAdhocColumn,
BinaryQueryObjectFilterClause,
+ t,
+ getSelectedText,
} from '@superset-ui/core';
import { PivotTable, sortAs, aggregatorTemplates } from './react-pivottable';
import {
@@ -55,7 +57,7 @@ const PivotTableWrapper = styled.div`
overflow: auto;
`;
-const METRIC_KEY = 'metric';
+const METRIC_KEY = t('metric');
const vals = ['value'];
const StyledPlusSquareOutlined = styled(PlusSquareOutlined)`
@@ -135,7 +137,7 @@ export default function PivotTableChart(props: PivotTableProps) {
colTotals,
rowTotals,
valueFormat,
- emitFilter,
+ emitCrossFilters,
setDataMask,
selectedFilters,
verboseMap,
@@ -278,6 +280,70 @@ export default function PivotTableChart(props: PivotTableProps) {
[groupbyColumnsRaw, groupbyRowsRaw, setDataMask],
);
+ const getCrossFilterDataMask = useCallback(
+ (value: { [key: string]: string }) => {
+ const isActiveFilterValue = (key: string, val: DataRecordValue) =>
+ !!selectedFilters && selectedFilters[key]?.includes(val);
+
+ if (!value) {
+ return undefined;
+ }
+
+ const [key, val] = Object.entries(value)[0];
+ let values = { ...selectedFilters };
+ if (isActiveFilterValue(key, val)) {
+ values = {};
+ } else {
+ values = { [key]: [val] };
+ }
+
+ const filterKeys = Object.keys(values);
+ const groupby = [...groupbyRowsRaw, ...groupbyColumnsRaw];
+ return {
+ dataMask: {
+ extraFormData: {
+ filters:
+ filterKeys.length === 0
+ ? undefined
+ : filterKeys.map(key => {
+ const val = values?.[key];
+ const col =
+ groupby.find(item => {
+ if (isPhysicalColumn(item)) {
+ return item === key;
+ }
+ if (isAdhocColumn(item)) {
+ return item.label === key;
+ }
+ return false;
+ }) ?? '';
+ if (val === null || val === undefined)
+ return {
+ col,
+ op: 'IS NULL' as const,
+ };
+ return {
+ col,
+ op: 'IN' as const,
+ val: val as (string | number | boolean)[],
+ };
+ }),
+ },
+ filterState: {
+ value:
+ values && Object.keys(values).length
+ ? Object.values(values)
+ : null,
+ selectedFilters:
+ values && Object.keys(values).length ? values : null,
+ },
+ },
+ isCurrentValueSelected: isActiveFilterValue(key, val),
+ };
+ },
+ [groupbyColumnsRaw, groupbyRowsRaw, selectedFilters],
+ );
+
const toggleFilter = useCallback(
(
e: MouseEvent,
@@ -287,7 +353,12 @@ export default function PivotTableChart(props: PivotTableProps) {
isSubtotal: boolean,
isGrandTotal: boolean,
) => {
- if (isSubtotal || isGrandTotal || !emitFilter) {
+ if (isSubtotal || isGrandTotal || !emitCrossFilters) {
+ return;
+ }
+
+ // allow selecting text in a cell
+ if (getSelectedText()) {
return;
}
@@ -327,7 +398,7 @@ export default function PivotTableChart(props: PivotTableProps) {
}
handleChange(updatedFilters);
},
- [emitFilter, selectedFilters, handleChange],
+ [emitCrossFilters, selectedFilters, handleChange],
);
const tableOptions = useMemo(
@@ -336,7 +407,7 @@ export default function PivotTableChart(props: PivotTableProps) {
clickColumnHeaderCallback: toggleFilter,
colTotals,
rowTotals,
- highlightHeaderCellsOnHover: emitFilter,
+ highlightHeaderCellsOnHover: emitCrossFilters,
highlightedHeaderCells: selectedFilters,
omittedHighlightHeaderGroups: [METRIC_KEY],
cellColorFormatters: { [METRIC_KEY]: metricColorFormatters },
@@ -345,7 +416,7 @@ export default function PivotTableChart(props: PivotTableProps) {
[
colTotals,
dateFormatters,
- emitFilter,
+ emitCrossFilters,
metricColorFormatters,
rowTotals,
selectedFilters,
@@ -368,18 +439,19 @@ export default function PivotTableChart(props: PivotTableProps) {
e: MouseEvent,
colKey: (string | number | boolean)[] | undefined,
rowKey: (string | number | boolean)[] | undefined,
+ dataPoint: { [key: string]: string },
) => {
if (onContextMenu) {
e.preventDefault();
e.stopPropagation();
- const filters: BinaryQueryObjectFilterClause[] = [];
+ const drillToDetailFilters: BinaryQueryObjectFilterClause[] = [];
if (colKey && colKey.length > 1) {
colKey.forEach((val, i) => {
const col = cols[i];
const formatter = dateFormatters[col];
const formattedVal = formatter?.(val as number) || String(val);
if (i > 0) {
- filters.push({
+ drillToDetailFilters.push({
col,
op: '==',
val,
@@ -394,7 +466,7 @@ export default function PivotTableChart(props: PivotTableProps) {
const col = rows[i];
const formatter = dateFormatters[col];
const formattedVal = formatter?.(val as number) || String(val);
- filters.push({
+ drillToDetailFilters.push({
col,
op: '==',
val,
@@ -403,7 +475,10 @@ export default function PivotTableChart(props: PivotTableProps) {
});
});
}
- onContextMenu(e.clientX, e.clientY, filters);
+ onContextMenu(e.clientX, e.clientY, {
+ drillToDetail: drillToDetailFilters,
+ crossFilter: getCrossFilterDataMask(dataPoint),
+ });
}
},
[cols, dateFormatters, onContextMenu, rows, timeGrainSqla],
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/images/example.jpg b/superset-frontend/plugins/plugin-chart-pivot-table/src/images/example.jpg
new file mode 100644
index 000000000000..e4f534ed0a13
Binary files /dev/null and b/superset-frontend/plugins/plugin-chart-pivot-table/src/images/example.jpg differ
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx
index a577fb6058d8..1b01e37a4c11 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx
@@ -30,10 +30,8 @@ import {
import {
ControlPanelConfig,
D3_TIME_FORMAT_OPTIONS,
- formatSelectOptions,
sections,
sharedControls,
- emitFilterControl,
Dataset,
getStandardizedControls,
} from '@superset-ui/chart-controls';
@@ -128,7 +126,6 @@ const config: ControlPanelConfig = {
},
],
['adhoc_filters'],
- emitFilterControl,
['series_limit'],
[
{
@@ -178,26 +175,29 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Aggregation function'),
clearable: false,
- choices: formatSelectOptions([
- 'Count',
- 'Count Unique Values',
- 'List Unique Values',
- 'Sum',
- 'Average',
- 'Median',
- 'Sample Variance',
- 'Sample Standard Deviation',
- 'Minimum',
- 'Maximum',
- 'First',
- 'Last',
- 'Sum as Fraction of Total',
- 'Sum as Fraction of Rows',
- 'Sum as Fraction of Columns',
- 'Count as Fraction of Total',
- 'Count as Fraction of Rows',
- 'Count as Fraction of Columns',
- ]),
+ choices: [
+ ['Count', t('Count')],
+ ['Count Unique Values', t('Count Unique Values')],
+ ['List Unique Values', t('List Unique Values')],
+ ['Sum', t('Sum')],
+ ['Average', t('Average')],
+ ['Median', t('Median')],
+ ['Sample Variance', t('Sample Variance')],
+ ['Sample Standard Deviation', t('Sample Standard Deviation')],
+ ['Minimum', t('Minimum')],
+ ['Maximum', t('Maximum')],
+ ['First', t('First')],
+ ['Last', t('Last')],
+ ['Sum as Fraction of Total', t('Sum as Fraction of Total')],
+ ['Sum as Fraction of Rows', t('Sum as Fraction of Rows')],
+ ['Sum as Fraction of Columns', t('Sum as Fraction of Columns')],
+ ['Count as Fraction of Total', t('Count as Fraction of Total')],
+ ['Count as Fraction of Rows', t('Count as Fraction of Rows')],
+ [
+ 'Count as Fraction of Columns',
+ t('Count as Fraction of Columns'),
+ ],
+ ],
default: 'Sum',
description: t(
'Aggregate function to apply when pivoting and computing the total rows and columns',
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/index.ts b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/index.ts
index f65eefebbe89..b2d355f0fff2 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/index.ts
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/index.ts
@@ -28,6 +28,7 @@ import buildQuery from './buildQuery';
import controlPanel from './controlPanel';
import transformProps from './transformProps';
import thumbnail from '../images/thumbnail.png';
+import example from '../images/example.jpg';
import { PivotTableQueryFormData } from '../types';
export default class PivotTableChartPlugin extends ChartPlugin<
@@ -51,7 +52,8 @@ export default class PivotTableChartPlugin extends ChartPlugin<
description: t(
'Used to summarize a set of data by grouping together multiple statistics along two axes. Examples: Sales numbers by region and month, tasks by status and assignee, active users by age and location. Not the most visually stunning visualization, but highly informative and versatile.',
),
- name: t('Pivot Table v2'),
+ exampleGallery: [{ url: example }],
+ name: t('Pivot Table'),
tags: [t('Additive'), t('Report'), t('Tabular'), t('Popular')],
thumbnail,
});
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/transformProps.ts b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/transformProps.ts
index 546882274f0f..43d73e6193ea 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/transformProps.ts
@@ -80,6 +80,7 @@ export default function transformProps(chartProps: ChartProps) {
hooks: { setDataMask = () => {}, onContextMenu },
filterState,
datasource: { verboseMap = {}, columnFormats = {} },
+ emitCrossFilters,
} = chartProps;
const { data, colnames, coltypes } = queriesData[0];
const {
@@ -98,7 +99,6 @@ export default function transformProps(chartProps: ChartProps) {
rowTotals,
valueFormat,
dateFormat,
- emitFilter,
metricsLayout,
conditionalFormatting,
timeGrainSqla,
@@ -157,7 +157,7 @@ export default function transformProps(chartProps: ChartProps) {
colTotals,
rowTotals,
valueFormat,
- emitFilter,
+ emitCrossFilters,
setDataMask,
selectedFilters,
verboseMap,
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx b/superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx
index ea036e99e296..4ca3f6d5af84 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx
@@ -18,6 +18,7 @@
*/
import React from 'react';
+import { t } from '@superset-ui/core';
import PropTypes from 'prop-types';
import { PivotData, flatKey } from './utilities';
import { Styles } from './Styles';
@@ -392,6 +393,7 @@ export class TableRenderer extends React.Component {
// Iterate through columns. Jump over duplicate values.
let i = 0;
while (i < visibleColKeys.length) {
+ let handleContextMenu;
const colKey = visibleColKeys[i];
const colSpan = attrIdx < colKey.length ? colAttrSpans[i][attrIdx] : 1;
let colLabelClass = 'pvtColLabel';
@@ -401,6 +403,10 @@ export class TableRenderer extends React.Component {
!omittedHighlightHeaderGroups.includes(colAttrs[attrIdx])
) {
colLabelClass += ' hoverable';
+ handleContextMenu = e =>
+ this.props.onContextMenu(e, colKey, undefined, {
+ [attrName]: colKey[attrIdx],
+ });
}
if (
highlightedHeaderCells &&
@@ -433,6 +439,7 @@ export class TableRenderer extends React.Component {
attrIdx,
this.props.tableOptions.clickColumnHeaderCallback,
)}
+ onContextMenu={handleContextMenu}
>
{displayHeaderCell(
needToggle,
@@ -462,7 +469,7 @@ export class TableRenderer extends React.Component {
true,
)}
>
- Subtotal
+ {t('Subtotal')}
,
);
}
@@ -486,7 +493,9 @@ export class TableRenderer extends React.Component {
true,
)}
>
- {`Total (${this.props.aggregatorName})`}
+ {t('Total (%(aggregatorName)s)', {
+ aggregatorName: t(this.props.aggregatorName),
+ })}
) : null;
@@ -549,7 +558,9 @@ export class TableRenderer extends React.Component {
)}
>
{colAttrs.length === 0
- ? `Total (${this.props.aggregatorName})`
+ ? t('Total (%(aggregatorName)s)', {
+ aggregatorName: t(this.props.aggregatorName),
+ })
: null}
@@ -585,12 +596,17 @@ export class TableRenderer extends React.Component {
const colIncrSpan = colAttrs.length !== 0 ? 1 : 0;
const attrValueCells = rowKey.map((r, i) => {
+ let handleContextMenu;
let valueCellClassName = 'pvtRowLabel';
if (
highlightHeaderCellsOnHover &&
!omittedHighlightHeaderGroups.includes(rowAttrs[i])
) {
valueCellClassName += ' hoverable';
+ handleContextMenu = e =>
+ this.props.onContextMenu(e, undefined, rowKey, {
+ [rowAttrs[i]]: r,
+ });
}
if (
highlightedHeaderCells &&
@@ -626,6 +642,7 @@ export class TableRenderer extends React.Component {
i,
this.props.tableOptions.clickRowHeaderCallback,
)}
+ onContextMenu={handleContextMenu}
>
{displayHeaderCell(
needRowToggle,
@@ -658,7 +675,7 @@ export class TableRenderer extends React.Component {
true,
)}
>
- Subtotal
+ {t('Subtotal')}
) : null;
@@ -763,7 +780,9 @@ export class TableRenderer extends React.Component {
true,
)}
>
- {`Total (${this.props.aggregatorName})`}
+ {t('Total (%(aggregatorName)s)', {
+ aggregatorName: t(this.props.aggregatorName),
+ })}
);
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/types.ts b/superset-frontend/plugins/plugin-chart-pivot-table/src/types.ts
index 9c0523b582b6..8cf9a12ea350 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/src/types.ts
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/types.ts
@@ -26,8 +26,8 @@ import {
NumberFormatter,
QueryFormMetric,
QueryFormColumn,
- BinaryQueryObjectFilterClause,
TimeGranularity,
+ ContextMenuFilters,
} from '@superset-ui/core';
import { ColorFormatters } from '@superset-ui/chart-controls';
@@ -65,7 +65,7 @@ interface PivotTableCustomizeProps {
rowTotals: boolean;
valueFormat: string;
setDataMask: SetDataMaskHook;
- emitFilter?: boolean;
+ emitCrossFilters?: boolean;
selectedFilters?: SelectedFiltersType;
verboseMap: JsonObject;
columnFormats: JsonObject;
@@ -77,7 +77,7 @@ interface PivotTableCustomizeProps {
onContextMenu?: (
clientX: number,
clientY: number,
- filters?: BinaryQueryObjectFilterClause[],
+ filters?: ContextMenuFilters,
) => void;
timeGrainSqla?: TimeGranularity;
}
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/transformProps.test.ts
index 26c938e371bc..3edb4619afce 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/transformProps.test.ts
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/transformProps.test.ts
@@ -38,7 +38,6 @@ describe('PivotTableChart transformProps', () => {
colTotals: true,
rowTotals: true,
valueFormat: 'SMART_NUMBER',
- emitFilter: false,
metricsLayout: MetricsLayoutEnum.COLUMNS,
viz_type: '',
datasource: '',
@@ -83,13 +82,13 @@ describe('PivotTableChart transformProps', () => {
rowTotals: true,
valueFormat: 'SMART_NUMBER',
data: [{ name: 'Hulk', sum__num: 1, __timestamp: 599616000000 }],
- emitFilter: false,
setDataMask,
selectedFilters: {},
verboseMap: {},
metricsLayout: MetricsLayoutEnum.COLUMNS,
metricColorFormatters: [],
dateFormatters: {},
+ emitCrossFilters: false,
columnFormats: {},
});
});
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/types/external.d.ts b/superset-frontend/plugins/plugin-chart-pivot-table/types/external.d.ts
index a273f3a2ba3e..ecdf68a7452c 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/types/external.d.ts
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/types/external.d.ts
@@ -21,3 +21,5 @@ declare module '*.png' {
const value: any;
export default value;
}
+
+declare module '*.jpg';
diff --git a/superset-frontend/plugins/plugin-chart-table/package.json b/superset-frontend/plugins/plugin-chart-table/package.json
index 7ecfe622cb7c..293413805d13 100644
--- a/superset-frontend/plugins/plugin-chart-table/package.json
+++ b/superset-frontend/plugins/plugin-chart-table/package.json
@@ -28,8 +28,9 @@
"dependencies": {
"@react-icons/all-files": "^4.1.0",
"@types/d3-array": "^2.9.0",
- "@types/react-table": "^7.0.29",
"@types/enzyme": "^3.10.5",
+ "@types/react-table": "^7.0.29",
+ "classnames": "^2.3.2",
"d3-array": "^2.4.0",
"match-sorter": "^6.3.0",
"memoize-one": "^5.1.1",
@@ -41,10 +42,10 @@
"@testing-library/react": "^11.2.0"
},
"peerDependencies": {
- "@types/react": "*",
- "@types/classnames": "*",
"@superset-ui/chart-controls": "*",
"@superset-ui/core": "*",
+ "@types/classnames": "*",
+ "@types/react": "*",
"react": "^16.13.1",
"react-dom": "^16.13.1"
}
diff --git a/superset-frontend/plugins/plugin-chart-table/src/DataTable/DataTable.tsx b/superset-frontend/plugins/plugin-chart-table/src/DataTable/DataTable.tsx
index 941887afd196..85580e7b63a3 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/DataTable/DataTable.tsx
+++ b/superset-frontend/plugins/plugin-chart-table/src/DataTable/DataTable.tsx
@@ -23,7 +23,6 @@ import React, {
HTMLProps,
MutableRefObject,
CSSProperties,
- MouseEvent,
} from 'react';
import {
useTable,
@@ -67,7 +66,6 @@ export interface DataTableProps extends TableOptions {
rowCount: number;
wrapperRef?: MutableRefObject;
onColumnOrderChange: () => void;
- onContextMenu?: (value: D, clientX: number, clientY: number) => void;
}
export interface RenderHTMLCellProps extends HTMLProps {
@@ -100,7 +98,6 @@ export default typedMemo(function DataTable({
serverPagination,
wrapperRef: userWrapperRef,
onColumnOrderChange,
- onContextMenu,
...moreUseTableOptions
}: DataTableProps): JSX.Element {
const tableHooks: PluginHook[] = [
@@ -273,21 +270,7 @@ export default typedMemo(function DataTable({
prepareRow(row);
const { key: rowKey, ...rowProps } = row.getRowProps();
return (
- {
- if (onContextMenu) {
- e.preventDefault();
- e.stopPropagation();
- onContextMenu(
- row.original,
- e.nativeEvent.clientX,
- e.nativeEvent.clientY,
- );
- }
- }}
- >
+
{row.cells.map(cell =>
cell.render('Cell', { key: cell.column.id }),
)}
diff --git a/superset-frontend/plugins/plugin-chart-table/src/DataTable/components/SelectPageSize.tsx b/superset-frontend/plugins/plugin-chart-table/src/DataTable/components/SelectPageSize.tsx
index 989b121a3352..48d4b9a66874 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/DataTable/components/SelectPageSize.tsx
+++ b/superset-frontend/plugins/plugin-chart-table/src/DataTable/components/SelectPageSize.tsx
@@ -17,6 +17,7 @@
* under the License.
*/
import React from 'react';
+import { t } from '@superset-ui/core';
import { formatSelectOptions } from '@superset-ui/chart-controls';
export type SizeOption = [number, string];
@@ -34,7 +35,7 @@ function DefaultSelectRenderer({
}: SelectPageSizeRendererProps) {
return (
- Show{' '}
+ {t('Show')}{' '}
);
}
diff --git a/superset-frontend/plugins/plugin-chart-table/src/DataTable/hooks/useSticky.tsx b/superset-frontend/plugins/plugin-chart-table/src/DataTable/hooks/useSticky.tsx
index 6fd4d839ce66..067d071ee192 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/DataTable/hooks/useSticky.tsx
+++ b/superset-frontend/plugins/plugin-chart-table/src/DataTable/hooks/useSticky.tsx
@@ -237,7 +237,7 @@ function StickyWrap({
const colWidths = columnWidths?.slice(0, columnCount);
if (colWidths && bodyHeight) {
- const bodyColgroup = (
+ const colgroup = (
{colWidths.map((w, i) => (
// eslint-disable-next-line react/no-array-index-key
@@ -246,23 +246,6 @@ function StickyWrap({
);
- // header columns do not have vertical scroll bars,
- // so we add scroll bar size to the last column
- const headerColgroup =
- sticky.hasVerticalScroll && scrollBarSize ? (
-
- {colWidths.map((x, i) => (
- // eslint-disable-next-line react/no-array-index-key
-
- ))}
-
- ) : (
- bodyColgroup
- );
-
headerTable = (
diff --git a/superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx b/superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx
index 067da5963010..ac02a10137b3 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx
+++ b/superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx
@@ -22,11 +22,13 @@ import React, {
useLayoutEffect,
useMemo,
useState,
+ MouseEvent,
} from 'react';
import {
ColumnInstance,
ColumnWithLooseAccessor,
DefaultSortTypes,
+ Row,
} from 'react-table';
import { extent as d3Extent, max as d3Max } from 'd3-array';
import { FaSort } from '@react-icons/all-files/fa/FaSort';
@@ -39,6 +41,7 @@ import {
DTTM_ALIAS,
ensureIsArray,
GenericDataType,
+ getSelectedText,
getTimeFormatterForGranularity,
BinaryQueryObjectFilterClause,
styled,
@@ -198,7 +201,7 @@ function SelectPageSize({
}
const getNoResultsMessage = (filter: string) =>
- t(filter ? 'No matching records found' : 'No records found');
+ filter ? t('No matching records found') : t('No records found');
export default function TableChart(
props: TableChartTransformedProps & {
@@ -222,13 +225,13 @@ export default function TableChart(
serverPaginationData,
setDataMask,
showCellBars = true,
- emitFilter = false,
sortDesc = false,
filters,
sticky = true, // whether to use sticky header
columnColorFormatters,
allowRearrangeColumns = false,
onContextMenu,
+ emitCrossFilters,
} = props;
const timestampFormatter = useCallback(
value => getTimeFormatterForGranularity(timeGrain)(value),
@@ -241,57 +244,6 @@ export default function TableChart(
// keep track of whether column order changed, so that column widths can too
const [columnOrderToggle, setColumnOrderToggle] = useState(false);
- const handleChange = useCallback(
- (filters: { [x: string]: DataRecordValue[] }) => {
- if (!emitFilter) {
- return;
- }
-
- const groupBy = Object.keys(filters);
- const groupByValues = Object.values(filters);
- const labelElements: string[] = [];
- groupBy.forEach(col => {
- const isTimestamp = col === DTTM_ALIAS;
- const filterValues = ensureIsArray(filters?.[col]);
- if (filterValues.length) {
- const valueLabels = filterValues.map(value =>
- isTimestamp ? timestampFormatter(value) : value,
- );
- labelElements.push(`${valueLabels.join(', ')}`);
- }
- });
- setDataMask({
- extraFormData: {
- filters:
- groupBy.length === 0
- ? []
- : groupBy.map(col => {
- const val = ensureIsArray(filters?.[col]);
- if (!val.length)
- return {
- col,
- op: 'IS NULL',
- };
- return {
- col,
- op: 'IN',
- val: val.map(el =>
- el instanceof Date ? el.getTime() : el!,
- ),
- grain: col === DTTM_ALIAS ? timeGrain : undefined,
- };
- }),
- },
- filterState: {
- label: labelElements.join(', '),
- value: groupByValues.length ? groupByValues : null,
- filters: filters && Object.keys(filters).length ? filters : null,
- },
- });
- },
- [emitFilter, setDataMask],
- );
-
// only take relevant page size options
const pageSizeOptions = useMemo(() => {
const getServerPagination = (n: number) => n <= rowCount;
@@ -322,31 +274,80 @@ export default function TableChart(
[filters],
);
- function getEmitTarget(col: string) {
- const meta = columnsMeta?.find(x => x.key === col);
- return meta?.config?.emitTarget || col;
- }
+ const getCrossFilterDataMask = (key: string, value: DataRecordValue) => {
+ let updatedFilters = { ...(filters || {}) };
+ if (filters && isActiveFilterValue(key, value)) {
+ updatedFilters = {};
+ } else {
+ updatedFilters = {
+ [key]: [value],
+ };
+ }
+ if (
+ Array.isArray(updatedFilters[key]) &&
+ updatedFilters[key].length === 0
+ ) {
+ delete updatedFilters[key];
+ }
+
+ const groupBy = Object.keys(updatedFilters);
+ const groupByValues = Object.values(updatedFilters);
+ const labelElements: string[] = [];
+ groupBy.forEach(col => {
+ const isTimestamp = col === DTTM_ALIAS;
+ const filterValues = ensureIsArray(updatedFilters?.[col]);
+ if (filterValues.length) {
+ const valueLabels = filterValues.map(value =>
+ isTimestamp ? timestampFormatter(value) : value,
+ );
+ labelElements.push(`${valueLabels.join(', ')}`);
+ }
+ });
+
+ return {
+ dataMask: {
+ extraFormData: {
+ filters:
+ groupBy.length === 0
+ ? []
+ : groupBy.map(col => {
+ const val = ensureIsArray(updatedFilters?.[col]);
+ if (!val.length)
+ return {
+ col,
+ op: 'IS NULL' as const,
+ };
+ return {
+ col,
+ op: 'IN' as const,
+ val: val.map(el =>
+ el instanceof Date ? el.getTime() : el!,
+ ),
+ grain: col === DTTM_ALIAS ? timeGrain : undefined,
+ };
+ }),
+ },
+ filterState: {
+ label: labelElements.join(', '),
+ value: groupByValues.length ? groupByValues : null,
+ filters:
+ updatedFilters && Object.keys(updatedFilters).length
+ ? updatedFilters
+ : null,
+ },
+ },
+ isCurrentValueSelected: isActiveFilterValue(key, value),
+ };
+ };
const toggleFilter = useCallback(
function toggleFilter(key: string, val: DataRecordValue) {
- let updatedFilters = { ...(filters || {}) };
- const target = getEmitTarget(key);
- if (filters && isActiveFilterValue(target, val)) {
- updatedFilters = {};
- } else {
- updatedFilters = {
- [target]: [val],
- };
- }
- if (
- Array.isArray(updatedFilters[target]) &&
- updatedFilters[target].length === 0
- ) {
- delete updatedFilters[target];
+ if (!emitCrossFilters) {
+ return;
}
- handleChange(updatedFilters);
+ setDataMask(getCrossFilterDataMask(key, val).dataMask);
},
- [filters, handleChange, isActiveFilterValue],
+ [emitCrossFilters, getCrossFilterDataMask, setDataMask],
);
const getSharedStyle = (column: DataColumnMeta): CSSProperties => {
@@ -361,6 +362,39 @@ export default function TableChart(
};
};
+ const handleContextMenu =
+ onContextMenu && !isRawRecords
+ ? (
+ value: D,
+ cellPoint: {
+ key: string;
+ value: DataRecordValue;
+ isMetric?: boolean;
+ },
+ clientX: number,
+ clientY: number,
+ ) => {
+ const drillToDetailFilters: BinaryQueryObjectFilterClause[] = [];
+ columnsMeta.forEach(col => {
+ if (!col.isMetric) {
+ const dataRecordValue = value[col.key];
+ drillToDetailFilters.push({
+ col: col.key,
+ op: '==',
+ val: dataRecordValue as string | number | boolean,
+ formattedVal: formatColumnValue(col, dataRecordValue)[1],
+ });
+ }
+ });
+ onContextMenu(clientX, clientY, {
+ drillToDetail: drillToDetailFilters,
+ crossFilter: cellPoint.isMetric
+ ? undefined
+ : getCrossFilterDataMask(cellPoint.key, cellPoint.value),
+ });
+ }
+ : undefined;
+
const getColumnConfigs = useCallback(
(column: DataColumnMeta, i: number): ColumnWithLooseAccessor => {
const { key, label, isNumeric, dataType, isMetric, config = {} } = column;
@@ -396,7 +430,7 @@ export default function TableChart(
getValueRange(key, alignPositiveNegative);
let className = '';
- if (emitFilter) {
+ if (emitCrossFilters && !isMetric) {
className += ' dt-is-filter';
}
@@ -406,7 +440,7 @@ export default function TableChart(
// typing is incorrect in current version of `@types/react-table`
// so we ask TS not to check.
accessor: ((datum: D) => datum[key]) as never,
- Cell: ({ value }: { value: DataRecordValue }) => {
+ Cell: ({ value, row }: { value: DataRecordValue; row: Row }) => {
const [isHtml, text] = formatColumnValue(column, value);
const html = isHtml ? { __html: text } : undefined;
@@ -459,9 +493,26 @@ export default function TableChart(
// show raw number in title in case of numeric values
title: typeof value === 'number' ? String(value) : undefined,
onClick:
- emitFilter && !valueRange
- ? () => toggleFilter(key, value)
+ emitCrossFilters && !valueRange && !isMetric
+ ? () => {
+ // allow selecting text in a cell
+ if (!getSelectedText()) {
+ toggleFilter(key, value);
+ }
+ }
: undefined,
+ onContextMenu: (e: MouseEvent) => {
+ if (handleContextMenu) {
+ e.preventDefault();
+ e.stopPropagation();
+ handleContextMenu(
+ row.original,
+ { key, value, isMetric },
+ e.nativeEvent.clientX,
+ e.nativeEvent.clientY,
+ );
+ }
+ },
className: [
className,
value == null ? 'dt-is-null' : '',
@@ -484,7 +535,7 @@ export default function TableChart(
// eslint-disable-next-line react/no-danger
return ;
}
- // If cellProps renderes textContent already, then we don't have to
+ // If cellProps renders textContent already, then we don't have to
// render `Cell`. This saves some time for large tables.
return (
@@ -513,7 +564,7 @@ export default function TableChart(
},
Header: ({ column: col, onClick, style, onDragStart, onDrop }) => (
(
[
defaultAlignPN,
defaultColorPN,
- emitFilter,
+ emitCrossFilters,
getValueRange,
isActiveFilterValue,
isRawRecords,
@@ -627,25 +678,6 @@ export default function TableChart(
const { width: widthFromState, height: heightFromState } = tableSize;
- const handleContextMenu =
- onContextMenu && !isRawRecords
- ? (value: D, clientX: number, clientY: number) => {
- const filters: BinaryQueryObjectFilterClause[] = [];
- columnsMeta.forEach(col => {
- if (!col.isMetric) {
- const dataRecordValue = value[col.key];
- filters.push({
- col: col.key,
- op: '==',
- val: dataRecordValue as string | number | boolean,
- formattedVal: formatColumnValue(col, dataRecordValue)[1],
- });
- }
- });
- onContextMenu(clientX, clientY, filters);
- }
- : undefined;
-
return (
@@ -668,7 +700,6 @@ export default function TableChart(
selectPageSize={pageSize !== null && SelectPageSize}
// not in use in Superset, but needed for unit tests
sticky={sticky}
- onContextMenu={handleContextMenu}
/>
);
diff --git a/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts b/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts
index 2c0f3385bd4e..211070f8bcc4 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts
+++ b/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts
@@ -71,12 +71,12 @@ const buildQuery: BuildQuery = (
if (queryMode === QueryMode.aggregate) {
metrics = metrics || [];
- // orverride orderby with timeseries metric when in aggregation mode
+ // override orderby with timeseries metric when in aggregation mode
if (sortByMetric) {
orderby = [[sortByMetric, !orderDesc]];
} else if (metrics?.length > 0) {
// default to ordering by first metric in descending order
- // when no "sort by" metric is set (regargless if "SORT DESC" is set to true)
+ // when no "sort by" metric is set (regardless if "SORT DESC" is set to true)
orderby = [[metrics[0], false]];
}
// add postprocessing for percent metrics only when in aggregation mode
diff --git a/superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx
index e7e6b3d9852f..35c5d3970a9e 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx
@@ -44,7 +44,6 @@ import {
sharedControls,
ControlPanelState,
ControlState,
- emitFilterControl,
Dataset,
ColumnMeta,
defineSavedMetrics,
@@ -369,7 +368,6 @@ const config: ControlPanelConfig = {
},
},
],
- emitFilterControl,
],
},
{
@@ -488,7 +486,6 @@ const config: ControlPanelConfig = {
queryResponse: chart?.queriesResponse?.[0] as
| ChartDataResponseResult
| undefined,
- emitFilter: explore?.controls?.table_filter?.value,
};
},
},
diff --git a/superset-frontend/plugins/plugin-chart-table/src/transformProps.ts b/superset-frontend/plugins/plugin-chart-table/src/transformProps.ts
index bca48e63403c..2fae16c31c87 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-table/src/transformProps.ts
@@ -209,6 +209,7 @@ const transformProps = (
setDataMask = () => {},
onContextMenu,
},
+ emitCrossFilters,
} = chartProps;
const {
@@ -217,7 +218,6 @@ const transformProps = (
show_cell_bars: showCellBars = true,
include_search: includeSearch = false,
page_length: pageLength,
- emit_filter: emitFilter,
server_pagination: serverPagination = false,
server_page_length: serverPageLength = 10,
order_desc: sortDesc = false,
@@ -273,7 +273,7 @@ const transformProps = (
? serverPageLength
: getPageSize(pageLength, data.length, columns.length),
filters: filterState.filters,
- emitFilter,
+ emitCrossFilters,
onChangeFilter,
columnColorFormatters,
timeGrain,
diff --git a/superset-frontend/plugins/plugin-chart-table/src/types.ts b/superset-frontend/plugins/plugin-chart-table/src/types.ts
index 1a6f06f4f886..f76d2718b4fd 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/types.ts
+++ b/superset-frontend/plugins/plugin-chart-table/src/types.ts
@@ -30,7 +30,7 @@ import {
ChartDataResponseResult,
QueryFormData,
SetDataMaskHook,
- BinaryQueryObjectFilterClause,
+ ContextMenuFilters,
} from '@superset-ui/core';
import { ColorFormatters, ColumnConfig } from '@superset-ui/chart-controls';
@@ -69,7 +69,6 @@ export type TableChartFormData = QueryFormData & {
order_desc?: boolean;
show_cell_bars?: boolean;
table_timestamp_format?: string;
- emit_filter?: boolean;
time_grain_sqla?: TimeGranularity;
column_config?: Record;
allow_rearrange_columns?: boolean;
@@ -108,14 +107,14 @@ export interface TableChartTransformedProps {
// These are dashboard filters, don't be confused with in-chart search filter
// enabled by `includeSearch`
filters?: DataRecordFilters;
- emitFilter?: boolean;
+ emitCrossFilters?: boolean;
onChangeFilter?: ChartProps['hooks']['onAddFilter'];
columnColorFormatters?: ColorFormatters;
allowRearrangeColumns?: boolean;
onContextMenu?: (
clientX: number,
clientY: number,
- filters?: BinaryQueryObjectFilterClause[],
+ filters?: ContextMenuFilters,
) => void;
}
diff --git a/superset-frontend/plugins/plugin-chart-table/src/utils/DateWithFormatter.ts b/superset-frontend/plugins/plugin-chart-table/src/utils/DateWithFormatter.ts
index eef513bca040..c92c2ca1abb3 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/utils/DateWithFormatter.ts
+++ b/superset-frontend/plugins/plugin-chart-table/src/utils/DateWithFormatter.ts
@@ -16,9 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { DataRecordValue, TimeFormatFunction } from '@superset-ui/core';
-
-const REGEXP_TIMESTAMP_NO_TIMEZONE = /T(\d{2}:){2}\d{2}$/;
+import {
+ DataRecordValue,
+ normalizeTimestamp,
+ TimeFormatFunction,
+} from '@superset-ui/core';
/**
* Extended Date object with a custom formatter, and retains the original input
@@ -31,19 +33,12 @@ export default class DateWithFormatter extends Date {
constructor(
input: DataRecordValue,
- {
- formatter = String,
- forceUTC = true,
- }: { formatter?: TimeFormatFunction; forceUTC?: boolean } = {},
+ { formatter = String }: { formatter?: TimeFormatFunction } = {},
) {
let value = input;
// assuming timestamps without a timezone is in UTC time
- if (
- forceUTC &&
- typeof value === 'string' &&
- REGEXP_TIMESTAMP_NO_TIMEZONE.test(value)
- ) {
- value = `${value}Z`;
+ if (typeof value === 'string') {
+ value = normalizeTimestamp(value);
}
super(value as string);
diff --git a/superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts b/superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts
index a6c4f75ed17c..f40a9c19af5a 100644
--- a/superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts
+++ b/superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts
@@ -83,9 +83,9 @@ const config: ControlPanelConfig = {
type: 'SelectControl',
label: t('Word Rotation'),
choices: [
- ['random', 'random'],
- ['flat', 'flat'],
- ['square', 'square'],
+ ['random', t('random')],
+ ['flat', t('flat')],
+ ['square', t('square')],
],
renderTrigger: true,
default: 'square',
diff --git a/superset-frontend/plugins/preset-chart-xy/src/BoxPlot/controlPanel.ts b/superset-frontend/plugins/preset-chart-xy/src/BoxPlot/controlPanel.ts
index 6d98bf19e581..10587b382f97 100644
--- a/superset-frontend/plugins/preset-chart-xy/src/BoxPlot/controlPanel.ts
+++ b/superset-frontend/plugins/preset-chart-xy/src/BoxPlot/controlPanel.ts
@@ -17,11 +17,7 @@
* under the License.
*/
import { t } from '@superset-ui/core';
-import {
- ControlPanelConfig,
- formatSelectOptions,
- sections,
-} from '@superset-ui/chart-controls';
+import { ControlPanelConfig, sections } from '@superset-ui/chart-controls';
const config: ControlPanelConfig = {
controlPanelSections: [
@@ -47,12 +43,12 @@ const config: ControlPanelConfig = {
description: t(
'Determines how whiskers and outliers are calculated.',
),
- choices: formatSelectOptions([
- 'Tukey',
- 'Min/max (no outliers)',
- '2/98 percentiles',
- '9/91 percentiles',
- ]),
+ choices: [
+ ['Tukey', t('Tukey')],
+ ['Min/max (no outliers)', t('Min/max (no outliers)')],
+ ['2/98 percentiles', t('2/98 percentiles')],
+ ['9/91 percentiles', t('9/91 percentiles')],
+ ],
},
},
{
@@ -60,12 +56,12 @@ const config: ControlPanelConfig = {
config: {
type: 'SelectControl',
label: t('X Tick Layout'),
- choices: formatSelectOptions([
- 'auto',
- 'flat',
- '45°',
- 'staggered',
- ]),
+ choices: [
+ ['auto', t('auto')],
+ ['flat', t('flat')],
+ ['45°', '45°'],
+ ['staggered', t('staggered')],
+ ],
default: 'auto',
clearable: false,
renderTrigger: true,
diff --git a/superset-frontend/plugins/preset-chart-xy/src/utils/convertScaleToDataUIScaleShape.ts b/superset-frontend/plugins/preset-chart-xy/src/utils/convertScaleToDataUIScaleShape.ts
index 4d756e138ba8..972f01f9092d 100644
--- a/superset-frontend/plugins/preset-chart-xy/src/utils/convertScaleToDataUIScaleShape.ts
+++ b/superset-frontend/plugins/preset-chart-xy/src/utils/convertScaleToDataUIScaleShape.ts
@@ -43,7 +43,7 @@ function isCompatibleDomainOrRange(
}
/**
- * Convert encodeable scale object into @data-ui's scale config
+ * Convert encodable scale object into @data-ui's scale config
* @param scale
*/
export default function convertScaleToDataUIScale