@flowmap.gl/data 8.0.2 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/dist/FlowmapAggregateAccessors.d.ts.map +1 -1
- package/dist/FlowmapAggregateAccessors.js +1 -1
- package/dist/FlowmapSelectors.d.ts +234 -30
- package/dist/FlowmapSelectors.d.ts.map +1 -1
- package/dist/FlowmapSelectors.js +43 -30
- package/dist/FlowmapState.d.ts +3 -1
- package/dist/FlowmapState.d.ts.map +1 -1
- package/dist/FlowmapState.js +1 -1
- package/dist/cluster/ClusterIndex.js +1 -1
- package/dist/cluster/cluster.js +9 -9
- package/dist/colors.js +1 -1
- package/dist/getViewStateForLocations.js +1 -1
- package/dist/provider/LocalFlowmapDataProvider.js +1 -1
- package/dist/selector-functions.d.ts.map +1 -1
- package/dist/selector-functions.js +1 -1
- package/dist/time.js +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.js +1 -1
- package/dist/util.d.ts +2 -4
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +3 -3
- package/package.json +22 -22
- package/src/FlowmapSelectors.ts +73 -53
- package/src/FlowmapState.ts +4 -1
- package/src/types.ts +3 -3
- package/src/util.ts +2 -2
- package/tsconfig.json +2 -1
- package/.turbo/turbo-dev.log +0 -670
package/dist/FlowmapState.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LocationFilterMode, ViewportProps } from './types';
|
|
2
|
+
export type FlowEndpointsInViewportMode = 'any' | 'both';
|
|
2
3
|
export interface FilterState {
|
|
3
4
|
selectedLocations?: (string | number)[];
|
|
4
5
|
locationFilterMode?: LocationFilterMode;
|
|
@@ -18,8 +19,9 @@ export interface SettingsState {
|
|
|
18
19
|
darkMode: boolean;
|
|
19
20
|
fadeAmount: number;
|
|
20
21
|
colorScheme: string | string[] | undefined;
|
|
21
|
-
highlightColor: string;
|
|
22
|
+
highlightColor: string | number[];
|
|
22
23
|
maxTopFlowsDisplayNum: number;
|
|
24
|
+
flowEndpointsInViewportMode: FlowEndpointsInViewportMode;
|
|
23
25
|
}
|
|
24
26
|
export interface FlowmapState {
|
|
25
27
|
filter?: FilterState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowmapState.d.ts","sourceRoot":"","sources":["../src/FlowmapState.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,iBAAiB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"FlowmapState.d.ts","sourceRoot":"","sources":["../src/FlowmapState.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAE1D,MAAM,MAAM,2BAA2B,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,iBAAiB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3C,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2BAA2B,EAAE,2BAA2B,CAAC;CAC1D;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;CACzB"}
|
package/dist/FlowmapState.js
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
export {};
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcFN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Zsb3dtYXBTdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgRmxvd21hcC5nbCBjb250cmlidXRvcnNcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIwIFRlcmFseXRpY3NcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHtMb2NhdGlvbkZpbHRlck1vZGUsIFZpZXdwb3J0UHJvcHN9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBGbG93RW5kcG9pbnRzSW5WaWV3cG9ydE1vZGUgPSAnYW55JyB8ICdib3RoJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJTdGF0ZSB7XG4gIHNlbGVjdGVkTG9jYXRpb25zPzogKHN0cmluZyB8IG51bWJlcilbXTtcbiAgbG9jYXRpb25GaWx0ZXJNb2RlPzogTG9jYXRpb25GaWx0ZXJNb2RlO1xuICBzZWxlY3RlZFRpbWVSYW5nZT86IFtEYXRlLCBEYXRlXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc1N0YXRlIHtcbiAgYW5pbWF0aW9uRW5hYmxlZDogYm9vbGVhbjtcbiAgZmFkZUVuYWJsZWQ6IGJvb2xlYW47XG4gIGZhZGVPcGFjaXR5RW5hYmxlZDogYm9vbGVhbjtcbiAgbG9jYXRpb25zRW5hYmxlZDogYm9vbGVhbjtcbiAgbG9jYXRpb25Ub3RhbHNFbmFibGVkOiBib29sZWFuO1xuICBsb2NhdGlvbkxhYmVsc0VuYWJsZWQ6IGJvb2xlYW47XG4gIGFkYXB0aXZlU2NhbGVzRW5hYmxlZDogYm9vbGVhbjtcbiAgY2x1c3RlcmluZ0VuYWJsZWQ6IGJvb2xlYW47XG4gIGNsdXN0ZXJpbmdBdXRvOiBib29sZWFuO1xuICBjbHVzdGVyaW5nTGV2ZWw/OiBudW1iZXI7XG4gIGRhcmtNb2RlOiBib29sZWFuO1xuICBmYWRlQW1vdW50OiBudW1iZXI7XG4gIGNvbG9yU2NoZW1lOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgaGlnaGxpZ2h0Q29sb3I6IHN0cmluZyB8IG51bWJlcltdO1xuICBtYXhUb3BGbG93c0Rpc3BsYXlOdW06IG51bWJlcjtcbiAgZmxvd0VuZHBvaW50c0luVmlld3BvcnRNb2RlOiBGbG93RW5kcG9pbnRzSW5WaWV3cG9ydE1vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd21hcFN0YXRlIHtcbiAgZmlsdGVyPzogRmlsdGVyU3RhdGU7XG4gIHNldHRpbmdzOiBTZXR0aW5nc1N0YXRlO1xuICB2aWV3cG9ydDogVmlld3BvcnRQcm9wcztcbn1cbiJdfQ==
|
|
@@ -163,4 +163,4 @@ export function findAppropriateZoomLevel(availableZoomLevels, targetZoom) {
|
|
|
163
163
|
}
|
|
164
164
|
return availableZoomLevels[Math.min(bisectLeft(availableZoomLevels, Math.floor(targetZoom)), availableZoomLevels.length - 1)];
|
|
165
165
|
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsdXN0ZXIvQ2x1c3RlckluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBT0wsU0FBUyxHQUNWLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQTBDdkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFJLGFBQTRCO0lBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0lBQ3JELE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO0lBQ3pELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7SUFDL0QsS0FBSyxNQUFNLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxJQUFJLGFBQWEsRUFBRTtRQUN6QyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN4QixJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLE1BQU0sRUFBQyxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUU7b0JBQzNCLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ25DO2FBQ0Y7U0FDRjtLQUNGO0lBRUQsTUFB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SSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDL0MsQ0FBQztBQUNOLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLG1CQUE2QixFQUM3QixVQUFrQjtJQUVsQixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUM3QztJQUNELE9BQU8sbUJBQW1CLENBQ3hCLElBQUksQ0FBQyxHQUFHLENBQ04sVUFBVSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDdkQsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDL0IsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIEZsb3dtYXAuZ2wgY29udHJpYnV0b3JzXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMCBUZXJhbHl0aWNzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7XG4gIEFnZ3JlZ2F0ZUZsb3csXG4gIENsdXN0ZXIsXG4gIENsdXN0ZXJMZXZlbHMsXG4gIENsdXN0ZXJOb2RlLFxuICBGbG93QWNjZXNzb3JzLFxuICBGbG93Q291bnRzTWFwUmVkdWNlLFxuICBpc0NsdXN0ZXIsXG59IGZyb20gJy4vLi4vdHlwZXMnO1xuaW1wb3J0IHthc2NlbmRpbmcsIGJpc2VjdExlZnQsIGV4dGVudH0gZnJvbSAnZDMtYXJyYXknO1xuXG5leHBvcnQgdHlwZSBMb2NhdGlvbldlaWdodEdldHRlciA9IChpZDogc3RyaW5nIHwgbnVtYmVyKSA9PiBudW1iZXI7XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIGNsdXN0ZXIgbGV2ZWxzIGZvciBlZmZpY2llbnQgZmxvdyBhZ2dyZWdhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVySW5kZXg8Rj4ge1xuICBhdmFpbGFibGVab29tTGV2ZWxzOiBudW1iZXJbXTtcbiAgZ2V0Q2x1c3RlckJ5SWQ6IChjbHVzdGVySWQ6IHN0cmluZyB8IG51bWJlcikgPT4gQ2x1c3RlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIExpc3QgdGhlIG5vZGVzIG9uIHRoZSBnaXZlbiB6b29tIGxldmVsLlxuICAgKi9cbiAgZ2V0Q2x1c3Rlck5vZGVzRm9yOiAoem9vbTogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiBDbHVzdGVyTm9kZVtdIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogR2V0IHRoZSBtaW4gem9vbSBsZXZlbCBvbiB3aGljaCB0aGUgbG9jYXRpb24gaXMgbm90IGNsdXN0ZXJlZC5cbiAgICovXG4gIGdldE1pblpvb21Gb3JMb2NhdGlvbjogKGxvY2F0aW9uSWQ6IHN0cmluZyB8IG51bWJlcikgPT4gbnVtYmVyO1xuICAvKipcbiAgICogTGlzdCB0aGUgSURzIG9mIGFsbCBsb2NhdGlvbnMgaW4gdGhlIGNsdXN0ZXIgKGxlYXZlcyBvZiB0aGUgc3VidHJlZSBzdGFydGluZyBpbiB0aGUgY2x1c3RlcikuXG4gICAqL1xuICBleHBhbmRDbHVzdGVyOiAoY2x1c3RlcjogQ2x1c3RlciwgdGFyZ2V0Wm9vbT86IG51bWJlcikgPT4gc3RyaW5nW107XG4gIC8qKlxuICAgKiBGaW5kIHRoZSBjbHVzdGVyIHRoZSBnaXZlbiBsb2NhdGlvbiBpcyByZXNpZGluZyBpbiBvbiB0aGUgc3BlY2lmaWVkIHpvb20gbGV2ZWwuXG4gICAqL1xuICBmaW5kQ2x1c3RlckZvcjogKFxuICAgIGxvY2F0aW9uSWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICB6b29tOiBudW1iZXIsXG4gICkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQWdncmVnYXRlIGZsb3dzIGZvciB0aGUgc3BlY2lmaWVkIHpvb20gbGV2ZWwuXG4gICAqL1xuICBhZ2dyZWdhdGVGbG93czogKFxuICAgIGZsb3dzOiBGW10sXG4gICAgem9vbTogbnVtYmVyLFxuICAgIHtnZXRGbG93T3JpZ2luSWQsIGdldEZsb3dEZXN0SWQsIGdldEZsb3dNYWduaXR1ZGV9OiBGbG93QWNjZXNzb3JzPEY+LFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBmbG93Q291bnRzTWFwUmVkdWNlPzogRmxvd0NvdW50c01hcFJlZHVjZTxGPjtcbiAgICB9LFxuICApID0+IChGIHwgQWdncmVnYXRlRmxvdylbXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBDbHVzdGVySW5kZXggZnJvbSB0aGUgZ2l2ZW4gY2x1c3RlciBoaWVyYXJjaHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSW5kZXg8Rj4oY2x1c3RlckxldmVsczogQ2x1c3RlckxldmVscyk6IENsdXN0ZXJJbmRleDxGPiB7XG4gIGNvbnN0IG5vZGVzQnlab29tID0gbmV3IE1hcDxudW1iZXIsIENsdXN0ZXJOb2RlW10+KCk7XG4gIGNvbnN0IGNsdXN0ZXJzQnlJZCA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBDbHVzdGVyPigpO1xuICBjb25zdCBtaW5ab29tQnlMb2NhdGlvbklkID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCB7em9vbSwgbm9kZXN9IG9mIGNsdXN0ZXJMZXZlbHMpIHtcbiAgICBub2Rlc0J5Wm9vbS5zZXQoem9vbSwgbm9kZXMpO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgaWYgKGlzQ2x1c3Rlcihub2RlKSkge1xuICAgICAgICBjbHVzdGVyc0J5SWQuc2V0KG5vZGUuaWQsIG5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qge2lkfSA9IG5vZGU7XG4gICAgICAgIGNvbnN0IG16ID0gbWluWm9vbUJ5TG9jYXRpb25JZC5nZXQoaWQpO1xuICAgICAgICBpZiAobXogPT0gbnVsbCB8fCBteiA+IHpvb20pIHtcbiAgICAgICAgICBtaW5ab29tQnlMb2NhdGlvbklkLnNldChpZCwgem9vbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBbbWluWm9vbSwgbWF4Wm9vbV0gPSBleHRlbnQoY2x1c3RlckxldmVscywgKGNsKSA9PiBjbC56b29tKTtcbiAgaWYgKG1pblpvb20gPT0gbnVsbCB8fCBtYXhab29tID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBkZXRlcm1pbmUgbWluWm9vbSBvciBtYXhab29tJyk7XG4gIH1cblxuICBjb25zdCBsZWF2ZXNUb0NsdXN0ZXJzQnlab29tID0gbmV3IE1hcDxcbiAgICBudW1iZXIsXG4gICAgTWFwPHN0cmluZyB8IG51bWJlciwgQ2x1c3Rlcj5cbiAgPigpO1xuXG4gIGZvciAoY29uc3QgY2x1c3RlciBvZiBjbHVzdGVyc0J5SWQudmFsdWVzKCkpIHtcbiAgICBjb25zdCB7em9vbX0gPSBjbHVzdGVyO1xuICAgIGxldCBsZWF2ZXNUb0NsdXN0ZXJzID0gbGVhdmVzVG9DbHVzdGVyc0J5Wm9vbS5nZXQoem9vbSk7XG4gICAgaWYgKCFsZWF2ZXNUb0NsdXN0ZXJzKSB7XG4gICAgICBsZWF2ZXNUb0NsdXN0ZXJzID0gbmV3IE1hcDxzdHJpbmcsIENsdXN0ZXI+KCk7XG4gICAgICBsZWF2ZXNUb0NsdXN0ZXJzQnlab29tLnNldCh6b29tLCBsZWF2ZXNUb0NsdXN0ZXJzKTtcbiAgICB9XG4gICAgdmlzaXRDbHVzdGVyTGVhdmVzKGNsdXN0ZXIsIChsZWFmSWQpID0+IHtcbiAgICAgIGxlYXZlc1RvQ2x1c3RlcnM/LnNldChsZWFmSWQsIGNsdXN0ZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdmlzaXRDbHVzdGVyTGVhdmVzKGNsdXN0ZXI6IENsdXN0ZXIsIHZpc2l0OiAoaWQ6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIGZvciAoY29uc3QgY2hpbGRJZCBvZiBjbHVzdGVyLmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGNsdXN0ZXJzQnlJZC5nZXQoY2hpbGRJZCk7XG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgdmlzaXRDbHVzdGVyTGVhdmVzKGNoaWxkLCB2aXNpdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2aXNpdChjaGlsZElkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBleHBhbmRDbHVzdGVyID0gKGNsdXN0ZXI6IENsdXN0ZXIsIHRhcmdldFpvb206IG51bWJlciA9IG1heFpvb20pID0+IHtcbiAgICBjb25zdCBpZHM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgdmlzaXQgPSAoYzogQ2x1c3RlciwgZXhwYW5kZWRJZHM6IChzdHJpbmcgfCBudW1iZXIpW10pID0+IHtcbiAgICAgIGlmICh0YXJnZXRab29tID4gYy56b29tKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGRJZCBvZiBjLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgY2hpbGQgPSBjbHVzdGVyc0J5SWQuZ2V0KGNoaWxkSWQpO1xuICAgICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgICAgdmlzaXQoY2hpbGQsIGV4cGFuZGVkSWRzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXhwYW5kZWRJZHMucHVzaChjaGlsZElkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4cGFuZGVkSWRzLnB1c2goYy5pZCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB2aXNpdChjbHVzdGVyLCBpZHMpO1xuICAgIHJldHVybiBpZHM7XG4gIH07XG5cbiAgZnVuY3Rpb24gZmluZENsdXN0ZXJGb3IobG9jYXRpb25JZDogc3RyaW5nIHwgbnVtYmVyLCB6b29tOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZWF2ZXNUb0NsdXN0ZXJzID0gbGVhdmVzVG9DbHVzdGVyc0J5Wm9vbS5nZXQoem9vbSk7XG4gICAgaWYgKCFsZWF2ZXNUb0NsdXN0ZXJzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjbHVzdGVyID0gbGVhdmVzVG9DbHVzdGVycy5nZXQobG9jYXRpb25JZCk7XG4gICAgcmV0dXJuIGNsdXN0ZXIgPyBjbHVzdGVyLmlkIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgYXZhaWxhYmxlWm9vbUxldmVscyA9IGNsdXN0ZXJMZXZlbHNcbiAgICAubWFwKChjbCkgPT4gK2NsLnpvb20pXG4gICAgLnNvcnQoKGEsIGIpID0+IGFzY2VuZGluZyhhLCBiKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdmFpbGFibGVab29tTGV2ZWxzLFxuXG4gICAgZ2V0Q2x1c3Rlck5vZGVzRm9yOiAoem9vbSkgPT4ge1xuICAgICAgaWYgKHpvb20gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vZGVzQnlab29tLmdldCh6b29tKTtcbiAgICB9LFxuXG4gICAgZ2V0Q2x1c3RlckJ5SWQ6IChjbHVzdGVySWQpID0+IGNsdXN0ZXJzQnlJZC5nZXQoY2x1c3RlcklkKSxcblxuICAgIGdldE1pblpvb21Gb3JMb2NhdGlvbjogKGxvY2F0aW9uSWQpID0+XG4gICAgICBtaW5ab29tQnlMb2NhdGlvbklkLmdldChsb2NhdGlvbklkKSB8fCBtaW5ab29tLFxuXG4gICAgZXhwYW5kQ2x1c3RlcixcblxuICAgIGZpbmRDbHVzdGVyRm9yLFxuXG4gICAgYWdncmVnYXRlRmxvd3M6IChcbiAgICAgIGZsb3dzLFxuICAgICAgem9vbSxcbiAgICAgIHtnZXRGbG93T3JpZ2luSWQsIGdldEZsb3dEZXN0SWQsIGdldEZsb3dNYWduaXR1ZGV9LFxuICAgICAgb3B0aW9ucyA9IHt9LFxuICAgICkgPT4ge1xuICAgICAgaWYgKHpvb20gPiBtYXhab29tKSB7XG4gICAgICAgIHJldHVybiBmbG93cztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdDogKEYgfCBBZ2dyZWdhdGVGbG93KVtdID0gW107XG4gICAgICBjb25zdCBhZ2dGbG93c0J5S2V5ID0gbmV3IE1hcDxzdHJpbmcsIEFnZ3JlZ2F0ZUZsb3c+KCk7XG4gICAgICBjb25zdCBtYWtlS2V5ID0gKG9yaWdpbjogc3RyaW5nIHwgbnVtYmVyLCBkZXN0OiBzdHJpbmcgfCBudW1iZXIpID0+XG4gICAgICAgIGAke29yaWdpbn06JHtkZXN0fWA7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGZsb3dDb3VudHNNYXBSZWR1Y2UgPSB7XG4gICAgICAgICAgbWFwOiBnZXRGbG93TWFnbml0dWRlLFxuICAgICAgICAgIHJlZHVjZTogKGFjYzogYW55LCBjb3VudDogbnVtYmVyKSA9PiAoYWNjIHx8IDApICsgY291bnQsXG4gICAgICAgIH0sXG4gICAgICB9ID0gb3B0aW9ucztcbiAgICAgIGZvciAoY29uc3QgZmxvdyBvZiBmbG93cykge1xuICAgICAgICBjb25zdCBvcmlnaW4gPSBnZXRGbG93T3JpZ2luSWQoZmxvdyk7XG4gICAgICAgIGNvbnN0IGRlc3QgPSBnZXRGbG93RGVzdElkKGZsb3cpO1xuICAgICAgICBjb25zdCBvcmlnaW5DbHVzdGVyID0gZmluZENsdXN0ZXJGb3Iob3JpZ2luLCB6b29tKSB8fCBvcmlnaW47XG4gICAgICAgIGNvbnN0IGRlc3RDbHVzdGVyID0gZmluZENsdXN0ZXJGb3IoZGVzdCwgem9vbSkgfHwgZGVzdDtcbiAgICAgICAgY29uc3Qga2V5ID0gbWFrZUtleShvcmlnaW5DbHVzdGVyLCBkZXN0Q2x1c3Rlcik7XG4gICAgICAgIGlmIChvcmlnaW5DbHVzdGVyID09PSBvcmlnaW4gJiYgZGVzdENsdXN0ZXIgPT09IGRlc3QpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChmbG93KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgYWdncmVnYXRlRmxvdyA9IGFnZ0Zsb3dzQnlLZXkuZ2V0KGtleSk7XG4gICAgICAgICAgaWYgKCFhZ2dyZWdhdGVGbG93KSB7XG4gICAgICAgICAgICBhZ2dyZWdhdGVGbG93ID0ge1xuICAgICAgICAgICAgICBvcmlnaW46IG9yaWdpbkNsdXN0ZXIsXG4gICAgICAgICAgICAgIGRlc3Q6IGRlc3RDbHVzdGVyLFxuICAgICAgICAgICAgICBjb3VudDogZmxvd0NvdW50c01hcFJlZHVjZS5tYXAoZmxvdyksXG4gICAgICAgICAgICAgIGFnZ3JlZ2F0ZTogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXN1bHQucHVzaChhZ2dyZWdhdGVGbG93KTtcbiAgICAgICAgICAgIGFnZ0Zsb3dzQnlLZXkuc2V0KGtleSwgYWdncmVnYXRlRmxvdyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFnZ3JlZ2F0ZUZsb3cuY291bnQgPSBmbG93Q291bnRzTWFwUmVkdWNlLnJlZHVjZShcbiAgICAgICAgICAgICAgYWdncmVnYXRlRmxvdy5jb3VudCxcbiAgICAgICAgICAgICAgZmxvd0NvdW50c01hcFJlZHVjZS5tYXAoZmxvdyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUxvY2F0aW9uV2VpZ2h0R2V0dGVyPEY+KFxuICBmbG93czogRltdLFxuICB7Z2V0Rmxvd09yaWdpbklkLCBnZXRGbG93RGVzdElkLCBnZXRGbG93TWFnbml0dWRlfTogRmxvd0FjY2Vzc29yczxGPixcbik6IExvY2F0aW9uV2VpZ2h0R2V0dGVyIHtcbiAgY29uc3QgbG9jYXRpb25Ub3RhbHMgPSB7XG4gICAgaW5jb21pbmc6IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+KCksXG4gICAgb3V0Z29pbmc6IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+KCksXG4gIH07XG4gIGZvciAoY29uc3QgZmxvdyBvZiBmbG93cykge1xuICAgIGNvbnN0IG9yaWdpbiA9IGdldEZsb3dPcmlnaW5JZChmbG93KTtcbiAgICBjb25zdCBkZXN0ID0gZ2V0Rmxvd0Rlc3RJZChmbG93KTtcbiAgICBjb25zdCBjb3VudCA9IGdldEZsb3dNYWduaXR1ZGUoZmxvdyk7XG4gICAgbG9jYXRpb25Ub3RhbHMuaW5jb21pbmcuc2V0KFxuICAgICAgZGVzdCxcbiAgICAgIChsb2NhdGlvblRvdGFscy5pbmNvbWluZy5nZXQoZGVzdCkgfHwgMCkgKyBjb3VudCxcbiAgICApO1xuICAgIGxvY2F0aW9uVG90YWxzLm91dGdvaW5nLnNldChcbiAgICAgIG9yaWdpbixcbiAgICAgIChsb2NhdGlvblRvdGFscy5vdXRnb2luZy5nZXQob3JpZ2luKSB8fCAwKSArIGNvdW50LFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChpZDogc3RyaW5nIHwgbnVtYmVyKSA9PlxuICAgIE1hdGgubWF4KFxuICAgICAgTWF0aC5hYnMobG9jYXRpb25Ub3RhbHMuaW5jb21pbmcuZ2V0KGlkKSB8fCAwKSxcbiAgICAgIE1hdGguYWJzKGxvY2F0aW9uVG90YWxzLm91dGdvaW5nLmdldChpZCkgfHwgMCksXG4gICAgKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYXZhaWxhYmxlWm9vbUxldmVscyBNdXN0IGJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXJcbiAqIEBwYXJhbSB0YXJnZXRab29tXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQXBwcm9wcmlhdGVab29tTGV2ZWwoXG4gIGF2YWlsYWJsZVpvb21MZXZlbHM6IG51bWJlcltdLFxuICB0YXJnZXRab29tOiBudW1iZXIsXG4pIHtcbiAgaWYgKCFhdmFpbGFibGVab29tTGV2ZWxzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gYXZhaWxhYmxlIHpvb20gbGV2ZWxzJyk7XG4gIH1cbiAgcmV0dXJuIGF2YWlsYWJsZVpvb21MZXZlbHNbXG4gICAgTWF0aC5taW4oXG4gICAgICBiaXNlY3RMZWZ0KGF2YWlsYWJsZVpvb21MZXZlbHMsIE1hdGguZmxvb3IodGFyZ2V0Wm9vbSkpLFxuICAgICAgYXZhaWxhYmxlWm9vbUxldmVscy5sZW5ndGggLSAxLFxuICAgIClcbiAgXTtcbn1cbiJdfQ==
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsdXN0ZXIvQ2x1c3RlckluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBT0wsU0FBUyxHQUNWLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQTBDdkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFJLGFBQTRCO0lBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0lBQ3JELE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO0lBQ3pELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7SUFDL0QsS0FBSyxNQUFNLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEVBQUMsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixNQUFNLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7b0JBQzVCLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7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RyxDQUN6QixNQUFNLEVBQ04sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQ25ELENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxDQUFDLEVBQW1CLEVBQUUsRUFBRSxDQUM3QixJQUFJLENBQUMsR0FBRyxDQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQy9DLENBQUM7QUFDTixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxtQkFBNkIsRUFDN0IsVUFBa0I7SUFFbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsT0FBTyxtQkFBbUIsQ0FDeEIsSUFBSSxDQUFDLEdBQUcsQ0FDTixVQUFVLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUN2RCxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUMvQixDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgRmxvd21hcC5nbCBjb250cmlidXRvcnNcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIwIFRlcmFseXRpY3NcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHtcbiAgQWdncmVnYXRlRmxvdyxcbiAgQ2x1c3RlcixcbiAgQ2x1c3RlckxldmVscyxcbiAgQ2x1c3Rlck5vZGUsXG4gIEZsb3dBY2Nlc3NvcnMsXG4gIEZsb3dDb3VudHNNYXBSZWR1Y2UsXG4gIGlzQ2x1c3Rlcixcbn0gZnJvbSAnLi8uLi90eXBlcyc7XG5pbXBvcnQge2FzY2VuZGluZywgYmlzZWN0TGVmdCwgZXh0ZW50fSBmcm9tICdkMy1hcnJheSc7XG5cbmV4cG9ydCB0eXBlIExvY2F0aW9uV2VpZ2h0R2V0dGVyID0gKGlkOiBzdHJpbmcgfCBudW1iZXIpID0+IG51bWJlcjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHJlcHJlc2VudGluZyB0aGUgY2x1c3RlciBsZXZlbHMgZm9yIGVmZmljaWVudCBmbG93IGFnZ3JlZ2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJJbmRleDxGPiB7XG4gIGF2YWlsYWJsZVpvb21MZXZlbHM6IG51bWJlcltdO1xuICBnZXRDbHVzdGVyQnlJZDogKGNsdXN0ZXJJZDogc3RyaW5nIHwgbnVtYmVyKSA9PiBDbHVzdGVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogTGlzdCB0aGUgbm9kZXMgb24gdGhlIGdpdmVuIHpvb20gbGV2ZWwuXG4gICAqL1xuICBnZXRDbHVzdGVyTm9kZXNGb3I6ICh6b29tOiBudW1iZXIgfCB1bmRlZmluZWQpID0+IENsdXN0ZXJOb2RlW10gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBHZXQgdGhlIG1pbiB6b29tIGxldmVsIG9uIHdoaWNoIHRoZSBsb2NhdGlvbiBpcyBub3QgY2x1c3RlcmVkLlxuICAgKi9cbiAgZ2V0TWluWm9vbUZvckxvY2F0aW9uOiAobG9jYXRpb25JZDogc3RyaW5nIHwgbnVtYmVyKSA9PiBudW1iZXI7XG4gIC8qKlxuICAgKiBMaXN0IHRoZSBJRHMgb2YgYWxsIGxvY2F0aW9ucyBpbiB0aGUgY2x1c3RlciAobGVhdmVzIG9mIHRoZSBzdWJ0cmVlIHN0YXJ0aW5nIGluIHRoZSBjbHVzdGVyKS5cbiAgICovXG4gIGV4cGFuZENsdXN0ZXI6IChjbHVzdGVyOiBDbHVzdGVyLCB0YXJnZXRab29tPzogbnVtYmVyKSA9PiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEZpbmQgdGhlIGNsdXN0ZXIgdGhlIGdpdmVuIGxvY2F0aW9uIGlzIHJlc2lkaW5nIGluIG9uIHRoZSBzcGVjaWZpZWQgem9vbSBsZXZlbC5cbiAgICovXG4gIGZpbmRDbHVzdGVyRm9yOiAoXG4gICAgbG9jYXRpb25JZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIHpvb206IG51bWJlcixcbiAgKSA9PiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBZ2dyZWdhdGUgZmxvd3MgZm9yIHRoZSBzcGVjaWZpZWQgem9vbSBsZXZlbC5cbiAgICovXG4gIGFnZ3JlZ2F0ZUZsb3dzOiAoXG4gICAgZmxvd3M6IEZbXSxcbiAgICB6b29tOiBudW1iZXIsXG4gICAge2dldEZsb3dPcmlnaW5JZCwgZ2V0Rmxvd0Rlc3RJZCwgZ2V0Rmxvd01hZ25pdHVkZX06IEZsb3dBY2Nlc3NvcnM8Rj4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGZsb3dDb3VudHNNYXBSZWR1Y2U/OiBGbG93Q291bnRzTWFwUmVkdWNlPEY+O1xuICAgIH0sXG4gICkgPT4gKEYgfCBBZ2dyZWdhdGVGbG93KVtdO1xufVxuXG4vKipcbiAqIEJ1aWxkIENsdXN0ZXJJbmRleCBmcm9tIHRoZSBnaXZlbiBjbHVzdGVyIGhpZXJhcmNoeVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJbmRleDxGPihjbHVzdGVyTGV2ZWxzOiBDbHVzdGVyTGV2ZWxzKTogQ2x1c3RlckluZGV4PEY+IHtcbiAgY29uc3Qgbm9kZXNCeVpvb20gPSBuZXcgTWFwPG51bWJlciwgQ2x1c3Rlck5vZGVbXT4oKTtcbiAgY29uc3QgY2x1c3RlcnNCeUlkID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIsIENsdXN0ZXI+KCk7XG4gIGNvbnN0IG1pblpvb21CeUxvY2F0aW9uSWQgPSBuZXcgTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IHt6b29tLCBub2Rlc30gb2YgY2x1c3RlckxldmVscykge1xuICAgIG5vZGVzQnlab29tLnNldCh6b29tLCBub2Rlcyk7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICBpZiAoaXNDbHVzdGVyKG5vZGUpKSB7XG4gICAgICAgIGNsdXN0ZXJzQnlJZC5zZXQobm9kZS5pZCwgbm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7aWR9ID0gbm9kZTtcbiAgICAgICAgY29uc3QgbXogPSBtaW5ab29tQnlMb2NhdGlvbklkLmdldChpZCk7XG4gICAgICAgIGlmIChteiA9PSBudWxsIHx8IG16ID4gem9vbSkge1xuICAgICAgICAgIG1pblpvb21CeUxvY2F0aW9uSWQuc2V0KGlkLCB6b29tKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IFttaW5ab29tLCBtYXhab29tXSA9IGV4dGVudChjbHVzdGVyTGV2ZWxzLCAoY2wpID0+IGNsLnpvb20pO1xuICBpZiAobWluWm9vbSA9PSBudWxsIHx8IG1heFpvb20gPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGRldGVybWluZSBtaW5ab29tIG9yIG1heFpvb20nKTtcbiAgfVxuXG4gIGNvbnN0IGxlYXZlc1RvQ2x1c3RlcnNCeVpvb20gPSBuZXcgTWFwPFxuICAgIG51bWJlcixcbiAgICBNYXA8c3RyaW5nIHwgbnVtYmVyLCBDbHVzdGVyPlxuICA+KCk7XG5cbiAgZm9yIChjb25zdCBjbHVzdGVyIG9mIGNsdXN0ZXJzQnlJZC52YWx1ZXMoKSkge1xuICAgIGNvbnN0IHt6b29tfSA9IGNsdXN0ZXI7XG4gICAgbGV0IGxlYXZlc1RvQ2x1c3RlcnMgPSBsZWF2ZXNUb0NsdXN0ZXJzQnlab29tLmdldCh6b29tKTtcbiAgICBpZiAoIWxlYXZlc1RvQ2x1c3RlcnMpIHtcbiAgICAgIGxlYXZlc1RvQ2x1c3RlcnMgPSBuZXcgTWFwPHN0cmluZywgQ2x1c3Rlcj4oKTtcbiAgICAgIGxlYXZlc1RvQ2x1c3RlcnNCeVpvb20uc2V0KHpvb20sIGxlYXZlc1RvQ2x1c3RlcnMpO1xuICAgIH1cbiAgICB2aXNpdENsdXN0ZXJMZWF2ZXMoY2x1c3RlciwgKGxlYWZJZCkgPT4ge1xuICAgICAgbGVhdmVzVG9DbHVzdGVycz8uc2V0KGxlYWZJZCwgY2x1c3Rlcik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB2aXNpdENsdXN0ZXJMZWF2ZXMoY2x1c3RlcjogQ2x1c3RlciwgdmlzaXQ6IChpZDogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGNsdXN0ZXIuY2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gY2x1c3RlcnNCeUlkLmdldChjaGlsZElkKTtcbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICB2aXNpdENsdXN0ZXJMZWF2ZXMoY2hpbGQsIHZpc2l0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZpc2l0KGNoaWxkSWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGV4cGFuZENsdXN0ZXIgPSAoY2x1c3RlcjogQ2x1c3RlciwgdGFyZ2V0Wm9vbTogbnVtYmVyID0gbWF4Wm9vbSkgPT4ge1xuICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCB2aXNpdCA9IChjOiBDbHVzdGVyLCBleHBhbmRlZElkczogKHN0cmluZyB8IG51bWJlcilbXSkgPT4ge1xuICAgICAgaWYgKHRhcmdldFpvb20gPiBjLnpvb20pIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGMuY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBjaGlsZCA9IGNsdXN0ZXJzQnlJZC5nZXQoY2hpbGRJZCk7XG4gICAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgICB2aXNpdChjaGlsZCwgZXhwYW5kZWRJZHMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBleHBhbmRlZElkcy5wdXNoKGNoaWxkSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhwYW5kZWRJZHMucHVzaChjLmlkKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZpc2l0KGNsdXN0ZXIsIGlkcyk7XG4gICAgcmV0dXJuIGlkcztcbiAgfTtcblxuICBmdW5jdGlvbiBmaW5kQ2x1c3RlckZvcihsb2NhdGlvbklkOiBzdHJpbmcgfCBudW1iZXIsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGxlYXZlc1RvQ2x1c3RlcnMgPSBsZWF2ZXNUb0NsdXN0ZXJzQnlab29tLmdldCh6b29tKTtcbiAgICBpZiAoIWxlYXZlc1RvQ2x1c3RlcnMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGNsdXN0ZXIgPSBsZWF2ZXNUb0NsdXN0ZXJzLmdldChsb2NhdGlvbklkKTtcbiAgICByZXR1cm4gY2x1c3RlciA/IGNsdXN0ZXIuaWQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBhdmFpbGFibGVab29tTGV2ZWxzID0gY2x1c3RlckxldmVsc1xuICAgIC5tYXAoKGNsKSA9PiArY2wuem9vbSlcbiAgICAuc29ydCgoYSwgYikgPT4gYXNjZW5kaW5nKGEsIGIpKTtcblxuICByZXR1cm4ge1xuICAgIGF2YWlsYWJsZVpvb21MZXZlbHMsXG5cbiAgICBnZXRDbHVzdGVyTm9kZXNGb3I6ICh6b29tKSA9PiB7XG4gICAgICBpZiAoem9vbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZXNCeVpvb20uZ2V0KHpvb20pO1xuICAgIH0sXG5cbiAgICBnZXRDbHVzdGVyQnlJZDogKGNsdXN0ZXJJZCkgPT4gY2x1c3RlcnNCeUlkLmdldChjbHVzdGVySWQpLFxuXG4gICAgZ2V0TWluWm9vbUZvckxvY2F0aW9uOiAobG9jYXRpb25JZCkgPT5cbiAgICAgIG1pblpvb21CeUxvY2F0aW9uSWQuZ2V0KGxvY2F0aW9uSWQpIHx8IG1pblpvb20sXG5cbiAgICBleHBhbmRDbHVzdGVyLFxuXG4gICAgZmluZENsdXN0ZXJGb3IsXG5cbiAgICBhZ2dyZWdhdGVGbG93czogKFxuICAgICAgZmxvd3MsXG4gICAgICB6b29tLFxuICAgICAge2dldEZsb3dPcmlnaW5JZCwgZ2V0Rmxvd0Rlc3RJZCwgZ2V0Rmxvd01hZ25pdHVkZX0sXG4gICAgICBvcHRpb25zID0ge30sXG4gICAgKSA9PiB7XG4gICAgICBpZiAoem9vbSA+IG1heFpvb20pIHtcbiAgICAgICAgcmV0dXJuIGZsb3dzO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0OiAoRiB8IEFnZ3JlZ2F0ZUZsb3cpW10gPSBbXTtcbiAgICAgIGNvbnN0IGFnZ0Zsb3dzQnlLZXkgPSBuZXcgTWFwPHN0cmluZywgQWdncmVnYXRlRmxvdz4oKTtcbiAgICAgIGNvbnN0IG1ha2VLZXkgPSAob3JpZ2luOiBzdHJpbmcgfCBudW1iZXIsIGRlc3Q6IHN0cmluZyB8IG51bWJlcikgPT5cbiAgICAgICAgYCR7b3JpZ2lufToke2Rlc3R9YDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZmxvd0NvdW50c01hcFJlZHVjZSA9IHtcbiAgICAgICAgICBtYXA6IGdldEZsb3dNYWduaXR1ZGUsXG4gICAgICAgICAgcmVkdWNlOiAoYWNjOiBhbnksIGNvdW50OiBudW1iZXIpID0+IChhY2MgfHwgMCkgKyBjb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0gPSBvcHRpb25zO1xuICAgICAgZm9yIChjb25zdCBmbG93IG9mIGZsb3dzKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IGdldEZsb3dPcmlnaW5JZChmbG93KTtcbiAgICAgICAgY29uc3QgZGVzdCA9IGdldEZsb3dEZXN0SWQoZmxvdyk7XG4gICAgICAgIGNvbnN0IG9yaWdpbkNsdXN0ZXIgPSBmaW5kQ2x1c3RlckZvcihvcmlnaW4sIHpvb20pIHx8IG9yaWdpbjtcbiAgICAgICAgY29uc3QgZGVzdENsdXN0ZXIgPSBmaW5kQ2x1c3RlckZvcihkZXN0LCB6b29tKSB8fCBkZXN0O1xuICAgICAgICBjb25zdCBrZXkgPSBtYWtlS2V5KG9yaWdpbkNsdXN0ZXIsIGRlc3RDbHVzdGVyKTtcbiAgICAgICAgaWYgKG9yaWdpbkNsdXN0ZXIgPT09IG9yaWdpbiAmJiBkZXN0Q2x1c3RlciA9PT0gZGVzdCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGZsb3cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBhZ2dyZWdhdGVGbG93ID0gYWdnRmxvd3NCeUtleS5nZXQoa2V5KTtcbiAgICAgICAgICBpZiAoIWFnZ3JlZ2F0ZUZsb3cpIHtcbiAgICAgICAgICAgIGFnZ3JlZ2F0ZUZsb3cgPSB7XG4gICAgICAgICAgICAgIG9yaWdpbjogb3JpZ2luQ2x1c3RlcixcbiAgICAgICAgICAgICAgZGVzdDogZGVzdENsdXN0ZXIsXG4gICAgICAgICAgICAgIGNvdW50OiBmbG93Q291bnRzTWFwUmVkdWNlLm1hcChmbG93KSxcbiAgICAgICAgICAgICAgYWdncmVnYXRlOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFnZ3JlZ2F0ZUZsb3cpO1xuICAgICAgICAgICAgYWdnRmxvd3NCeUtleS5zZXQoa2V5LCBhZ2dyZWdhdGVGbG93KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWdncmVnYXRlRmxvdy5jb3VudCA9IGZsb3dDb3VudHNNYXBSZWR1Y2UucmVkdWNlKFxuICAgICAgICAgICAgICBhZ2dyZWdhdGVGbG93LmNvdW50LFxuICAgICAgICAgICAgICBmbG93Q291bnRzTWFwUmVkdWNlLm1hcChmbG93KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlTG9jYXRpb25XZWlnaHRHZXR0ZXI8Rj4oXG4gIGZsb3dzOiBGW10sXG4gIHtnZXRGbG93T3JpZ2luSWQsIGdldEZsb3dEZXN0SWQsIGdldEZsb3dNYWduaXR1ZGV9OiBGbG93QWNjZXNzb3JzPEY+LFxuKTogTG9jYXRpb25XZWlnaHRHZXR0ZXIge1xuICBjb25zdCBsb2NhdGlvblRvdGFscyA9IHtcbiAgICBpbmNvbWluZzogbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4oKSxcbiAgICBvdXRnb2luZzogbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4oKSxcbiAgfTtcbiAgZm9yIChjb25zdCBmbG93IG9mIGZsb3dzKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gZ2V0Rmxvd09yaWdpbklkKGZsb3cpO1xuICAgIGNvbnN0IGRlc3QgPSBnZXRGbG93RGVzdElkKGZsb3cpO1xuICAgIGNvbnN0IGNvdW50ID0gZ2V0Rmxvd01hZ25pdHVkZShmbG93KTtcbiAgICBsb2NhdGlvblRvdGFscy5pbmNvbWluZy5zZXQoXG4gICAgICBkZXN0LFxuICAgICAgKGxvY2F0aW9uVG90YWxzLmluY29taW5nLmdldChkZXN0KSB8fCAwKSArIGNvdW50LFxuICAgICk7XG4gICAgbG9jYXRpb25Ub3RhbHMub3V0Z29pbmcuc2V0KFxuICAgICAgb3JpZ2luLFxuICAgICAgKGxvY2F0aW9uVG90YWxzLm91dGdvaW5nLmdldChvcmlnaW4pIHx8IDApICsgY291bnQsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gKGlkOiBzdHJpbmcgfCBudW1iZXIpID0+XG4gICAgTWF0aC5tYXgoXG4gICAgICBNYXRoLmFicyhsb2NhdGlvblRvdGFscy5pbmNvbWluZy5nZXQoaWQpIHx8IDApLFxuICAgICAgTWF0aC5hYnMobG9jYXRpb25Ub3RhbHMub3V0Z29pbmcuZ2V0KGlkKSB8fCAwKSxcbiAgICApO1xufVxuXG4vKipcbiAqIEBwYXJhbSBhdmFpbGFibGVab29tTGV2ZWxzIE11c3QgYmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlclxuICogQHBhcmFtIHRhcmdldFpvb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBcHByb3ByaWF0ZVpvb21MZXZlbChcbiAgYXZhaWxhYmxlWm9vbUxldmVsczogbnVtYmVyW10sXG4gIHRhcmdldFpvb206IG51bWJlcixcbikge1xuICBpZiAoIWF2YWlsYWJsZVpvb21MZXZlbHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBhdmFpbGFibGUgem9vbSBsZXZlbHMnKTtcbiAgfVxuICByZXR1cm4gYXZhaWxhYmxlWm9vbUxldmVsc1tcbiAgICBNYXRoLm1pbihcbiAgICAgIGJpc2VjdExlZnQoYXZhaWxhYmxlWm9vbUxldmVscywgTWF0aC5mbG9vcih0YXJnZXRab29tKSksXG4gICAgICBhdmFpbGFibGVab29tTGV2ZWxzLmxlbmd0aCAtIDEsXG4gICAgKVxuICBdO1xufVxuIl19
|
package/dist/cluster/cluster.js
CHANGED
|
@@ -37,12 +37,12 @@ export function clusterLocations(locations, locationAccessors, getLocationWeight
|
|
|
37
37
|
const x = getLocationLon(location);
|
|
38
38
|
const y = getLocationLat(location);
|
|
39
39
|
clusters.push({
|
|
40
|
-
x: lngX(x),
|
|
40
|
+
x: lngX(x), // projected point coordinates
|
|
41
41
|
y: latY(y),
|
|
42
42
|
weight: getLocationWeight(getLocationId(location)),
|
|
43
|
-
zoom: Infinity,
|
|
44
|
-
index: locationsCount,
|
|
45
|
-
parentId: -1,
|
|
43
|
+
zoom: Infinity, // the last zoom the point was processed at
|
|
44
|
+
index: locationsCount, // index of the source feature in the original input array,
|
|
45
|
+
parentId: -1, // parent cluster id
|
|
46
46
|
location,
|
|
47
47
|
});
|
|
48
48
|
locationsCount++;
|
|
@@ -149,11 +149,11 @@ export function clusterLocations(locations, locationAccessors, getLocationWeight
|
|
|
149
149
|
}
|
|
150
150
|
function createCluster(x, y, id, numPoints, weight) {
|
|
151
151
|
return {
|
|
152
|
-
x,
|
|
152
|
+
x, // weighted cluster center
|
|
153
153
|
y,
|
|
154
|
-
zoom: Infinity,
|
|
155
|
-
id,
|
|
156
|
-
parentId: -1,
|
|
154
|
+
zoom: Infinity, // the last zoom the cluster was processed at
|
|
155
|
+
id, // encodes index of the first child of the cluster and its zoom level
|
|
156
|
+
parentId: -1, // parent cluster id
|
|
157
157
|
numPoints,
|
|
158
158
|
weight,
|
|
159
159
|
};
|
|
@@ -264,4 +264,4 @@ function findLastIndex(arr, predicate) {
|
|
|
264
264
|
}
|
|
265
265
|
return -1;
|
|
266
266
|
}
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbHVzdGVyL2NsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3JDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQWtDNUIsTUFBTSxjQUFjLEdBQVk7SUFDOUIsT0FBTyxFQUFFLENBQUM7SUFDVixPQUFPLEVBQUUsRUFBRTtJQUNYLE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEdBQUc7SUFDWCxRQUFRLEVBQUUsRUFBRTtJQUNaLGVBQWUsRUFBRSxDQUFDLEVBQVUsRUFBRSxTQUFpQixFQUFFLEVBQUUsQ0FBQyxTQUFTO0lBQzdELGFBQWEsRUFBRSxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUk7Q0FDM0MsQ0FBQztBQXNCRixNQUFNLFVBQVUsV0FBVyxDQUFJLENBQVc7SUFDeEMsTUFBTSxFQUFDLEtBQUssRUFBQyxHQUFHLENBQWlCLENBQUM7SUFDbEMsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFJLENBQVc7SUFDM0MsTUFBTSxFQUFDLEVBQUUsRUFBQyxHQUFHLENBQWlCLENBQUM7SUFDL0IsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ3BCLENBQUM7QUFJRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLFNBQXNCLEVBQ3RCLGlCQUF1QyxFQUN2QyxpQkFBdUMsRUFDdkMsT0FBMEI7SUFFMUIsTUFBTSxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFDLEdBQUcsaUJBQWlCLENBQUM7SUFDMUUsTUFBTSxJQUFJLEdBQUc7UUFDWCxHQUFHLGNBQWM7UUFDakIsR0FBRyxPQUFPO0tBQ1gsQ0FBQztJQUNGLE1BQU0sRUFBQyxPQUFP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LENBQUM7YUFDZDtTQUNGO0tBQ0Y7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQ3BCLEdBQVEsRUFDUixTQUEyRDtJQUUzRCxLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUM3QixPQUFPLENBQUMsQ0FBQztTQUNWO0tBQ0Y7SUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIEZsb3dtYXAuZ2wgY29udHJpYnV0b3JzXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMCBUZXJhbHl0aWNzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7bWluLCByb2xsdXB9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBLREJ1c2ggZnJvbSAna2RidXNoJztcbmltcG9ydCB7TG9jYXRpb25XZWlnaHRHZXR0ZXJ9IGZyb20gJy4vQ2x1c3RlckluZGV4JztcbmltcG9ydCB7Q2x1c3RlciwgQ2x1c3RlckxldmVsLCBDbHVzdGVyTm9kZSwgTG9jYXRpb25BY2Nlc3NvcnN9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgYSBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L3N1cGVyY2x1c3RlclxuICpcbiAqICBJU0MgTGljZW5zZVxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTYsIE1hcGJveFxuICpcbiAqICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZVxuICogIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2VcbiAqICBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAqXG4gKiAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuICogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkRcbiAqICBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcbiAqICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TU1xuICogIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUlxuICogIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0ZcbiAqICBUSElTIFNPRlRXQVJFLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIG1pblpvb206IG51bWJlcjsgLy8gbWluIHpvb20gdG8gZ2VuZXJhdGUgY2x1c3RlcnMgb25cbiAgbWF4Wm9vbTogbnVtYmVyOyAvLyBtYXggem9vbSBsZXZlbCB0byBjbHVzdGVyIHRoZSBwb2ludHMgb25cbiAgcmFkaXVzOiBudW1iZXI7IC8vIGNsdXN0ZXIgcmFkaXVzIGluIHBpeGVsc1xuICBleHRlbnQ6IG51bWJlcjsgLy8gdGlsZSBleHRlbnQgKHJhZGl1cyBpcyBjYWxjdWxhdGVkIHJlbGF0aXZlIHRvIGl0KVxuICBub2RlU2l6ZTogbnVtYmVyOyAvLyBzaXplIG9mIHRoZSBLRC10cmVlIGxlYWYgbm9kZSwgYWZmZWN0cyBwZXJmb3JtYW5jZVxuICBtYWtlQ2x1c3Rlck5hbWU6IChpZDogbnVtYmVyLCBudW1Qb2ludHM6IG51bWJlcikgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtYWtlQ2x1c3RlcklkOiAoaWQ6IG51bWJlcikgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogT3B0aW9ucyA9IHtcbiAgbWluWm9vbTogMCxcbiAgbWF4Wm9vbTogMTYsXG4gIHJhZGl1czogNDAsXG4gIGV4dGVudDogNTEyLFxuICBub2RlU2l6ZTogNjQsXG4gIG1ha2VDbHVzdGVyTmFtZTogKGlkOiBudW1iZXIsIG51bVBvaW50czogbnVtYmVyKSA9PiB1bmRlZmluZWQsXG4gIG1ha2VDbHVzdGVySWQ6IChpZDogbnVtYmVyKSA9PiBge1ske2lkfV19YCxcbn07XG5cbmludGVyZmFjZSBCYXNlUG9pbnQge1xuICB4OiBudW1iZXI7IC8vIHByb2plY3RlZCBwb2ludCBjb29yZGluYXRlc1xuICB5OiBudW1iZXI7XG4gIHdlaWdodDogbnVtYmVyO1xuICB6b29tOiBudW1iZXI7IC8vIHRoZSBsYXN0IHpvb20gdGhlIHBvaW50IHdhcyBwcm9jZXNzZWQgYXRcbiAgcGFyZW50SWQ6IG51bWJlcjsgLy8gcGFyZW50IGNsdXN0ZXIgaWRcbn1cblxuaW50ZXJmYWNlIExlYWZQb2ludDxMPiBleHRlbmRzIEJhc2VQb2ludCB7XG4gIGluZGV4OiBudW1iZXI7IC8vIGluZGV4IG9mIHRoZSBzb3VyY2UgZmVhdHVyZSBpbiB0aGUgb3JpZ2luYWwgaW5wdXQgYXJyYXksXG4gIGxvY2F0aW9uOiBMO1xufVxuXG5pbnRlcmZhY2UgQ2x1c3RlclBvaW50IGV4dGVuZHMgQmFzZVBvaW50IHtcbiAgaWQ6IG51bWJlcjtcbiAgbnVtUG9pbnRzOiBudW1iZXI7XG59XG5cbnR5cGUgUG9pbnQ8TD4gPSBMZWFmUG9pbnQ8TD4gfCBDbHVzdGVyUG9pbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYWZQb2ludDxMPihwOiBQb2ludDxMPik6IHAgaXMgTGVhZlBvaW50PEw+IHtcbiAgY29uc3Qge2luZGV4fSA9IHAgYXMgTGVhZlBvaW50PEw+O1xuICByZXR1cm4gaW5kZXggIT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2x1c3RlclBvaW50PEw+KHA6IFBvaW50PEw+KTogcCBpcyBDbHVzdGVyUG9pbnQge1xuICBjb25zdCB7aWR9ID0gcCBhcyBDbHVzdGVyUG9pbnQ7XG4gIHJldHVybiBpZCAhPSBudWxsO1xufVxuXG50eXBlIFpvb21MZXZlbEtEQnVzaCA9IGFueTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNsdXN0ZXJMb2NhdGlvbnM8TD4oXG4gIGxvY2F0aW9uczogSXRlcmFibGU8TD4sXG4gIGxvY2F0aW9uQWNjZXNzb3JzOiBMb2NhdGlvbkFjY2Vzc29yczxMPixcbiAgZ2V0TG9jYXRpb25XZWlnaHQ6IExvY2F0aW9uV2VpZ2h0R2V0dGVyLFxuICBvcHRpb25zPzogUGFydGlhbDxPcHRpb25zPixcbik6IENsdXN0ZXJMZXZlbFtdIHtcbiAgY29uc3Qge2dldExvY2F0aW9uTG9uLCBnZXRMb2NhdGlvbkxhdCwgZ2V0TG9jYXRpb25JZH0gPSBsb2NhdGlvbkFjY2Vzc29ycztcbiAgY29uc3Qgb3B0cyA9IHtcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuICBjb25zdCB7bWluWm9vbSwgbWF4Wm9vbSwgbm9kZVNpemUsIG1ha2VDbHVzdGVyTmFtZSwgbWFrZUNsdXN0ZXJJZH0gPSBvcHRzO1xuXG4gIGNvbnN0IHRyZWVzID0gbmV3IEFycmF5PFpvb21MZXZlbEtEQnVzaD4obWF4Wm9vbSArIDEpO1xuXG4gIC8vIGdlbmVyYXRlIGEgY2x1c3RlciBvYmplY3QgZm9yIGVhY2ggcG9pbnQgYW5kIGluZGV4IGlucHV0IHBvaW50cyBpbnRvIGEgS0QtdHJlZVxuICBsZXQgY2x1c3RlcnMgPSBuZXcgQXJyYXk8UG9pbnQ8TD4+KCk7XG4gIGxldCBsb2NhdGlvbnNDb3VudCA9IDA7XG4gIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgY29uc3QgeCA9IGdldExvY2F0aW9uTG9uKGxvY2F0aW9uKTtcbiAgICBjb25zdCB5ID0gZ2V0TG9jYXRpb25MYXQobG9jYXRpb24pO1xuICAgIGNsdXN0ZXJzLnB1c2goe1xuICAgICAgeDogbG5nWCh4KSwgLy8gcHJvamVjdGVkIHBvaW50IGNvb3JkaW5hdGVzXG4gICAgICB5OiBsYXRZKHkpLFxuICAgICAgd2VpZ2h0OiBnZXRMb2NhdGlvbldlaWdodChnZXRMb2NhdGlvbklkKGxvY2F0aW9uKSksXG4gICAgICB6b29tOiBJbmZpbml0eSwgLy8gdGhlIGxhc3Qgem9vbSB0aGUgcG9pbnQgd2FzIHByb2Nlc3NlZCBhdFxuICAgICAgaW5kZXg6IGxvY2F0aW9uc0NvdW50LCAvLyBpbmRleCBvZiB0aGUgc291cmNlIGZlYXR1cmUgaW4gdGhlIG9yaWdpbmFsIGlucHV0IGFycmF5LFxuICAgICAgcGFyZW50SWQ6IC0xLCAvLyBwYXJlbnQgY2x1c3RlciBpZFxuICAgICAgbG9jYXRpb24sXG4gICAgfSk7XG4gICAgbG9jYXRpb25zQ291bnQrKztcbiAgfVxuXG4gIGNvbnN0IG1ha2VCdXNoID0gKHBvaW50czogUG9pbnQ8TD5bXSkgPT4ge1xuICAgIGNvbnN0IGJ1c2ggPSBuZXcgS0RCdXNoKHBvaW50cy5sZW5ndGgsIG5vZGVTaXplLCBGbG9hdDMyQXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBidXNoLmFkZChwb2ludHNbaV0ueCwgcG9pbnRzW2ldLnkpO1xuICAgIH1cbiAgICBidXNoLmZpbmlzaCgpO1xuICAgIGJ1c2gucG9pbnRzID0gcG9pbnRzO1xuICAgIHJldHVybiBidXNoO1xuICB9O1xuXG4gIC8vIGNsdXN0ZXIgcG9pbnRzIG9uIG1heCB6b29tLCB0aGVuIGNsdXN0ZXIgdGhlIHJlc3VsdHMgb24gcHJldmlvdXMgem9vbSwgZXRjLjtcbiAgLy8gcmVzdWx0cyBpbiBhIGNsdXN0ZXIgaGllcmFyY2h5IGFjcm9zcyB6b29tIGxldmVsc1xuICB0cmVlc1ttYXhab29tICsgMV0gPSBtYWtlQnVzaChjbHVzdGVycyk7XG4gIGxldCBwcmV2Wm9vbSA9IG1heFpvb20gKyAxO1xuXG4gIGZvciAobGV0IHogPSBtYXhab29tOyB6ID49IG1pblpvb207IHotLSkge1xuICAgIC8vIGNyZWF0ZSBhIG5ldyBzZXQgb2YgY2x1c3RlcnMgZm9yIHRoZSB6b29tIGFuZCBpbmRleCB0aGVtIHdpdGggYSBLRC10cmVlXG4gICAgY29uc3QgX2NsdXN0ZXJzID0gY2x1c3RlcihjbHVzdGVycywgeiwgdHJlZXNbcHJldlpvb21dLCBvcHRzKTtcbiAgICBpZiAoX2NsdXN0ZXJzLmxlbmd0aCA9PT0gY2x1c3RlcnMubGVuZ3RoKSB7XG4gICAgICAvLyBzYW1lIG51bWJlciBvZiBjbHVzdGVycyA9PiBtb3ZlIHRoZSBoaWdoZXIgbGV2ZWwgY2x1c3RlcnMgdXBcbiAgICAgIC8vIG5vIG5lZWQgdG8ga2VlcCB0aGUgc2FtZSBkYXRhIG9uIG11bHRpcGxlIGxldmVsc1xuICAgICAgdHJlZXNbel0gPSB0cmVlc1twcmV2Wm9vbV07XG4gICAgICB0cmVlc1twcmV2Wm9vbV0gPSB1bmRlZmluZWQ7XG4gICAgICBwcmV2Wm9vbSA9IHo7XG4gICAgICBjbHVzdGVycyA9IF9jbHVzdGVycztcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldlpvb20gPSB6O1xuICAgICAgY2x1c3RlcnMgPSBfY2x1c3RlcnM7XG4gICAgICB0cmVlc1t6XSA9IG1ha2VCdXNoKGNsdXN0ZXJzKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHJlZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgbnVtYmVyc09mQ2x1c3RlcnM6IG51bWJlcltdID0gdHJlZXMubWFwKChkKSA9PiBkPy5wb2ludHMubGVuZ3RoKTtcbiAgY29uc3QgbWluQ2x1c3RlcnMgPSBtaW4obnVtYmVyc09mQ2x1c3RlcnMuZmlsdGVyKChkKSA9PiBkID4gMCkpO1xuXG4gIGxldCBtYXhBdmFpbFpvb20gPVxuICAgIGZpbmRJbmRleE9mTWF4KG51bWJlcnNPZkNsdXN0ZXJzKSA/PyBudW1iZXJzT2ZDbHVzdGVycy5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IG51bVVuaXF1ZUxvY2F0aW9ucyA9IGNvdW50VW5pcXVlTG9jYXRpb25zKGxvY2F0aW9ucywgbG9jYXRpb25BY2Nlc3NvcnMpO1xuICBpZiAobnVtVW5pcXVlTG9jYXRpb25zIDwgbG9jYXRpb25zQ291bnQpIHtcbiAgICAvLyBEdXBsaWNhdGUgbG9jYXRpb25zIHdvdWxkIGJlIGNsdXN0ZXJlZCB0b2dldGhlciBhdCBhbnkgem9vbSBsZXZlbCB3aGljaCBjYW4gbGVhZCB0byBoYXZpbmcgdG9vIG1hbnkgem9vbXMuXG4gICAgLy8gVG8gYXZvaWQgdGhhdCwgd2UgbmVlZCB0byBmaW5kIHRoZSBtYXggem9vbSBsZXZlbCB0aGF0IGhhcyBsZXNzIG9yIGVxdWFsIGNsdXN0ZXJzIHRoYW4gdW5pcXVlIGxvY2F0aW9uc1xuICAgIC8vIGFuZCBkcm9wIGFsbCB6b29tIGxldmVscyBiZXlvbmQgdGhhdCAoZXhjZXB0IHRoZSB1bmNsdXN0ZXJlZCBsZXZlbCkuXG4gICAgY29uc3QgbWF4Q2x1c3RlcnNab29tID0gZmluZExhc3RJbmRleChcbiAgICAgIG51bWJlcnNPZkNsdXN0ZXJzLFxuICAgICAgKGQpID0+IGQgPD0gbnVtVW5pcXVlTG9jYXRpb25zLFxuICAgICk7XG4gICAgaWYgKG1heENsdXN0ZXJzWm9vbSA+PSAwKSB7XG4gICAgICAvLyBOb3csIG1vdmUgdGhlIHVuY2x1c3RlcmVkIHBvaW50cyB0byB0aGUgbmV4dCB6b29tIGxldmVsIHRvIGF2b2lkIGhhdmluZyBhIGdhcFxuICAgICAgaWYgKG1heENsdXN0ZXJzWm9vbSA8IG1heEF2YWlsWm9vbSkge1xuICAgICAgICB0cmVlc1ttYXhDbHVzdGVyc1pvb20gKyAxXSA9IHRyZWVzW21heEF2YWlsWm9vbV07XG4gICAgICAgIHRyZWVzLnNwbGljZShtYXhDbHVzdGVyc1pvb20gKyAyKTsgLy8gUmVtb3ZlIGFsbCB6b29tIGxldmVscyBiZXlvbmQgbWF4Q2x1c3RlcnNab29tXG4gICAgICB9XG4gICAgICBtYXhBdmFpbFpvb20gPSBtYXhDbHVzdGVyc1pvb20gKyAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1pbkF2YWlsWm9vbSA9IE1hdGgubWluKFxuICAgIG1heEF2YWlsWm9vbSxcbiAgICBtaW5DbHVzdGVycyA/IG51bWJlcnNPZkNsdXN0ZXJzLmxhc3RJbmRleE9mKG1pbkNsdXN0ZXJzKSA6IG1heEF2YWlsWm9vbSxcbiAgKTtcblxuICBjb25zdCBjbHVzdGVyTGV2ZWxzID0gbmV3IEFycmF5PENsdXN0ZXJMZXZlbD4oKTtcbiAgcHJldlpvb20gPSBOYU47XG4gIGZvciAobGV0IHpvb20gPSBtYXhBdmFpbFpvb207IHpvb20gPj0gbWluQXZhaWxab29tOyB6b29tLS0pIHtcbiAgICBsZXQgY2hpbGRyZW5CeVBhcmVudDogTWFwPG51bWJlciwgKHN0cmluZyB8IG51bWJlcilbXT4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgdHJlZSA9IHRyZWVzW3pvb21dO1xuICAgIGlmICghdHJlZSkgY29udGludWU7XG4gICAgaWYgKHRyZWVzW3ByZXZab29tXSAmJiB6b29tIDwgbWF4QXZhaWxab29tKSB7XG4gICAgICBjaGlsZHJlbkJ5UGFyZW50ID0gcm9sbHVwKFxuICAgICAgICB0cmVlc1twcmV2Wm9vbV0ucG9pbnRzLFxuICAgICAgICAocG9pbnRzOiBhbnlbXSkgPT5cbiAgICAgICAgICBwb2ludHMubWFwKChwOiBhbnkpID0+XG4gICAgICAgICAgICBwLmlkID8gbWFrZUNsdXN0ZXJJZChwLmlkKSA6IGdldExvY2F0aW9uSWQocC5sb2NhdGlvbiksXG4gICAgICAgICAgKSxcbiAgICAgICAgKHBvaW50OiBhbnkpID0+IHBvaW50LnBhcmVudElkLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlczogQ2x1c3Rlck5vZGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcG9pbnQgb2YgdHJlZS5wb2ludHMpIHtcbiAgICAgIGNvbnN0IHt4LCB5LCBudW1Qb2ludHMsIGxvY2F0aW9ufSA9IHBvaW50O1xuICAgICAgaWYgKGlzTGVhZlBvaW50KHBvaW50KSkge1xuICAgICAgICBub2Rlcy5wdXNoKHtcbiAgICAgICAgICBpZDogZ2V0TG9jYXRpb25JZChsb2NhdGlvbiksXG4gICAgICAgICAgem9vbSxcbiAgICAgICAgICBsYXQ6IGdldExvY2F0aW9uTGF0KGxvY2F0aW9uKSxcbiAgICAgICAgICBsb246IGdldExvY2F0aW9uTG9uKGxvY2F0aW9uKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzQ2x1c3RlclBvaW50KHBvaW50KSkge1xuICAgICAgICBjb25zdCB7aWR9ID0gcG9pbnQ7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gY2hpbGRyZW5CeVBhcmVudCAmJiBjaGlsZHJlbkJ5UGFyZW50LmdldChpZCk7XG4gICAgICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgICAgICAvLyBNaWdodCBoYXBwZW4gaWYgdGhlcmUgYXJlIG11bHRpcGxlIGxvY2F0aW9ucyB3aXRoIHNhbWUgY29vcmRpbmF0ZXNcbiAgICAgICAgICBjb25zb2xlLndhcm4oYE9taXR0aW5nIGNsdXN0ZXIgd2l0aCBubyBjaGlsZHJlbiwgcG9pbnQ6YCwgcG9pbnQpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsdXN0ZXIgPSB7XG4gICAgICAgICAgaWQ6IG1ha2VDbHVzdGVySWQoaWQpLFxuICAgICAgICAgIG5hbWU6IG1ha2VDbHVzdGVyTmFtZShpZCwgbnVtUG9pbnRzKSxcbiAgICAgICAgICB6b29tLFxuICAgICAgICAgIGxhdDogeUxhdCh5KSxcbiAgICAgICAgICBsb246IHhMbmcoeCksXG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuID8/IFtdLFxuICAgICAgICB9IGFzIENsdXN0ZXI7XG4gICAgICAgIG5vZGVzLnB1c2goY2x1c3Rlcik7XG4gICAgICB9XG4gICAgfVxuICAgIGNsdXN0ZXJMZXZlbHMucHVzaCh7XG4gICAgICB6b29tLFxuICAgICAgbm9kZXMsXG4gICAgfSk7XG4gICAgcHJldlpvb20gPSB6b29tO1xuICB9XG4gIHJldHVybiBjbHVzdGVyTGV2ZWxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDbHVzdGVyKFxuICB4OiBudW1iZXIsXG4gIHk6IG51bWJlcixcbiAgaWQ6IG51bWJlcixcbiAgbnVtUG9pbnRzOiBudW1iZXIsXG4gIHdlaWdodDogbnVtYmVyLFxuKTogQ2x1c3RlclBvaW50IHtcbiAgcmV0dXJuIHtcbiAgICB4LCAvLyB3ZWlnaHRlZCBjbHVzdGVyIGNlbnRlclxuICAgIHksXG4gICAgem9vbTogSW5maW5pdHksIC8vIHRoZSBsYXN0IHpvb20gdGhlIGNsdXN0ZXIgd2FzIHByb2Nlc3NlZCBhdFxuICAgIGlkLCAvLyBlbmNvZGVzIGluZGV4IG9mIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUgY2x1c3RlciBhbmQgaXRzIHpvb20gbGV2ZWxcbiAgICBwYXJlbnRJZDogLTEsIC8vIHBhcmVudCBjbHVzdGVyIGlkXG4gICAgbnVtUG9pbnRzLFxuICAgIHdlaWdodCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2x1c3RlcjxMPihcbiAgcG9pbnRzOiBQb2ludDxMPltdLFxuICB6b29tOiBudW1iZXIsXG4gIHRyZWU6IFpvb21MZXZlbEtEQnVzaCxcbiAgb3B0aW9uczogT3B0aW9ucyxcbikge1xuICBjb25zdCBjbHVzdGVyczogUG9pbnQ8TD5bXSA9IFtdO1xuICBjb25zdCB7cmFkaXVzLCBleHRlbnR9ID0gb3B0aW9ucztcbiAgY29uc3QgciA9IHJhZGl1cyAvIChleHRlbnQgKiBNYXRoLnBvdygyLCB6b29tKSk7XG5cbiAgLy8gbG9vcCB0aHJvdWdoIGVhY2ggcG9pbnRcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwID0gcG9pbnRzW2ldO1xuICAgIC8vIGlmIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGUgcG9pbnQgYXQgdGhpcyB6b29tIGxldmVsLCBza2lwIGl0XG4gICAgaWYgKHAuem9vbSA8PSB6b29tKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcC56b29tID0gem9vbTtcblxuICAgIC8vIGZpbmQgYWxsIG5lYXJieSBwb2ludHNcbiAgICBjb25zdCBuZWlnaGJvcklkcyA9IHRyZWUud2l0aGluKHAueCwgcC55LCByKTtcblxuICAgIGxldCB3ZWlnaHQgPSBwLndlaWdodCB8fCAxO1xuICAgIGxldCBudW1Qb2ludHMgPSBpc0NsdXN0ZXJQb2ludChwKSA/IHAubnVtUG9pbnRzIDogMTtcbiAgICBsZXQgd3ggPSBwLnggKiB3ZWlnaHQ7XG4gICAgbGV0IHd5ID0gcC55ICogd2VpZ2h0O1xuXG4gICAgLy8gZW5jb2RlIGJvdGggem9vbSBhbmQgcG9pbnQgaW5kZXggb24gd2hpY2ggdGhlIGNsdXN0ZXIgb3JpZ2luYXRlZFxuICAgIGNvbnN0IGlkID0gKGkgPDwgNSkgKyAoem9vbSArIDEpO1xuXG4gICAgZm9yIChjb25zdCBuZWlnaGJvcklkIG9mIG5laWdoYm9ySWRzKSB7XG4gICAgICBjb25zdCBiID0gdHJlZS5wb2ludHNbbmVpZ2hib3JJZF07XG4gICAgICAvLyBmaWx0ZXIgb3V0IG5laWdoYm9ycyB0aGF0IGFyZSBhbHJlYWR5IHByb2Nlc3NlZFxuICAgICAgaWYgKGIuem9vbSA8PSB6b29tKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYi56b29tID0gem9vbTsgLy8gc2F2ZSB0aGUgem9vbSAoc28gaXQgZG9lc24ndCBnZXQgcHJvY2Vzc2VkIHR3aWNlKVxuXG4gICAgICBjb25zdCB3ZWlnaHQyID0gYi53ZWlnaHQgfHwgMTtcbiAgICAgIGNvbnN0IG51bVBvaW50czIgPSBiLm51bVBvaW50cyB8fCAxO1xuICAgICAgd3ggKz0gYi54ICogd2VpZ2h0MjsgLy8gYWNjdW11bGF0ZSBjb29yZGluYXRlcyBmb3IgY2FsY3VsYXRpbmcgd2VpZ2h0ZWQgY2VudGVyXG4gICAgICB3eSArPSBiLnkgKiB3ZWlnaHQyO1xuXG4gICAgICB3ZWlnaHQgKz0gd2VpZ2h0MjtcbiAgICAgIG51bVBvaW50cyArPSBudW1Qb2ludHMyO1xuICAgICAgYi5wYXJlbnRJZCA9IGlkO1xuICAgIH1cblxuICAgIGlmIChudW1Qb2ludHMgPT09IDEpIHtcbiAgICAgIGNsdXN0ZXJzLnB1c2gocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAucGFyZW50SWQgPSBpZDtcbiAgICAgIGNsdXN0ZXJzLnB1c2goXG4gICAgICAgIGNyZWF0ZUNsdXN0ZXIod3ggLyB3ZWlnaHQsIHd5IC8gd2VpZ2h0LCBpZCwgbnVtUG9pbnRzLCB3ZWlnaHQpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59XG5cbi8vIHNwaGVyaWNhbCBtZXJjYXRvciB0byBsb25naXR1ZGUvbGF0aXR1ZGVcbmZ1bmN0aW9uIHhMbmcoeDogbnVtYmVyKSB7XG4gIHJldHVybiAoeCAtIDAuNSkgKiAzNjA7XG59XG5cbmZ1bmN0aW9uIHlMYXQoeTogbnVtYmVyKSB7XG4gIGNvbnN0IHkyID0gKCgxODAgLSB5ICogMzYwKSAqIE1hdGguUEkpIC8gMTgwO1xuICByZXR1cm4gKDM2MCAqIE1hdGguYXRhbihNYXRoLmV4cCh5MikpKSAvIE1hdGguUEkgLSA5MDtcbn1cblxuLy8gbG9uZ2l0dWRlL2xhdGl0dWRlIHRvIHNwaGVyaWNhbCBtZXJjYXRvciBpbiBbMC4uMV0gcmFuZ2VcbmZ1bmN0aW9uIGxuZ1gobG5nOiBudW1iZXIpIHtcbiAgcmV0dXJuIGxuZyAvIDM2MCArIDAuNTtcbn1cblxuZnVuY3Rpb24gbGF0WShsYXQ6IG51bWJlcikge1xuICBjb25zdCBzaW4gPSBNYXRoLnNpbigobGF0ICogTWF0aC5QSSkgLyAxODApO1xuICBjb25zdCB5ID0gMC41IC0gKDAuMjUgKiBNYXRoLmxvZygoMSArIHNpbikgLyAoMSAtIHNpbikpKSAvIE1hdGguUEk7XG4gIHJldHVybiB5IDwgMCA/IDAgOiB5ID4gMSA/IDEgOiB5O1xufVxuXG5mdW5jdGlvbiBnZXRYPEw+KHA6IFBvaW50PEw+KSB7XG4gIHJldHVybiBwLng7XG59XG5cbmZ1bmN0aW9uIGdldFk8TD4ocDogUG9pbnQ8TD4pIHtcbiAgcmV0dXJuIHAueTtcbn1cblxuZnVuY3Rpb24gY291bnRVbmlxdWVMb2NhdGlvbnM8TD4oXG4gIGxvY2F0aW9uczogSXRlcmFibGU8TD4sXG4gIGxvY2F0aW9uQWNjZXNzb3JzOiBMb2NhdGlvbkFjY2Vzc29yczxMPixcbikge1xuICBjb25zdCB7Z2V0TG9jYXRpb25Mb24sIGdldExvY2F0aW9uTGF0fSA9IGxvY2F0aW9uQWNjZXNzb3JzO1xuICBjb25zdCBjb3VudEJ5TGF0TG9uID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgbGV0IHVuaXF1ZUNudCA9IDA7XG4gIGZvciAoY29uc3QgbG9jIG9mIGxvY2F0aW9ucykge1xuICAgIGNvbnN0IGxvbiA9IGdldExvY2F0aW9uTG9uKGxvYyk7XG4gICAgY29uc3QgbGF0ID0gZ2V0TG9jYXRpb25MYXQobG9jKTtcbiAgICBjb25zdCBrZXkgPSBgJHtsb259LCR7bGF0fWA7XG4gICAgY29uc3QgcHJldiA9IGNvdW50QnlMYXRMb24uZ2V0KGtleSk7XG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICB1bmlxdWVDbnQrKztcbiAgICB9XG4gICAgY291bnRCeUxhdExvbi5zZXQoa2V5LCBwcmV2ID8gcHJldiArIDEgOiAxKTtcbiAgfVxuICByZXR1cm4gdW5pcXVlQ250O1xufVxuXG5mdW5jdGlvbiBmaW5kSW5kZXhPZk1heChhcnI6IChudW1iZXIgfCB1bmRlZmluZWQpW10pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBsZXQgbWF4ID0gLUluZmluaXR5O1xuICBsZXQgbWF4SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHZhbHVlID0gYXJyW2ldO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmICh2YWx1ZSA+IG1heCkge1xuICAgICAgICBtYXggPSB2YWx1ZTtcbiAgICAgICAgbWF4SW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXhJbmRleDtcbn1cblxuZnVuY3Rpb24gZmluZExhc3RJbmRleDxUPihcbiAgYXJyOiBUW10sXG4gIHByZWRpY2F0ZTogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBib29sZWFuLFxuKTogbnVtYmVyIHtcbiAgZm9yIChsZXQgaSA9IGFyci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyW2ldLCBpLCBhcnIpKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIl19
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbHVzdGVyL2NsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3JDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQWtDNUIsTUFBTSxjQUFjLEdBQVk7SUFDOUIsT0FBTyxFQUFFLENBQUM7SUFDVixPQUFPLEVBQUUsRUFBRTtJQUNYLE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEdBQUc7SUFDWCxRQUFRLEVBQUUsRUFBRTtJQUNaLGVBQWUsRUFBRSxDQUFDLEVBQVUsRUFBRSxTQUFpQixFQUFFLEVBQUUsQ0FBQyxTQUFTO0lBQzdELGFBQWEsRUFBRSxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUk7Q0FDM0MsQ0FBQztBQXNCRixNQUFNLFVBQVUsV0FBVyxDQUFJLENBQVc7SUFDeEMsTUFBTSxFQUFDLEtBQUssRUFBQyxHQUFHLENBQWlCLENBQUM7SUFDbEMsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFJLENBQVc7SUFDM0MsTUFBTSxFQUFDLEVBQUUsRUFBQyxHQUFHLENBQWlCLENBQUM7SUFDL0IsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ3BCLENBQUM7QUFJRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLFNBQXNCLEVBQ3RCLGlCQUF1QyxFQUN2QyxpQkFBdUMsRUFDdkMsT0FBMEI7SUFFMUIsTUFBTSxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFDLEdBQUcsaUJBQWlCLENBQUM7SUFDMUUsTUFBTSxJQUFJLEdBQUc7UUFDWCxHQUFHLGNBQWM7UUFDakIsR0FBRyxPQUFPO0tBQ1gsQ0FBQztJQUNGLE1BQU0sRUFBQyxPQUFP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QUVELFNBQVMsY0FBYyxDQUFDLEdBQTJCO0lBQ2pELElBQUksR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ3BCLElBQUksUUFBUSxHQUF1QixTQUFTLENBQUM7SUFFN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsR0FBRyxHQUFHLEtBQUssQ0FBQztnQkFDWixRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixHQUFRLEVBQ1IsU0FBMkQ7SUFFM0QsS0FBSyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDekMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIEZsb3dtYXAuZ2wgY29udHJpYnV0b3JzXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMCBUZXJhbHl0aWNzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7bWluLCByb2xsdXB9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBLREJ1c2ggZnJvbSAna2RidXNoJztcbmltcG9ydCB7TG9jYXRpb25XZWlnaHRHZXR0ZXJ9IGZyb20gJy4vQ2x1c3RlckluZGV4JztcbmltcG9ydCB7Q2x1c3RlciwgQ2x1c3RlckxldmVsLCBDbHVzdGVyTm9kZSwgTG9jYXRpb25BY2Nlc3NvcnN9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgYSBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L3N1cGVyY2x1c3RlclxuICpcbiAqICBJU0MgTGljZW5zZVxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTYsIE1hcGJveFxuICpcbiAqICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZVxuICogIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2VcbiAqICBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAqXG4gKiAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuICogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkRcbiAqICBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcbiAqICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TU1xuICogIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUlxuICogIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0ZcbiAqICBUSElTIFNPRlRXQVJFLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIG1pblpvb206IG51bWJlcjsgLy8gbWluIHpvb20gdG8gZ2VuZXJhdGUgY2x1c3RlcnMgb25cbiAgbWF4Wm9vbTogbnVtYmVyOyAvLyBtYXggem9vbSBsZXZlbCB0byBjbHVzdGVyIHRoZSBwb2ludHMgb25cbiAgcmFkaXVzOiBudW1iZXI7IC8vIGNsdXN0ZXIgcmFkaXVzIGluIHBpeGVsc1xuICBleHRlbnQ6IG51bWJlcjsgLy8gdGlsZSBleHRlbnQgKHJhZGl1cyBpcyBjYWxjdWxhdGVkIHJlbGF0aXZlIHRvIGl0KVxuICBub2RlU2l6ZTogbnVtYmVyOyAvLyBzaXplIG9mIHRoZSBLRC10cmVlIGxlYWYgbm9kZSwgYWZmZWN0cyBwZXJmb3JtYW5jZVxuICBtYWtlQ2x1c3Rlck5hbWU6IChpZDogbnVtYmVyLCBudW1Qb2ludHM6IG51bWJlcikgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtYWtlQ2x1c3RlcklkOiAoaWQ6IG51bWJlcikgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogT3B0aW9ucyA9IHtcbiAgbWluWm9vbTogMCxcbiAgbWF4Wm9vbTogMTYsXG4gIHJhZGl1czogNDAsXG4gIGV4dGVudDogNTEyLFxuICBub2RlU2l6ZTogNjQsXG4gIG1ha2VDbHVzdGVyTmFtZTogKGlkOiBudW1iZXIsIG51bVBvaW50czogbnVtYmVyKSA9PiB1bmRlZmluZWQsXG4gIG1ha2VDbHVzdGVySWQ6IChpZDogbnVtYmVyKSA9PiBge1ske2lkfV19YCxcbn07XG5cbmludGVyZmFjZSBCYXNlUG9pbnQge1xuICB4OiBudW1iZXI7IC8vIHByb2plY3RlZCBwb2ludCBjb29yZGluYXRlc1xuICB5OiBudW1iZXI7XG4gIHdlaWdodDogbnVtYmVyO1xuICB6b29tOiBudW1iZXI7IC8vIHRoZSBsYXN0IHpvb20gdGhlIHBvaW50IHdhcyBwcm9jZXNzZWQgYXRcbiAgcGFyZW50SWQ6IG51bWJlcjsgLy8gcGFyZW50IGNsdXN0ZXIgaWRcbn1cblxuaW50ZXJmYWNlIExlYWZQb2ludDxMPiBleHRlbmRzIEJhc2VQb2ludCB7XG4gIGluZGV4OiBudW1iZXI7IC8vIGluZGV4IG9mIHRoZSBzb3VyY2UgZmVhdHVyZSBpbiB0aGUgb3JpZ2luYWwgaW5wdXQgYXJyYXksXG4gIGxvY2F0aW9uOiBMO1xufVxuXG5pbnRlcmZhY2UgQ2x1c3RlclBvaW50IGV4dGVuZHMgQmFzZVBvaW50IHtcbiAgaWQ6IG51bWJlcjtcbiAgbnVtUG9pbnRzOiBudW1iZXI7XG59XG5cbnR5cGUgUG9pbnQ8TD4gPSBMZWFmUG9pbnQ8TD4gfCBDbHVzdGVyUG9pbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYWZQb2ludDxMPihwOiBQb2ludDxMPik6IHAgaXMgTGVhZlBvaW50PEw+IHtcbiAgY29uc3Qge2luZGV4fSA9IHAgYXMgTGVhZlBvaW50PEw+O1xuICByZXR1cm4gaW5kZXggIT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2x1c3RlclBvaW50PEw+KHA6IFBvaW50PEw+KTogcCBpcyBDbHVzdGVyUG9pbnQge1xuICBjb25zdCB7aWR9ID0gcCBhcyBDbHVzdGVyUG9pbnQ7XG4gIHJldHVybiBpZCAhPSBudWxsO1xufVxuXG50eXBlIFpvb21MZXZlbEtEQnVzaCA9IGFueTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNsdXN0ZXJMb2NhdGlvbnM8TD4oXG4gIGxvY2F0aW9uczogSXRlcmFibGU8TD4sXG4gIGxvY2F0aW9uQWNjZXNzb3JzOiBMb2NhdGlvbkFjY2Vzc29yczxMPixcbiAgZ2V0TG9jYXRpb25XZWlnaHQ6IExvY2F0aW9uV2VpZ2h0R2V0dGVyLFxuICBvcHRpb25zPzogUGFydGlhbDxPcHRpb25zPixcbik6IENsdXN0ZXJMZXZlbFtdIHtcbiAgY29uc3Qge2dldExvY2F0aW9uTG9uLCBnZXRMb2NhdGlvbkxhdCwgZ2V0TG9jYXRpb25JZH0gPSBsb2NhdGlvbkFjY2Vzc29ycztcbiAgY29uc3Qgb3B0cyA9IHtcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuICBjb25zdCB7bWluWm9vbSwgbWF4Wm9vbSwgbm9kZVNpemUsIG1ha2VDbHVzdGVyTmFtZSwgbWFrZUNsdXN0ZXJJZH0gPSBvcHRzO1xuXG4gIGNvbnN0IHRyZWVzID0gbmV3IEFycmF5PFpvb21MZXZlbEtEQnVzaD4obWF4Wm9vbSArIDEpO1xuXG4gIC8vIGdlbmVyYXRlIGEgY2x1c3RlciBvYmplY3QgZm9yIGVhY2ggcG9pbnQgYW5kIGluZGV4IGlucHV0IHBvaW50cyBpbnRvIGEgS0QtdHJlZVxuICBsZXQgY2x1c3RlcnMgPSBuZXcgQXJyYXk8UG9pbnQ8TD4+KCk7XG4gIGxldCBsb2NhdGlvbnNDb3VudCA9IDA7XG4gIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgY29uc3QgeCA9IGdldExvY2F0aW9uTG9uKGxvY2F0aW9uKTtcbiAgICBjb25zdCB5ID0gZ2V0TG9jYXRpb25MYXQobG9jYXRpb24pO1xuICAgIGNsdXN0ZXJzLnB1c2goe1xuICAgICAgeDogbG5nWCh4KSwgLy8gcHJvamVjdGVkIHBvaW50IGNvb3JkaW5hdGVzXG4gICAgICB5OiBsYXRZKHkpLFxuICAgICAgd2VpZ2h0OiBnZXRMb2NhdGlvbldlaWdodChnZXRMb2NhdGlvbklkKGxvY2F0aW9uKSksXG4gICAgICB6b29tOiBJbmZpbml0eSwgLy8gdGhlIGxhc3Qgem9vbSB0aGUgcG9pbnQgd2FzIHByb2Nlc3NlZCBhdFxuICAgICAgaW5kZXg6IGxvY2F0aW9uc0NvdW50LCAvLyBpbmRleCBvZiB0aGUgc291cmNlIGZlYXR1cmUgaW4gdGhlIG9yaWdpbmFsIGlucHV0IGFycmF5LFxuICAgICAgcGFyZW50SWQ6IC0xLCAvLyBwYXJlbnQgY2x1c3RlciBpZFxuICAgICAgbG9jYXRpb24sXG4gICAgfSk7XG4gICAgbG9jYXRpb25zQ291bnQrKztcbiAgfVxuXG4gIGNvbnN0IG1ha2VCdXNoID0gKHBvaW50czogUG9pbnQ8TD5bXSkgPT4ge1xuICAgIGNvbnN0IGJ1c2ggPSBuZXcgS0RCdXNoKHBvaW50cy5sZW5ndGgsIG5vZGVTaXplLCBGbG9hdDMyQXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBidXNoLmFkZChwb2ludHNbaV0ueCwgcG9pbnRzW2ldLnkpO1xuICAgIH1cbiAgICBidXNoLmZpbmlzaCgpO1xuICAgIGJ1c2gucG9pbnRzID0gcG9pbnRzO1xuICAgIHJldHVybiBidXNoO1xuICB9O1xuXG4gIC8vIGNsdXN0ZXIgcG9pbnRzIG9uIG1heCB6b29tLCB0aGVuIGNsdXN0ZXIgdGhlIHJlc3VsdHMgb24gcHJldmlvdXMgem9vbSwgZXRjLjtcbiAgLy8gcmVzdWx0cyBpbiBhIGNsdXN0ZXIgaGllcmFyY2h5IGFjcm9zcyB6b29tIGxldmVsc1xuICB0cmVlc1ttYXhab29tICsgMV0gPSBtYWtlQnVzaChjbHVzdGVycyk7XG4gIGxldCBwcmV2Wm9vbSA9IG1heFpvb20gKyAxO1xuXG4gIGZvciAobGV0IHogPSBtYXhab29tOyB6ID49IG1pblpvb207IHotLSkge1xuICAgIC8vIGNyZWF0ZSBhIG5ldyBzZXQgb2YgY2x1c3RlcnMgZm9yIHRoZSB6b29tIGFuZCBpbmRleCB0aGVtIHdpdGggYSBLRC10cmVlXG4gICAgY29uc3QgX2NsdXN0ZXJzID0gY2x1c3RlcihjbHVzdGVycywgeiwgdHJlZXNbcHJldlpvb21dLCBvcHRzKTtcbiAgICBpZiAoX2NsdXN0ZXJzLmxlbmd0aCA9PT0gY2x1c3RlcnMubGVuZ3RoKSB7XG4gICAgICAvLyBzYW1lIG51bWJlciBvZiBjbHVzdGVycyA9PiBtb3ZlIHRoZSBoaWdoZXIgbGV2ZWwgY2x1c3RlcnMgdXBcbiAgICAgIC8vIG5vIG5lZWQgdG8ga2VlcCB0aGUgc2FtZSBkYXRhIG9uIG11bHRpcGxlIGxldmVsc1xuICAgICAgdHJlZXNbel0gPSB0cmVlc1twcmV2Wm9vbV07XG4gICAgICB0cmVlc1twcmV2Wm9vbV0gPSB1bmRlZmluZWQ7XG4gICAgICBwcmV2Wm9vbSA9IHo7XG4gICAgICBjbHVzdGVycyA9IF9jbHVzdGVycztcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldlpvb20gPSB6O1xuICAgICAgY2x1c3RlcnMgPSBfY2x1c3RlcnM7XG4gICAgICB0cmVlc1t6XSA9IG1ha2VCdXNoKGNsdXN0ZXJzKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHJlZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgbnVtYmVyc09mQ2x1c3RlcnM6IG51bWJlcltdID0gdHJlZXMubWFwKChkKSA9PiBkPy5wb2ludHMubGVuZ3RoKTtcbiAgY29uc3QgbWluQ2x1c3RlcnMgPSBtaW4obnVtYmVyc09mQ2x1c3RlcnMuZmlsdGVyKChkKSA9PiBkID4gMCkpO1xuXG4gIGxldCBtYXhBdmFpbFpvb20gPVxuICAgIGZpbmRJbmRleE9mTWF4KG51bWJlcnNPZkNsdXN0ZXJzKSA/PyBudW1iZXJzT2ZDbHVzdGVycy5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IG51bVVuaXF1ZUxvY2F0aW9ucyA9IGNvdW50VW5pcXVlTG9jYXRpb25zKGxvY2F0aW9ucywgbG9jYXRpb25BY2Nlc3NvcnMpO1xuICBpZiAobnVtVW5pcXVlTG9jYXRpb25zIDwgbG9jYXRpb25zQ291bnQpIHtcbiAgICAvLyBEdXBsaWNhdGUgbG9jYXRpb25zIHdvdWxkIGJlIGNsdXN0ZXJlZCB0b2dldGhlciBhdCBhbnkgem9vbSBsZXZlbCB3aGljaCBjYW4gbGVhZCB0byBoYXZpbmcgdG9vIG1hbnkgem9vbXMuXG4gICAgLy8gVG8gYXZvaWQgdGhhdCwgd2UgbmVlZCB0byBmaW5kIHRoZSBtYXggem9vbSBsZXZlbCB0aGF0IGhhcyBsZXNzIG9yIGVxdWFsIGNsdXN0ZXJzIHRoYW4gdW5pcXVlIGxvY2F0aW9uc1xuICAgIC8vIGFuZCBkcm9wIGFsbCB6b29tIGxldmVscyBiZXlvbmQgdGhhdCAoZXhjZXB0IHRoZSB1bmNsdXN0ZXJlZCBsZXZlbCkuXG4gICAgY29uc3QgbWF4Q2x1c3RlcnNab29tID0gZmluZExhc3RJbmRleChcbiAgICAgIG51bWJlcnNPZkNsdXN0ZXJzLFxuICAgICAgKGQpID0+IGQgPD0gbnVtVW5pcXVlTG9jYXRpb25zLFxuICAgICk7XG4gICAgaWYgKG1heENsdXN0ZXJzWm9vbSA+PSAwKSB7XG4gICAgICAvLyBOb3csIG1vdmUgdGhlIHVuY2x1c3RlcmVkIHBvaW50cyB0byB0aGUgbmV4dCB6b29tIGxldmVsIHRvIGF2b2lkIGhhdmluZyBhIGdhcFxuICAgICAgaWYgKG1heENsdXN0ZXJzWm9vbSA8IG1heEF2YWlsWm9vbSkge1xuICAgICAgICB0cmVlc1ttYXhDbHVzdGVyc1pvb20gKyAxXSA9IHRyZWVzW21heEF2YWlsWm9vbV07XG4gICAgICAgIHRyZWVzLnNwbGljZShtYXhDbHVzdGVyc1pvb20gKyAyKTsgLy8gUmVtb3ZlIGFsbCB6b29tIGxldmVscyBiZXlvbmQgbWF4Q2x1c3RlcnNab29tXG4gICAgICB9XG4gICAgICBtYXhBdmFpbFpvb20gPSBtYXhDbHVzdGVyc1pvb20gKyAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1pbkF2YWlsWm9vbSA9IE1hdGgubWluKFxuICAgIG1heEF2YWlsWm9vbSxcbiAgICBtaW5DbHVzdGVycyA/IG51bWJlcnNPZkNsdXN0ZXJzLmxhc3RJbmRleE9mKG1pbkNsdXN0ZXJzKSA6IG1heEF2YWlsWm9vbSxcbiAgKTtcblxuICBjb25zdCBjbHVzdGVyTGV2ZWxzID0gbmV3IEFycmF5PENsdXN0ZXJMZXZlbD4oKTtcbiAgcHJldlpvb20gPSBOYU47XG4gIGZvciAobGV0IHpvb20gPSBtYXhBdmFpbFpvb207IHpvb20gPj0gbWluQXZhaWxab29tOyB6b29tLS0pIHtcbiAgICBsZXQgY2hpbGRyZW5CeVBhcmVudDogTWFwPG51bWJlciwgKHN0cmluZyB8IG51bWJlcilbXT4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgdHJlZSA9IHRyZWVzW3pvb21dO1xuICAgIGlmICghdHJlZSkgY29udGludWU7XG4gICAgaWYgKHRyZWVzW3ByZXZab29tXSAmJiB6b29tIDwgbWF4QXZhaWxab29tKSB7XG4gICAgICBjaGlsZHJlbkJ5UGFyZW50ID0gcm9sbHVwKFxuICAgICAgICB0cmVlc1twcmV2Wm9vbV0ucG9pbnRzLFxuICAgICAgICAocG9pbnRzOiBhbnlbXSkgPT5cbiAgICAgICAgICBwb2ludHMubWFwKChwOiBhbnkpID0+XG4gICAgICAgICAgICBwLmlkID8gbWFrZUNsdXN0ZXJJZChwLmlkKSA6IGdldExvY2F0aW9uSWQocC5sb2NhdGlvbiksXG4gICAgICAgICAgKSxcbiAgICAgICAgKHBvaW50OiBhbnkpID0+IHBvaW50LnBhcmVudElkLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlczogQ2x1c3Rlck5vZGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcG9pbnQgb2YgdHJlZS5wb2ludHMpIHtcbiAgICAgIGNvbnN0IHt4LCB5LCBudW1Qb2ludHMsIGxvY2F0aW9ufSA9IHBvaW50O1xuICAgICAgaWYgKGlzTGVhZlBvaW50KHBvaW50KSkge1xuICAgICAgICBub2Rlcy5wdXNoKHtcbiAgICAgICAgICBpZDogZ2V0TG9jYXRpb25JZChsb2NhdGlvbiksXG4gICAgICAgICAgem9vbSxcbiAgICAgICAgICBsYXQ6IGdldExvY2F0aW9uTGF0KGxvY2F0aW9uKSxcbiAgICAgICAgICBsb246IGdldExvY2F0aW9uTG9uKGxvY2F0aW9uKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzQ2x1c3RlclBvaW50KHBvaW50KSkge1xuICAgICAgICBjb25zdCB7aWR9ID0gcG9pbnQ7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gY2hpbGRyZW5CeVBhcmVudCAmJiBjaGlsZHJlbkJ5UGFyZW50LmdldChpZCk7XG4gICAgICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgICAgICAvLyBNaWdodCBoYXBwZW4gaWYgdGhlcmUgYXJlIG11bHRpcGxlIGxvY2F0aW9ucyB3aXRoIHNhbWUgY29vcmRpbmF0ZXNcbiAgICAgICAgICBjb25zb2xlLndhcm4oYE9taXR0aW5nIGNsdXN0ZXIgd2l0aCBubyBjaGlsZHJlbiwgcG9pbnQ6YCwgcG9pbnQpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsdXN0ZXIgPSB7XG4gICAgICAgICAgaWQ6IG1ha2VDbHVzdGVySWQoaWQpLFxuICAgICAgICAgIG5hbWU6IG1ha2VDbHVzdGVyTmFtZShpZCwgbnVtUG9pbnRzKSxcbiAgICAgICAgICB6b29tLFxuICAgICAgICAgIGxhdDogeUxhdCh5KSxcbiAgICAgICAgICBsb246IHhMbmcoeCksXG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuID8/IFtdLFxuICAgICAgICB9IGFzIENsdXN0ZXI7XG4gICAgICAgIG5vZGVzLnB1c2goY2x1c3Rlcik7XG4gICAgICB9XG4gICAgfVxuICAgIGNsdXN0ZXJMZXZlbHMucHVzaCh7XG4gICAgICB6b29tLFxuICAgICAgbm9kZXMsXG4gICAgfSk7XG4gICAgcHJldlpvb20gPSB6b29tO1xuICB9XG4gIHJldHVybiBjbHVzdGVyTGV2ZWxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDbHVzdGVyKFxuICB4OiBudW1iZXIsXG4gIHk6IG51bWJlcixcbiAgaWQ6IG51bWJlcixcbiAgbnVtUG9pbnRzOiBudW1iZXIsXG4gIHdlaWdodDogbnVtYmVyLFxuKTogQ2x1c3RlclBvaW50IHtcbiAgcmV0dXJuIHtcbiAgICB4LCAvLyB3ZWlnaHRlZCBjbHVzdGVyIGNlbnRlclxuICAgIHksXG4gICAgem9vbTogSW5maW5pdHksIC8vIHRoZSBsYXN0IHpvb20gdGhlIGNsdXN0ZXIgd2FzIHByb2Nlc3NlZCBhdFxuICAgIGlkLCAvLyBlbmNvZGVzIGluZGV4IG9mIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUgY2x1c3RlciBhbmQgaXRzIHpvb20gbGV2ZWxcbiAgICBwYXJlbnRJZDogLTEsIC8vIHBhcmVudCBjbHVzdGVyIGlkXG4gICAgbnVtUG9pbnRzLFxuICAgIHdlaWdodCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2x1c3RlcjxMPihcbiAgcG9pbnRzOiBQb2ludDxMPltdLFxuICB6b29tOiBudW1iZXIsXG4gIHRyZWU6IFpvb21MZXZlbEtEQnVzaCxcbiAgb3B0aW9uczogT3B0aW9ucyxcbikge1xuICBjb25zdCBjbHVzdGVyczogUG9pbnQ8TD5bXSA9IFtdO1xuICBjb25zdCB7cmFkaXVzLCBleHRlbnR9ID0gb3B0aW9ucztcbiAgY29uc3QgciA9IHJhZGl1cyAvIChleHRlbnQgKiBNYXRoLnBvdygyLCB6b29tKSk7XG5cbiAgLy8gbG9vcCB0aHJvdWdoIGVhY2ggcG9pbnRcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwID0gcG9pbnRzW2ldO1xuICAgIC8vIGlmIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGUgcG9pbnQgYXQgdGhpcyB6b29tIGxldmVsLCBza2lwIGl0XG4gICAgaWYgKHAuem9vbSA8PSB6b29tKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcC56b29tID0gem9vbTtcblxuICAgIC8vIGZpbmQgYWxsIG5lYXJieSBwb2ludHNcbiAgICBjb25zdCBuZWlnaGJvcklkcyA9IHRyZWUud2l0aGluKHAueCwgcC55LCByKTtcblxuICAgIGxldCB3ZWlnaHQgPSBwLndlaWdodCB8fCAxO1xuICAgIGxldCBudW1Qb2ludHMgPSBpc0NsdXN0ZXJQb2ludChwKSA/IHAubnVtUG9pbnRzIDogMTtcbiAgICBsZXQgd3ggPSBwLnggKiB3ZWlnaHQ7XG4gICAgbGV0IHd5ID0gcC55ICogd2VpZ2h0O1xuXG4gICAgLy8gZW5jb2RlIGJvdGggem9vbSBhbmQgcG9pbnQgaW5kZXggb24gd2hpY2ggdGhlIGNsdXN0ZXIgb3JpZ2luYXRlZFxuICAgIGNvbnN0IGlkID0gKGkgPDwgNSkgKyAoem9vbSArIDEpO1xuXG4gICAgZm9yIChjb25zdCBuZWlnaGJvcklkIG9mIG5laWdoYm9ySWRzKSB7XG4gICAgICBjb25zdCBiID0gdHJlZS5wb2ludHNbbmVpZ2hib3JJZF07XG4gICAgICAvLyBmaWx0ZXIgb3V0IG5laWdoYm9ycyB0aGF0IGFyZSBhbHJlYWR5IHByb2Nlc3NlZFxuICAgICAgaWYgKGIuem9vbSA8PSB6b29tKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYi56b29tID0gem9vbTsgLy8gc2F2ZSB0aGUgem9vbSAoc28gaXQgZG9lc24ndCBnZXQgcHJvY2Vzc2VkIHR3aWNlKVxuXG4gICAgICBjb25zdCB3ZWlnaHQyID0gYi53ZWlnaHQgfHwgMTtcbiAgICAgIGNvbnN0IG51bVBvaW50czIgPSBiLm51bVBvaW50cyB8fCAxO1xuICAgICAgd3ggKz0gYi54ICogd2VpZ2h0MjsgLy8gYWNjdW11bGF0ZSBjb29yZGluYXRlcyBmb3IgY2FsY3VsYXRpbmcgd2VpZ2h0ZWQgY2VudGVyXG4gICAgICB3eSArPSBiLnkgKiB3ZWlnaHQyO1xuXG4gICAgICB3ZWlnaHQgKz0gd2VpZ2h0MjtcbiAgICAgIG51bVBvaW50cyArPSBudW1Qb2ludHMyO1xuICAgICAgYi5wYXJlbnRJZCA9IGlkO1xuICAgIH1cblxuICAgIGlmIChudW1Qb2ludHMgPT09IDEpIHtcbiAgICAgIGNsdXN0ZXJzLnB1c2gocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAucGFyZW50SWQgPSBpZDtcbiAgICAgIGNsdXN0ZXJzLnB1c2goXG4gICAgICAgIGNyZWF0ZUNsdXN0ZXIod3ggLyB3ZWlnaHQsIHd5IC8gd2VpZ2h0LCBpZCwgbnVtUG9pbnRzLCB3ZWlnaHQpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59XG5cbi8vIHNwaGVyaWNhbCBtZXJjYXRvciB0byBsb25naXR1ZGUvbGF0aXR1ZGVcbmZ1bmN0aW9uIHhMbmcoeDogbnVtYmVyKSB7XG4gIHJldHVybiAoeCAtIDAuNSkgKiAzNjA7XG59XG5cbmZ1bmN0aW9uIHlMYXQoeTogbnVtYmVyKSB7XG4gIGNvbnN0IHkyID0gKCgxODAgLSB5ICogMzYwKSAqIE1hdGguUEkpIC8gMTgwO1xuICByZXR1cm4gKDM2MCAqIE1hdGguYXRhbihNYXRoLmV4cCh5MikpKSAvIE1hdGguUEkgLSA5MDtcbn1cblxuLy8gbG9uZ2l0dWRlL2xhdGl0dWRlIHRvIHNwaGVyaWNhbCBtZXJjYXRvciBpbiBbMC4uMV0gcmFuZ2VcbmZ1bmN0aW9uIGxuZ1gobG5nOiBudW1iZXIpIHtcbiAgcmV0dXJuIGxuZyAvIDM2MCArIDAuNTtcbn1cblxuZnVuY3Rpb24gbGF0WShsYXQ6IG51bWJlcikge1xuICBjb25zdCBzaW4gPSBNYXRoLnNpbigobGF0ICogTWF0aC5QSSkgLyAxODApO1xuICBjb25zdCB5ID0gMC41IC0gKDAuMjUgKiBNYXRoLmxvZygoMSArIHNpbikgLyAoMSAtIHNpbikpKSAvIE1hdGguUEk7XG4gIHJldHVybiB5IDwgMCA/IDAgOiB5ID4gMSA/IDEgOiB5O1xufVxuXG5mdW5jdGlvbiBnZXRYPEw+KHA6IFBvaW50PEw+KSB7XG4gIHJldHVybiBwLng7XG59XG5cbmZ1bmN0aW9uIGdldFk8TD4ocDogUG9pbnQ8TD4pIHtcbiAgcmV0dXJuIHAueTtcbn1cblxuZnVuY3Rpb24gY291bnRVbmlxdWVMb2NhdGlvbnM8TD4oXG4gIGxvY2F0aW9uczogSXRlcmFibGU8TD4sXG4gIGxvY2F0aW9uQWNjZXNzb3JzOiBMb2NhdGlvbkFjY2Vzc29yczxMPixcbikge1xuICBjb25zdCB7Z2V0TG9jYXRpb25Mb24sIGdldExvY2F0aW9uTGF0fSA9IGxvY2F0aW9uQWNjZXNzb3JzO1xuICBjb25zdCBjb3VudEJ5TGF0TG9uID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgbGV0IHVuaXF1ZUNudCA9IDA7XG4gIGZvciAoY29uc3QgbG9jIG9mIGxvY2F0aW9ucykge1xuICAgIGNvbnN0IGxvbiA9IGdldExvY2F0aW9uTG9uKGxvYyk7XG4gICAgY29uc3QgbGF0ID0gZ2V0TG9jYXRpb25MYXQobG9jKTtcbiAgICBjb25zdCBrZXkgPSBgJHtsb259LCR7bGF0fWA7XG4gICAgY29uc3QgcHJldiA9IGNvdW50QnlMYXRMb24uZ2V0KGtleSk7XG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICB1bmlxdWVDbnQrKztcbiAgICB9XG4gICAgY291bnRCeUxhdExvbi5zZXQoa2V5LCBwcmV2ID8gcHJldiArIDEgOiAxKTtcbiAgfVxuICByZXR1cm4gdW5pcXVlQ250O1xufVxuXG5mdW5jdGlvbiBmaW5kSW5kZXhPZk1heChhcnI6IChudW1iZXIgfCB1bmRlZmluZWQpW10pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBsZXQgbWF4ID0gLUluZmluaXR5O1xuICBsZXQgbWF4SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHZhbHVlID0gYXJyW2ldO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmICh2YWx1ZSA+IG1heCkge1xuICAgICAgICBtYXggPSB2YWx1ZTtcbiAgICAgICAgbWF4SW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXhJbmRleDtcbn1cblxuZnVuY3Rpb24gZmluZExhc3RJbmRleDxUPihcbiAgYXJyOiBUW10sXG4gIHByZWRpY2F0ZTogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBib29sZWFuLFxuKTogbnVtYmVyIHtcbiAgZm9yIChsZXQgaSA9IGFyci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyW2ldLCBpLCBhcnIpKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIl19
|
package/dist/colors.js
CHANGED
|
@@ -484,4 +484,4 @@ export function mixColorsRGBA(color1, color2, zeroToOne) {
|
|
|
484
484
|
return color1.map((v, i) => midpoint(v, color2[i], zeroToOne));
|
|
485
485
|
}
|
|
486
486
|
export default getColors;
|
|
487
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUNMLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFdBQVcsRUFDWCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUMvQixPQUFPLEVBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUdoRSxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUNyQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLHNCQUFzQixHQUFHLHVCQUF1QixDQUFDO0FBQ3ZELE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN0RSxNQUFNLDJCQUEyQixHQUFHLHVCQUF1QixDQUFDO0FBRTVELE1BQU0sa0NBQWtDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMvRSxNQUFNLGtD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QUMsVUFBVSxDQUFDO0lBQzFCLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzlCLElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQzFCLElBQUksRUFBRTtRQUNKLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELE9BQU8sRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQ2hDLE1BQU0sRUFBRTtRQUNOLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQzFCLEtBQUssRUFBRTtRQUNMLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQzFCLE1BQU0sRUFBRTtRQUNOLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELFVBQVUsRUFBRTtRQUNWLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELElBQUksRUFBRSxVQUFVO0lBQ2hCLE9BQU8sRUFBRTtRQUNQLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELE9BQU8sRUFBRSxhQUFhLENBQUMsa0JBQWtCLENBQUM7SUFDMUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQUM7SUFDcEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDMUIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUM7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LE1BQThCO0lBRTlCLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELE9BQU87UUFDTCxHQUFHLGNBQWM7UUFDakIsUUFBUSxFQUFFLHNCQUFzQixDQUM5QixNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsRUFDekIsa0NBQWtDLEVBQ2xDLGNBQWMsQ0FBQyxRQUFRLENBQ3hCO1FBQ0QsUUFBUSxFQUFFLHNCQUFzQixDQUM5QixNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsRUFDekIsa0NBQWtDLEVBQ2xDLGNBQWMsQ0FBQyxRQUFRLENBQ3hCO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQVc7SUFDdEMsT0FBTyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLFNBQWlCO0lBQzlELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsTUFBWSxFQUNaLE1BQVksRUFDWixTQUFpQjtJQUVqQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBUyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxlQUFlLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIEZsb3dtYXAuZ2wgY29udHJpYnV0b3JzXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMCBUZXJhbHl0aWNzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7XG4gIGludGVycG9sYXRlQ29vbCxcbiAgaW50ZXJwb2xhdGVJbmZlcm5vLFxuICBpbnRlcnBvbGF0ZU1hZ21hLFxuICBpbnRlcnBvbGF0ZVBsYXNtYSxcbiAgaW50ZXJwb2xhdGVWaXJpZGlzLFxuICBpbnRlcnBvbGF0ZVdhcm0sXG4gIHNjaGVtZUJsdWVzLFxuICBzY2hlbWVCdUduLFxuICBzY2hlbWVCdVB1LFxuICBzY2hlbWVHbkJ1LFxuICBzY2hlbWVHcmVlbnMsXG4gIHNjaGVtZUdyZXlzLFxuICBzY2hlbWVPcmFuZ2VzLFxuICBzY2hlbWVPclJkLFxuICBzY2hlbWVQdUJ1LFxuICBzY2hlbWVQdUJ1R24sXG4gIHNjaGVtZVB1UmQsXG4gIHNjaGVtZVB1cnBsZXMsXG4gIHNjaGVtZVJkUHUsXG4gIHNjaGVtZVJlZHMsXG4gIHNjaGVtZVlsR24sXG4gIHNjaGVtZVlsR25CdSxcbiAgc2NoZW1lWWxPckJyLFxuICBzY2hlbWVZbE9yUmQsXG59IGZyb20gJ2QzLXNjYWxlLWNocm9tYXRpYyc7XG5pbXBvcnQge3JhbmdlfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQge3NjYWxlUG93LCBzY2FsZVNlcXVlbnRpYWwsIHNjYWxlU2VxdWVudGlhbFBvd30gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZUJhc2lzLCBpbnRlcnBvbGF0ZVJnYkJhc2lzfSBmcm9tICdkMy1pbnRlcnBvbGF0ZSc7XG5pbXBvcnQge2NvbG9yIGFzIGQzY29sb3IsIGhjbCwgcmdiIGFzIGNvbG9yUmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge1NldHRpbmdzU3RhdGV9IGZyb20gJy4vRmxvd21hcFN0YXRlJztcblxuY29uc3QgREVGQVVMVF9PVVRMSU5FX0NPTE9SID0gJyNmZmYnO1xuY29uc3QgREVGQVVMVF9ESU1NRURfT1BBQ0lUWSA9IDAuNDtcbmNvbnN0IERFRkFVTFRfRkxPV19NSU5fQ09MT1IgPSAncmdiYSgyNDAsMjQwLDI0MCwwLjUpJztcbmNvbnN0IERFRkFVTFRfRkxPV19DT0xPUl9TQ0hFTUUgPSBbREVGQVVMVF9GTE9XX01JTl9DT0xPUiwgJyMxMzdDQkQnXTtcbmNvbnN0IERFRkFVTFRfTE9DQVRJT05fQVJFQV9DT0xPUiA9ICdyZ2JhKDIyMCwyMjAsMjIwLDAuNSknO1xuXG5jb25zdCBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX1BPU0lUSVZFID0gW0RFRkFVTFRfRkxPV19NSU5fQ09MT1IsICcjZjY2NTRlJ107XG5jb25zdCBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX05FR0FUSVZFID0gW0RFRkFVTFRfRkxPV19NSU5fQ09MT1IsICcjMDBhOWNjJ107XG5cbmV4cG9ydCB0eXBlIENvbG9yU2NhbGUgPSAodmFsdWU6IG51bWJlcikgPT4gUkdCQTtcbmV4cG9ydCB0eXBlIFJHQkEgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuY29uc3QgRkFMTEJBQ0tfQ09MT1JfUkdCQTogUkdCQSA9IFsyNTUsIDI1NSwgMjU1LCAyNTVdO1xuXG5leHBvcnQgZnVuY3Rpb24gb3BhY2l0eUZsb2F0VG9JbnRlZ2VyKG9wYWNpdHk6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLnJvdW5kKG9wYWNpdHkgKiAyNTUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BhY2lmeUhleChoZXhDb2RlOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGMgPSBkM2NvbG9yKGhleENvZGUpO1xuICBpZiAoIWMpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgY29sb3I6ICcsIGhleENvZGUpO1xuICAgIHJldHVybiBgcmdiYSgyNTUsIDI1NSwgMjU1LCAke29wYWNpdHl9KWA7XG4gIH1cbiAgY29uc3QgY29sID0gYy5yZ2IoKTtcbiAgcmV0dXJuIGByZ2JhKCR7Y29sLnJ9LCAke2NvbC5nfSwgJHtjb2wuYn0sICR7b3BhY2l0eX0pYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yQXNSZ2JhKGNvbG9yOiBzdHJpbmcgfCBudW1iZXJbXSk6IFJHQkEge1xuICBpZiAoQXJyYXkuaXNBcnJheShjb2xvcikpIHtcbiAgICByZXR1cm4gY29sb3IgYXMgUkdCQTtcbiAgfVxuICBjb25zdCBjb2wgPSBkM2NvbG9yKGNvbG9yKTtcbiAgaWYgKCFjb2wpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgY29sb3I6ICcsIGNvbG9yKTtcbiAgICByZXR1cm4gRkFMTEJBQ0tfQ09MT1JfUkdCQTtcbiAgfVxuICBjb25zdCByZ2JDb2xvciA9IGNvbC5yZ2IoKTtcbiAgcmV0dXJuIFtcbiAgICBNYXRoLmZsb29yKHJnYkNvbG9yLnIpLFxuICAgIE1hdGguZmxvb3IocmdiQ29sb3IuZyksXG4gICAgTWF0aC5mbG9vcihyZ2JDb2xvci5iKSxcbiAgICBvcGFjaXR5RmxvYXRUb0ludGVnZXIoY29sLm9wYWNpdHkpLFxuICBdO1xufVxuXG5mdW5jdGlvbiBjb2xvckFzUmdiYU9yKFxuICBjb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkZWZhdWx0Q29sb3I6IFJHQkEgfCBzdHJpbmcsXG4pOiBSR0JBIHtcbiAgaWYgKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNvbG9yQXNSZ2JhKGNvbG9yKTtcbiAgfVxuICBpZiAodHlwZW9mIGRlZmF1bHRDb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gY29sb3JBc1JnYmEoZGVmYXVsdENvbG9yKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdENvbG9yO1xufVxuXG5jb25zdCBhc1NjaGVtZSA9IChzY2hlbWU6IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHlBcnJheTxzdHJpbmc+PikgPT5cbiAgc2NoZW1lW3NjaGVtZS5sZW5ndGggLSAxXSBhcyBzdHJpbmdbXTtcblxuZXhwb3J0IGVudW0gQ29sb3JTY2hlbWUge1xuICBwcmltYXJ5ID0gJyMxNjJkM2MnLFxufVxuXG5jb25zdCBTQ0FMRV9OVU1fU1RFUFMgPSAyMDtcbmNvbnN0IGdldENvbG9yU3RlcHMgPSAoaW50ZXJwb2xhdGU6ICh4OiBudW1iZXIpID0+IHN0cmluZykgPT5cbiAgcmFuZ2UoMCwgU0NBTEVfTlVNX1NURVBTICsgMSlcbiAgICAubWFwKChpKSA9PiBpbnRlcnBvbGF0ZShpIC8gU0NBTEVfTlVNX1NURVBTKSlcbiAgICAucmV2ZXJzZSgpO1xuXG5jb25zdCBGTE9XX01JTl9DT0xPUiA9ICdyZ2JhKDI0MCwyNDAsMjQwLDAuNSknO1xuZXhwb3J0IGNvbnN0IEdSQVlJU0ggPSBbRkxPV19NSU5fQ09MT1IsIENvbG9yU2NoZW1lLnByaW1hcnldO1xuY29uc3Qgc2NoZW1lQmx1WWwgPSBbXG4gICcjZjdmZWFlJyxcbiAgJyNiN2U2YTUnLFxuICAnIzdjY2JhMicsXG4gICcjNDZhZWEwJyxcbiAgJyMwODkwOTknLFxuICAnIzAwNzE4YicsXG4gICcjMDQ1Mjc1Jyxcbl07XG5cbmNvbnN0IHNjaGVtZUVtcmxkID0gW1xuICAnI2QzZjJhMycsXG4gICcjOTdlMTk2JyxcbiAgJyM2Y2MwOGInLFxuICAnIzRjOWI4MicsXG4gICcjMjE3YTc5JyxcbiAgJyMxMDU5NjUnLFxuICAnIzA3NDA1MCcsXG5dO1xuXG5leHBvcnQgY29uc3Qgc2NoZW1lVGVhbCA9IFtcbiAgJyNkMWVlZWEnLFxuICAnI2E4ZGJkOScsXG4gICcjODVjNGM5JyxcbiAgJyM2OGFiYjgnLFxuICAnIzRmOTBhNicsXG4gICcjM2I3MzhmJyxcbiAgJyMyYTU2NzQnLFxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09MT1JfU0NIRU1FID0gc2NoZW1lVGVhbDtcbmV4cG9ydCBjb25zdCBDT0xPUl9TQ0hFTUVTOiB7W2tleTogc3RyaW5nXTogc3RyaW5nW119ID0ge1xuICBCbHVlczogYXNTY2hlbWUoc2NoZW1lQmx1ZXMpLFxuICBCbHVHcm46IFtcbiAgICAnI2M0ZTZjMycsXG4gICAgJyM5NmQyYTQnLFxuICAgICcjNmRiYzkwJyxcbiAgICAnIzRkYTI4NCcsXG4gICAgJyMzNjg3N2EnLFxuICAgICcjMjY2YjZlJyxcbiAgICAnIzFkNGY2MCcsXG4gIF0sXG4gIEJsdVlsOiBzY2hlbWVCbHVZbCxcbiAgQnJ3bllsOiBbXG4gICAgJyNlZGU1Y2YnLFxuICAgICcjZTBjMmEyJyxcbiAgICAnI2QzOWM4MycsXG4gICAgJyNjMTc2NmYnLFxuICAgICcjYTY1NDYxJyxcbiAgICAnIzgxMzc1MycsXG4gICAgJyM1NDFmM2YnLFxuICBdLFxuICBCdUduOiBhc1NjaGVtZShzY2hlbWVCdUduKSxcbiAgQnVQdTogYXNTY2hlbWUoc2NoZW1lQnVQdSksXG4gIEJ1cmc6IFtcbiAgICAnI2ZmYzZjNCcsXG4gICAgJyNmNGEzYTgnLFxuICAgICcjZTM4MTkxJyxcbiAgICAnI2NjNjA3ZCcsXG4gICAgJyNhZDQ2NmMnLFxuICAgICcjOGIzMDU4JyxcbiAgICAnIzY3MjA0NCcsXG4gIF0sXG4gIEJ1cmdZbDogW1xuICAgICcjZmJlNmM1JyxcbiAgICAnI2Y1YmE5OCcsXG4gICAgJyNlZThhODInLFxuICAgICcjZGM3MTc2JyxcbiAgICAnI2M4NTg2YycsXG4gICAgJyM5YzNmNWQnLFxuICAgICcjNzAyODRhJyxcbiAgXSxcbiAgQ29vbDogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZUNvb2wpLFxuICBEYXJrTWludDogW1xuICAgICcjZDJmYmQ0JyxcbiAgICAnI2E1ZGJjMicsXG4gICAgJyM3YmJjYjAnLFxuICAgICcjNTU5YzllJyxcbiAgICAnIzNhN2M4OScsXG4gICAgJyMyMzVkNzInLFxuICAgICcjMTIzZjVhJyxcbiAgXSxcbiAgRW1ybGQ6IHNjaGVtZUVtcmxkLFxuICBHbkJ1OiBhc1NjaGVtZShzY2hlbWVHbkJ1KSxcbiAgR3JheWlzaDogR1JBWUlTSCxcbiAgR3JlZW5zOiBhc1NjaGVtZShzY2hlbWVHcmVlbnMpLFxuICBHcmV5czogYXNTY2hlbWUoc2NoZW1lR3JleXMpLFxuICBJbmZlcm5vOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlSW5mZXJubyksXG4gIE1hZ2VudGE6IFtcbiAgICAnI2YzY2JkMycsXG4gICAgJyNlYWE5YmQnLFxuICAgICcjZGQ4OGFjJyxcbiAgICAnI2NhNjk5ZCcsXG4gICAgJyNiMTRkOGUnLFxuICAgICcjOTEzNTdkJyxcbiAgICAnIzZjMjE2NycsXG4gIF0sXG4gIE1hZ21hOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlTWFnbWEpLFxuICBNaW50OiBbXG4gICAgJyNlNGYxZTEnLFxuICAgICcjYjRkOWNjJyxcbiAgICAnIzg5YzBiNicsXG4gICAgJyM2M2E2YTAnLFxuICAgICcjNDQ4YzhhJyxcbiAgICAnIzI4NzI3NCcsXG4gICAgJyMwZDU4NWYnLFxuICBdLFxuICBPcmFuZ2VzOiBhc1NjaGVtZShzY2hlbWVPcmFuZ2VzKSxcbiAgT3JSZDogYXNTY2hlbWUoc2NoZW1lT3JSZCksXG4gIE9yWWVsOiBbXG4gICAgJyNlY2RhOWEnLFxuICAgICcjZWZjNDdlJyxcbiAgICAnI2YzYWQ2YScsXG4gICAgJyNmNzk0NWQnLFxuICAgICcjZjk3YjU3JyxcbiAgICAnI2Y2NjM1NicsXG4gICAgJyNlZTRkNWEnLFxuICBdLFxuICBQZWFjaDogW1xuICAgICcjZmRlMGM1JyxcbiAgICAnI2ZhY2JhNicsXG4gICAgJyNmOGI1OGInLFxuICAgICcjZjU5ZTcyJyxcbiAgICAnI2YyODU1ZCcsXG4gICAgJyNlZjZhNGMnLFxuICAgICcjZWI0YTQwJyxcbiAgXSxcbiAgUGxhc21hOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlUGxhc21hKSxcbiAgUGlua1lsOiBbXG4gICAgJyNmZWY2YjUnLFxuICAgICcjZmZkZDlhJyxcbiAgICAnI2ZmYzI4NScsXG4gICAgJyNmZmE2NzknLFxuICAgICcjZmE4YTc2JyxcbiAgICAnI2YxNmQ3YScsXG4gICAgJyNlMTUzODMnLFxuICBdLFxuICBQdUJ1OiBhc1NjaGVtZShzY2hlbWVQdUJ1KSxcbiAgUHVCdUduOiBhc1NjaGVtZShzY2hlbWVQdUJ1R24pLFxuICBQdVJkOiBhc1NjaGVtZShzY2hlbWVQdVJkKSxcbiAgUHVycDogW1xuICAgICcjZjNlMGY3JyxcbiAgICAnI2U0YzdmMScsXG4gICAgJyNkMWFmZTgnLFxuICAgICcjYjk5OGRkJyxcbiAgICAnIzlmODJjZScsXG4gICAgJyM4MjZkYmEnLFxuICAgICcjNjM1ODlmJyxcbiAgXSxcbiAgUHVycGxlczogYXNTY2hlbWUoc2NoZW1lUHVycGxlcyksXG4gIFB1cnBPcjogW1xuICAgICcjZjlkZGRhJyxcbiAgICAnI2YyYjljNCcsXG4gICAgJyNlNTk3YjknLFxuICAgICcjY2U3OGIzJyxcbiAgICAnI2FkNWZhZCcsXG4gICAgJyM4MzRiYTAnLFxuICAgICcjNTczYjg4JyxcbiAgXSxcbiAgUmRQdTogYXNTY2hlbWUoc2NoZW1lUmRQdSksXG4gIFJlZE9yOiBbXG4gICAgJyNmNmQyYTknLFxuICAgICcjZjViNzhlJyxcbiAgICAnI2YxOWM3YycsXG4gICAgJyNlYTgxNzEnLFxuICAgICcjZGQ2ODZjJyxcbiAgICAnI2NhNTI2OCcsXG4gICAgJyNiMTNmNjQnLFxuICBdLFxuICBSZWRzOiBhc1NjaGVtZShzY2hlbWVSZWRzKSxcbiAgU3Vuc2V0OiBbXG4gICAgJyNmM2U3OWInLFxuICAgICcjZmFjNDg0JyxcbiAgICAnI2Y4YTA3ZScsXG4gICAgJyNlYjdmODYnLFxuICAgICcjY2U2NjkzJyxcbiAgICAnI2EwNTlhMCcsXG4gICAgJyM1YzUzYTUnLFxuICBdLFxuICBTdW5zZXREYXJrOiBbXG4gICAgJyNmY2RlOWMnLFxuICAgICcjZmFhNDc2JyxcbiAgICAnI2YwNzQ2ZScsXG4gICAgJyNlMzRmNmYnLFxuICAgICcjZGMzOTc3JyxcbiAgICAnI2I5MjU3YScsXG4gICAgJyM3YzFkNmYnLFxuICBdLFxuICBUZWFsOiBzY2hlbWVUZWFsLFxuICBUZWFsR3JuOiBbXG4gICAgJyNiMGYyYmMnLFxuICAgICcjODllOGFjJyxcbiAgICAnIzY3ZGJhNScsXG4gICAgJyM0Y2M4YTMnLFxuICAgICcjMzhiMmEzJyxcbiAgICAnIzJjOThhMCcsXG4gICAgJyMyNTdkOTgnLFxuICBdLFxuICBWaXJpZGlzOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlVmlyaWRpcyksXG4gIFdhcm06IGdldENvbG9yU3RlcHMoaW50ZXJwb2xhdGVXYXJtKSxcbiAgWWxHbjogYXNTY2hlbWUoc2NoZW1lWWxHbiksXG4gIFlsR25CdTogYXNTY2hlbWUoc2NoZW1lWWxHbkJ1KSxcbiAgWWxPckJyOiBhc1NjaGVtZShzY2hlbWVZbE9yQnIpLFxuICBZbE9yUmQ6IGFzU2NoZW1lKHNjaGVtZVlsT3JSZCksXG59O1xuXG5leHBvcnQgY29uc3QgQ09MT1JfU0NIRU1FX0tFWVMgPSBPYmplY3Qua2V5cyhDT0xPUl9TQ0hFTUVTKTtcblxuY29uc3QgY29tcGxlbWVudGFyeSA9ICcjZjUyMDIwJztcbmNvbnN0IGJhc2VEaWZmQ29sb3IgPSAnIzE3YTViZSc7XG5cbmNvbnN0IGRpZmZDb2xvcnM6IERpZmZDb2xvcnMgPSB7XG4gIG5lZ2F0aXZlOiB7XG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZTogW0ZMT1dfTUlOX0NPTE9SLCBiYXNlRGlmZkNvbG9yXSxcbiAgICB9LFxuICB9LFxuICBwb3NpdGl2ZToge1xuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWU6IFtGTE9XX01JTl9DT0xPUiwgY29tcGxlbWVudGFyeV0sXG4gICAgfSxcbiAgfSxcbiAgbG9jYXRpb25BcmVhczoge1xuICAgIG91dGxpbmU6ICdyZ2JhKDkyLDExMiwxMjgsMC41KScsXG4gICAgbm9ybWFsOiAncmdiYSgyMjAsMjIwLDIyMCwwLjUpJyxcbiAgfSxcbiAgb3V0bGluZUNvbG9yOiAncmdiKDIzMCwyMzMsMjM3KScsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rmxvd21hcENvbG9ycyhzZXR0aW5nczogU2V0dGluZ3NTdGF0ZSk6IENvbG9ycyB8IERpZmZDb2xvcnMge1xuICByZXR1cm4gZ2V0Q29sb3JzKFxuICAgIGZhbHNlLCAvLyBUT0RPOiBkaWZmTW9kZVxuICAgIHNldHRpbmdzLmNvbG9yU2NoZW1lLFxuICAgIHNldHRpbmdzLmRhcmtNb2RlLFxuICAgIHNldHRpbmdzLmZhZGVFbmFibGVkLFxuICAgIHNldHRpbmdzLmZhZGVPcGFjaXR5RW5hYmxlZCxcbiAgICBzZXR0aW5ncy5mYWRlQW1vdW50LFxuICAgIHNldHRpbmdzLmFuaW1hdGlvbkVuYWJsZWQsXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvcnMoXG4gIGRpZmZNb2RlOiBib29sZWFuLFxuICBjb2xvclNjaGVtZTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIGRhcmtNb2RlOiBib29sZWFuLFxuICBmYWRlRW5hYmxlZDogYm9vbGVhbixcbiAgZmFkZU9wYWNpdHlFbmFibGVkOiBib29sZWFuLFxuICBmYWRlQW1vdW50OiBudW1iZXIsXG4gIGFuaW1hdGU6IGJvb2xlYW4sXG4pOiBDb2xvcnMgfCBEaWZmQ29sb3JzIHtcbiAgaWYgKGRpZmZNb2RlKSB7XG4gICAgcmV0dXJuIGRpZmZDb2xvcnM7XG4gIH1cblxuICBsZXQgc2NoZW1lO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yU2NoZW1lKSkge1xuICAgIHNjaGVtZSA9IGNvbG9yU2NoZW1lO1xuICB9IGVsc2Uge1xuICAgIHNjaGVtZSA9XG4gICAgICAoY29sb3JTY2hlbWUgJiYgQ09MT1JfU0NIRU1FU1tjb2xvclNjaGVtZV0pIHx8IERFRkFVTFRfQ09MT1JfU0NIRU1FO1xuICAgIGlmIChkYXJrTW9kZSkge1xuICAgICAgc2NoZW1lID0gc2NoZW1lLnNsaWNlKCkucmV2ZXJzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIChhbmltYXRlKVxuICAvLyBpZiAoZmFkZUFtb3VudCA+IDApXG4gIHtcbiAgICBjb25zdCBpbmRpY2VzID0gcmFuZ2UoMCwgTWF0aC5tYXgoMTAsIHNjaGVtZS5sZW5ndGgpKTtcbiAgICBjb25zdCBOID0gaW5kaWNlcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGNvbG9yU2NhbGUgPSBzY2FsZVNlcXVlbnRpYWwoaW50ZXJwb2xhdGVSZ2JCYXNpcyhzY2hlbWUpKS5kb21haW4oW1xuICAgICAgMCxcbiAgICAgIE4sXG4gICAgXSk7XG5cbiAgICBpZiAoIWZhZGVFbmFibGVkIHx8IGZhZGVBbW91bnQgPT09IDApIHtcbiAgICAgIHNjaGVtZSA9IGluZGljZXMubWFwKChjLCBpKSA9PiBjb2xvclNjYWxlKGkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYW1vdW50ID0gc2NhbGVQb3coKVxuICAgICAgICAvLyAuZXhwb25lbnQoYW5pbWF0ZSA/IDEgOiAxLzIuNSlcbiAgICAgICAgLy8gLmV4cG9uZW50KGFuaW1hdGUgPyAxMDAgOiA1MClcbiAgICAgICAgLy8gLmV4cG9uZW50KGFuaW1hdGUgPyAyMCA6IDUpXG4gICAgICAgIC8vIC5leHBvbmVudCgxLzIuNSlcbiAgICAgICAgLmV4cG9uZW50KDEuNSlcbiAgICAgICAgLmRvbWFpbihbTiwgMF0pXG4gICAgICAgIC8vIC5yYW5nZShbZmFkZUFtb3VudC8xMDAqKGFuaW1hdGU/MjoxKSwgMF0pXG4gICAgICAgIC8vIC5yYW5nZShbMCwgZmFkZUFtb3VudC8xMDAqKGFuaW1hdGU/MjoxKV0pXG4gICAgICAgIC8vIC5yYW5nZShkYXJrTW9kZSA/IFsxLWZhZGVBbW91bnQvMTAwLCAxXSA6IFsxLCAxIC0gZmFkZUFtb3VudC8xMDBdKVxuICAgICAgICAvLyAucmFuZ2UoZGFya01vZGUgPyBbMSAtIGZhZGVBbW91bnQvMTAwLCAxXSA6IFtmYWRlQW1vdW50LzEwMCwgMF0pXG4gICAgICAgIC8vIC5yYW5nZShbMSAtIGZhZGVBbW91bnQvMTAwLCAxXSlcbiAgICAgICAgLnJhbmdlKFswLCAoMiAqIGZhZGVBbW91bnQpIC8gMTAwXSk7XG5cbiAgICAgIHNjaGVtZSA9IGluZGljZXMubWFwKFxuICAgICAgICAoYywgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JTY2FsZShpKTtcbiAgICAgICAgICBjb25zdCBhID0gYW1vdW50KGkpO1xuICAgICAgICAgIGlmIChjb2xvciA9PSBudWxsIHx8IGEgPT0gbnVsbCkgcmV0dXJuICcjMDAwJztcbiAgICAgICAgICBjb25zdCBjb2wgPSBoY2woY29sb3IpO1xuICAgICAgICAgIGNvbC5sID0gZGFya01vZGUgPyBjb2wubCAtIGNvbC5sICogYSA6IGNvbC5sICsgKDEwMCAtIGNvbC5sKSAqIGE7XG4gICAgICAgICAgY29sLmMgPSBjb2wuYyAtIGNvbC5jICogKGEgLyA0KTtcbiAgICAgICAgICBpZiAoZmFkZU9wYWNpdHlFbmFibGVkKSB7XG4gICAgICAgICAgICBjb2wub3BhY2l0eSA9IGNvbC5vcGFjaXR5ICogKDEuMCAtIGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29sLnRvU3RyaW5nKCk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIGludGVycG9sYXRlUmdiQmFzaXMoW2NvbG9yU2NhbGUoaSksIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnXSkoYW1vdW50KGkpKVxuICAgICAgICAvLyBpbnRlcnBvbGF0ZUhzbChjb2xvclNjYWxlKGkpLCBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJykoYW1vdW50KGkpKS50b1N0cmluZygpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGFya01vZGUsXG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZSxcbiAgICB9LFxuICAgIGxvY2F0aW9uQ2lyY2xlczoge1xuICAgICAgb3V0Z29pbmc6IGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnLFxuICAgIH0sXG4gICAgb3V0bGluZUNvbG9yOiBkYXJrTW9kZSA/ICcjMDAwJyA6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpbnRlcnBvbGF0ZVJnYmFCYXNpcyhjb2xvcnM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IHNwbGluZSA9IGludGVycG9sYXRlQmFzaXM7XG4gIGNvbnN0IG4gPSBjb2xvcnMubGVuZ3RoO1xuICBsZXQgcjogYW55ID0gbmV3IEFycmF5KG4pLFxuICAgIGc6IGFueSA9IG5ldyBBcnJheShuKSxcbiAgICBiOiBhbnkgPSBuZXcgQXJyYXkobiksXG4gICAgb3BhY2l0eTogYW55ID0gbmV3IEFycmF5KG4pLFxuICAgIGksXG4gICAgY29sb3I6IGFueTtcbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGNvbG9yID0gY29sb3JSZ2IoY29sb3JzW2ldKTtcbiAgICByW2ldID0gY29sb3IuciB8fCAwO1xuICAgIGdbaV0gPSBjb2xvci5nIHx8IDA7XG4gICAgYltpXSA9IGNvbG9yLmIgfHwgMDtcbiAgICBvcGFjaXR5W2ldID0gY29sb3Iub3BhY2l0eSB8fCAwO1xuICB9XG4gIHIgPSBzcGxpbmUocik7XG4gIGcgPSBzcGxpbmUoZyk7XG4gIGIgPSBzcGxpbmUoYik7XG4gIG9wYWNpdHkgPSBzcGxpbmUob3BhY2l0eSk7XG4gIC8vIGNvbG9yLm9wYWNpdHkgPSAxO1xuICByZXR1cm4gZnVuY3Rpb24gKHQ6IG51bWJlcikge1xuICAgIGNvbG9yLnIgPSByKHQpO1xuICAgIGNvbG9yLmcgPSBnKHQpO1xuICAgIGNvbG9yLmIgPSBiKHQpO1xuICAgIGNvbG9yLm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgIHJldHVybiBjb2xvciArICcnO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gIGRvbWFpbjogW251bWJlciwgbnVtYmVyXSxcbiAgc2NoZW1lOiBzdHJpbmdbXSxcbiAgYW5pbWF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbik6IENvbG9yU2NhbGUge1xuICBjb25zdCBzY2FsZSA9IHNjYWxlU2VxdWVudGlhbFBvdyhpbnRlcnBvbGF0ZVJnYmFCYXNpcyhzY2hlbWUpKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAuZXhwb25lbnQoYW5pbWF0ZSA/IDEgLyAyIDogMSAvIDMpXG4gICAgLmRvbWFpbihkb21haW4pO1xuXG4gIHJldHVybiAodmFsdWU6IG51bWJlcikgPT4gY29sb3JBc1JnYmEoc2NhbGUodmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsb3dDb2xvclNjYWxlKFxuICBjb2xvcnM6IENvbG9yc1JHQkEgfCBEaWZmQ29sb3JzUkdCQSxcbiAgbWFnbml0dWRlRXh0ZW50OiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLFxuICBhbmltYXRlOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogKG1hZ25pdHVkZTogbnVtYmVyKSA9PiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IG1pbk1hZ25pdHVkZSA9IG1hZ25pdHVkZUV4dGVudCA/IG1hZ25pdHVkZUV4dGVudFswXSA6IDA7XG4gIGNvbnN0IG1heE1hZ25pdHVkZSA9IG1hZ25pdHVkZUV4dGVudCA/IG1hZ25pdHVkZUV4dGVudFsxXSA6IDA7XG4gIGlmIChpc0RpZmZDb2xvcnNSR0JBKGNvbG9ycykpIHtcbiAgICBjb25zdCBwb3NTY2FsZSA9IGNyZWF0ZUZsb3dDb2xvclNjYWxlKFxuICAgICAgWzAsIG1heE1hZ25pdHVkZV0sXG4gICAgICBjb2xvcnMucG9zaXRpdmUuZmxvd3Muc2NoZW1lLFxuICAgICAgYW5pbWF0ZSxcbiAgICApO1xuICAgIGNvbnN0IG5lZ1NjYWxlID0gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gICAgICBbMCwgbWluTWFnbml0dWRlXSxcbiAgICAgIGNvbG9ycy5uZWdhdGl2ZS5mbG93cy5zY2hlbWUsXG4gICAgICBhbmltYXRlLFxuICAgICk7XG5cbiAgICByZXR1cm4gKG1hZ25pdHVkZTogbnVtYmVyKSA9PlxuICAgICAgbWFnbml0dWRlID49IDAgPyBwb3NTY2FsZShtYWduaXR1ZGUpIDogbmVnU2NhbGUobWFnbml0dWRlKTtcbiAgfVxuXG4gIGNvbnN0IHNjYWxlID0gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gICAgWzAsIG1heE1hZ25pdHVkZSB8fCAwXSxcbiAgICBjb2xvcnMuZmxvd3Muc2NoZW1lLFxuICAgIGFuaW1hdGUsXG4gICk7XG4gIHJldHVybiAobWFnbml0dWRlOiBudW1iZXIpID0+IHNjYWxlKG1hZ25pdHVkZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpZmZDb2xvcnMoXG4gIGNvbG9yczogRGlmZkNvbG9ycyB8IENvbG9ycyxcbik6IGNvbG9ycyBpcyBEaWZmQ29sb3JzIHtcbiAgcmV0dXJuIChjb2xvcnMgYXMgRGlmZkNvbG9ycykucG9zaXRpdmUgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlmZkNvbG9yc1JHQkEoXG4gIGNvbG9yczogRGlmZkNvbG9yc1JHQkEgfCBDb2xvcnNSR0JBLFxuKTogY29sb3JzIGlzIERpZmZDb2xvcnNSR0JBIHtcbiAgcmV0dXJuIChjb2xvcnMgYXMgRGlmZkNvbG9yc1JHQkEpLnBvc2l0aXZlICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldExvY2F0aW9uQXJlYUNvbG9yc1JHQkEoXG4gIGNvbG9yczogTG9jYXRpb25BcmVhQ29sb3JzIHwgdW5kZWZpbmVkLFxuICBkYXJrTW9kZTogYm9vbGVhbixcbik6IExvY2F0aW9uQXJlYUNvbG9yc1JHQkEge1xuICBjb25zdCBub3JtYWxDb2xvciA9IChjb2xvcnMgJiYgY29sb3JzLm5vcm1hbCkgfHwgREVGQVVMVF9MT0NBVElPTl9BUkVBX0NPTE9SO1xuICBjb25zdCBub3JtYWxDb2xvckhjbCA9IGhjbChub3JtYWxDb2xvcik7XG4gIGNvbnN0IGxvY2F0aW9uQXJlYXNOb3JtYWwgPSBjb2xvckFzUmdiYShub3JtYWxDb2xvcik7XG4gIHJldHVybiB7XG4gICAgbm9ybWFsOiBsb2NhdGlvbkFyZWFzTm9ybWFsLFxuICAgIGNvbm5lY3RlZDogY29sb3JBc1JnYmFPcihjb2xvcnMgJiYgY29sb3JzLmNvbm5lY3RlZCwgbG9jYXRpb25BcmVhc05vcm1hbCksXG4gICAgaGlnaGxpZ2h0ZWQ6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLmhpZ2hsaWdodGVkLFxuICAgICAgb3BhY2lmeUhleChcbiAgICAgICAgbm9ybWFsQ29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDEpLnRvU3RyaW5nKCksXG4gICAgICAgIDAuNSxcbiAgICAgICksXG4gICAgKSxcbiAgICBzZWxlY3RlZDogY29sb3JBc1JnYmFPcihcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMuc2VsZWN0ZWQsXG4gICAgICBvcGFjaWZ5SGV4KFxuICAgICAgICBub3JtYWxDb2xvckhjbFtkYXJrTW9kZSA/ICdicmlnaHRlcicgOiAnZGFya2VyJ10oMikudG9TdHJpbmcoKSxcbiAgICAgICAgMC44LFxuICAgICAgKSxcbiAgICApLFxuICAgIG91dGxpbmU6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLm91dGxpbmUsXG4gICAgICBjb2xvckFzUmdiYShcbiAgICAgICAgbm9ybWFsQ29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDQpLnRvU3RyaW5nKCksXG4gICAgICApLFxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0NvbG9ycyB7XG4gIHNjaGVtZT86IHN0cmluZ1tdO1xuICBoaWdobGlnaHRlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkNpcmNsZUNvbG9ycyB7XG4gIGlubmVyPzogc3RyaW5nO1xuICBvdXRnb2luZz86IHN0cmluZztcbiAgaW5jb21pbmc/OiBzdHJpbmc7XG4gIGhpZ2hsaWdodGVkPzogc3RyaW5nO1xuICBlbXB0eT86IHN0cmluZztcbiAgb3V0bGluZUVtcHR5TWl4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQXJlYUNvbG9ycyB7XG4gIG91dGxpbmU/OiBzdHJpbmc7XG4gIG5vcm1hbD86IHN0cmluZztcbiAgc2VsZWN0ZWQ/OiBzdHJpbmc7XG4gIGhpZ2hsaWdodGVkPzogc3RyaW5nO1xuICBjb25uZWN0ZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbG9ycyB7XG4gIGRhcmtNb2RlPzogYm9vbGVhbjtcbiAgbG9jYXRpb25BcmVhcz86IExvY2F0aW9uQXJlYUNvbG9ycztcbiAgZGltbWVkT3BhY2l0eT86IG51bWJlcjtcbiAgb3V0bGluZUNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9ycyBleHRlbmRzIEJhc2VDb2xvcnMge1xuICBmbG93cz86IEZsb3dDb2xvcnM7XG4gIGxvY2F0aW9uQ2lyY2xlcz86IExvY2F0aW9uQ2lyY2xlQ29sb3JzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dBbmRDaXJjbGVDb2xvcnMge1xuICBmbG93cz86IEZsb3dDb2xvcnM7XG4gIGxvY2F0aW9uQ2lyY2xlcz86IExvY2F0aW9uQ2lyY2xlQ29sb3JzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZDb2xvcnMgZXh0ZW5kcyBCYXNlQ29sb3JzIHtcbiAgcG9zaXRpdmU/OiBGbG93QW5kQ2lyY2xlQ29sb3JzO1xuICBuZWdhdGl2ZT86IEZsb3dBbmRDaXJjbGVDb2xvcnM7XG59XG5cbi8vIFRoZSB4eHhDb2xvcnNSR0JBIG9iamVjdHMgYXJlIG1pcnJvcmluZyB0aGUgaW5wdXQgY29sb3JzJyBvYmplY3RzLFxuLy8gYnV0IGNvbnZlcnRlZCB0byBSR0JBIGFuZCB3aXRoIGFsbCB0aGUgb21pdHRlZCBvbmVzIHNldCB0byBkZWZhdWx0c1xuLy8gb3IgZGVyaXZlZC5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0NvbG9yc1JHQkEge1xuICBzY2hlbWU6IHN0cmluZ1tdO1xuICBoaWdobGlnaHRlZDogUkdCQTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkNpcmNsZUNvbG9yc1JHQkEge1xuICBpbm5lcjogUkdCQTtcbiAgb3V0Z29pbmc6IFJHQkE7XG4gIGluY29taW5nOiBSR0JBO1xuICBoaWdobGlnaHRlZDogUkdCQTtcbiAgZW1wdHk6IFJHQkE7XG4gIG91dGxpbmVFbXB0eU1peDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQXJlYUNvbG9yc1JHQkEge1xuICBvdXRsaW5lOiBSR0JBO1xuICBub3JtYWw6IFJHQkE7XG4gIHNlbGVjdGVkOiBSR0JBO1xuICBoaWdobGlnaHRlZDogUkdCQTtcbiAgY29ubmVjdGVkOiBSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDb2xvcnNSR0JBIHtcbiAgZGFya01vZGU6IGJvb2xlYW47XG4gIGxvY2F0aW9uQXJlYXM6IExvY2F0aW9uQXJlYUNvbG9yc1JHQkE7XG4gIGRpbW1lZE9wYWNpdHk6IG51bWJlcjtcbiAgb3V0bGluZUNvbG9yOiBSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yc1JHQkEgZXh0ZW5kcyBCYXNlQ29sb3JzUkdCQSB7XG4gIGZsb3dzOiBGbG93Q29sb3JzUkdCQTtcbiAgbG9jYXRpb25DaXJjbGVzOiBMb2NhdGlvbkNpcmNsZUNvbG9yc1JHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0FuZENpcmNsZUNvbG9yc1JHQkEge1xuICBmbG93czogRmxvd0NvbG9yc1JHQkE7XG4gIGxvY2F0aW9uQ2lyY2xlczogTG9jYXRpb25DaXJjbGVDb2xvcnNSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZDb2xvcnNSR0JBIGV4dGVuZHMgQmFzZUNvbG9yc1JHQkEge1xuICBwb3NpdGl2ZTogRmxvd0FuZENpcmNsZUNvbG9yc1JHQkE7XG4gIG5lZ2F0aXZlOiBGbG93QW5kQ2lyY2xlQ29sb3JzUkdCQTtcbn1cblxuZnVuY3Rpb24gZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgaW5wdXRDb2xvcnM6IEZsb3dBbmRDaXJjbGVDb2xvcnMgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRGbG93Q29sb3JTY2hlbWU6IHN0cmluZ1tdLFxuICBkYXJrTW9kZTogYm9vbGVhbixcbik6IEZsb3dBbmRDaXJjbGVDb2xvcnNSR0JBIHtcbiAgY29uc3QgZmxvd0NvbG9yU2NoZW1lID1cbiAgICAoaW5wdXRDb2xvcnMgJiYgaW5wdXRDb2xvcnMuZmxvd3MgJiYgaW5wdXRDb2xvcnMuZmxvd3Muc2NoZW1lKSB8fFxuICAgIGRlZmF1bHRGbG93Q29sb3JTY2hlbWU7XG4gIGNvbnN0IG1heEZsb3dDb2xvckhjbCA9IGhjbChmbG93Q29sb3JTY2hlbWVbZmxvd0NvbG9yU2NoZW1lLmxlbmd0aCAtIDFdKTtcbiAgY29uc3QgZmxvd0NvbG9ySGlnaGxpZ2h0ZWQgPSBjb2xvckFzUmdiYU9yKFxuICAgIGlucHV0Q29sb3JzICYmIGlucHV0Q29sb3JzLmZsb3dzICYmIGlucHV0Q29sb3JzLmZsb3dzLmhpZ2hsaWdodGVkLFxuICAgIGNvbG9yQXNSZ2JhKFxuICAgICAgbWF4Rmxvd0NvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSgwLjcpLnRvU3RyaW5nKCksXG4gICAgKSxcbiAgKTtcblxuICBjb25zdCBlbXB0eUNvbG9yID0gY29sb3JBc1JnYmFPcihcbiAgICBpbnB1dENvbG9ycz8ubG9jYXRpb25DaXJjbGVzPy5lbXB0eSxcbiAgICBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJyxcbiAgKTtcbiAgY29uc3QgaW5uZXJDb2xvciA9IGNvbG9yQXNSZ2JhT3IoXG4gICAgaW5wdXRDb2xvcnMgJiZcbiAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzLmlubmVyLFxuICAgIG1heEZsb3dDb2xvckhjbC50b1N0cmluZygpLFxuICApO1xuICByZXR1cm4ge1xuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWU6IGZsb3dDb2xvclNjaGVtZSxcbiAgICAgIGhpZ2hsaWdodGVkOiBmbG93Q29sb3JIaWdobGlnaHRlZCxcbiAgICB9LFxuICAgIGxvY2F0aW9uQ2lyY2xlczoge1xuICAgICAgaW5uZXI6IGlubmVyQ29sb3IsXG4gICAgICBvdXRnb2luZzogY29sb3JBc1JnYmFPcihcbiAgICAgICAgaW5wdXRDb2xvcnMgJiZcbiAgICAgICAgICBpbnB1dENvbG9ycy5sb2NhdGlvbkNpcmNsZXMgJiZcbiAgICAgICAgICBpbnB1dENvbG9ycy5sb2NhdGlvbkNpcmNsZXMub3V0Z29pbmcsXG4gICAgICAgIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnLFxuICAgICAgKSxcbiAgICAgIGluY29taW5nOiBjb2xvckFzUmdiYU9yKFxuICAgICAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcy5pbmNvbWluZyxcbiAgICAgICAgbWF4Rmxvd0NvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSgxLjI1KS50b1N0cmluZygpLFxuICAgICAgKSxcbiAgICAgIGhpZ2hsaWdodGVkOiBjb2xvckFzUmdiYU9yKFxuICAgICAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcy5oaWdobGlnaHRlZCxcbiAgICAgICAgZmxvd0NvbG9ySGlnaGxpZ2h0ZWQsXG4gICAgICApLFxuICAgICAgZW1wdHk6IGVtcHR5Q29sb3IsXG4gICAgICBvdXRsaW5lRW1wdHlNaXg6IGlucHV0Q29sb3JzPy5sb2NhdGlvbkNpcmNsZXM/Lm91dGxpbmVFbXB0eU1peCA/PyAwLjQsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0QmFzZUNvbG9yc1JHQkEoXG4gIGNvbG9yczogQ29sb3JzIHwgRGlmZkNvbG9ycyB8IHVuZGVmaW5lZCxcbik6IEJhc2VDb2xvcnNSR0JBIHtcbiAgY29uc3QgZGFya01vZGUgPSBjb2xvcnMgJiYgY29sb3JzLmRhcmtNb2RlID8gdHJ1ZSA6IGZhbHNlO1xuICByZXR1cm4ge1xuICAgIGRhcmtNb2RlLFxuICAgIGxvY2F0aW9uQXJlYXM6IGdldExvY2F0aW9uQXJlYUNvbG9yc1JHQkEoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLmxvY2F0aW9uQXJlYXMsXG4gICAgICBkYXJrTW9kZSxcbiAgICApLFxuICAgIG91dGxpbmVDb2xvcjogY29sb3JBc1JnYmEoXG4gICAgICAoY29sb3JzICYmIGNvbG9ycy5vdXRsaW5lQ29sb3IpIHx8IERFRkFVTFRfT1VUTElORV9DT0xPUixcbiAgICApLFxuICAgIGRpbW1lZE9wYWNpdHk6XG4gICAgICBjb2xvcnMgJiYgY29sb3JzLmRpbW1lZE9wYWNpdHkgIT0gbnVsbFxuICAgICAgICA/IGNvbG9ycy5kaW1tZWRPcGFjaXR5XG4gICAgICAgIDogREVGQVVMVF9ESU1NRURfT1BBQ0lUWSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yc1JHQkEoY29sb3JzOiBDb2xvcnMgfCB1bmRlZmluZWQpOiBDb2xvcnNSR0JBIHtcbiAgY29uc3QgYmFzZUNvbG9yc1JHQkEgPSBnZXRCYXNlQ29sb3JzUkdCQShjb2xvcnMpO1xuICByZXR1cm4ge1xuICAgIC4uLmJhc2VDb2xvcnNSR0JBLFxuICAgIC4uLmdldEZsb3dBbmRDaXJjbGVDb2xvcnMoXG4gICAgICBjb2xvcnMsXG4gICAgICBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FLFxuICAgICAgYmFzZUNvbG9yc1JHQkEuZGFya01vZGUsXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpZmZDb2xvcnNSR0JBKFxuICBjb2xvcnM6IERpZmZDb2xvcnMgfCB1bmRlZmluZWQsXG4pOiBEaWZmQ29sb3JzUkdCQSB7XG4gIGNvbnN0IGJhc2VDb2xvcnNSR0JBID0gZ2V0QmFzZUNvbG9yc1JHQkEoY29sb3JzKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlQ29sb3JzUkdCQSxcbiAgICBwb3NpdGl2ZTogZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMucG9zaXRpdmUsXG4gICAgICBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX1BPU0lUSVZFLFxuICAgICAgYmFzZUNvbG9yc1JHQkEuZGFya01vZGUsXG4gICAgKSxcbiAgICBuZWdhdGl2ZTogZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMubmVnYXRpdmUsXG4gICAgICBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX05FR0FUSVZFLFxuICAgICAgYmFzZUNvbG9yc1JHQkEuZGFya01vZGUsXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJnYmFBc1N0cmluZyhjb2xvcjogUkdCQSk6IHN0cmluZyB7XG4gIHJldHVybiBgcmdiYSgke2NvbG9yLmpvaW4oJywnKX0pYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pZHBvaW50KGE6IG51bWJlciwgYjogbnVtYmVyLCB6ZXJvVG9PbmU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBhICsgKGIgLSBhKSAqIHplcm9Ub09uZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1peENvbG9yc1JHQkEoXG4gIGNvbG9yMTogUkdCQSxcbiAgY29sb3IyOiBSR0JBLFxuICB6ZXJvVG9PbmU6IG51bWJlcixcbik6IFJHQkEge1xuICByZXR1cm4gY29sb3IxLm1hcCgodiwgaSkgPT4gbWlkcG9pbnQodiwgY29sb3IyW2ldLCB6ZXJvVG9PbmUpKSBhcyBSR0JBO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRDb2xvcnM7XG4iXX0=
|
|
487
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUNMLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFdBQVcsRUFDWCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUMvQixPQUFPLEVBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUdoRSxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUNyQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLHNCQUFzQixHQUFHLHVCQUF1QixDQUFDO0FBQ3ZELE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN0RSxNQUFNLDJCQUEyQixHQUFHLHVCQUF1QixDQUFDO0FBRTVELE1BQU0sa0NBQWtDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMvRSxNQUFNLGtD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QVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDMUIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDOUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDMUIsSUFBSSxFQUFFO1FBQ0osU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsT0FBTyxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDaEMsTUFBTSxFQUFFO1FBQ04sU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDMUIsS0FBSyxFQUFFO1FBQ0wsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDMUIsTUFBTSxFQUFFO1FBQ04sU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsSUFBSSxFQUFFLFVBQVU7SUFDaEIsT0FBTyxFQUFFO1FBQ1AsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsT0FBTyxFQUFFLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztJQUMxQyxJQUFJLEVBQUUsYUFBYSxDQUFDLGVBQWUsQ0FBQztJQUNwQyxJQUFJLEVBQUUsUUFBUSxD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b3B5cmlnaHQgKGMpIEZsb3dtYXAuZ2wgY29udHJpYnV0b3JzXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMCBUZXJhbHl0aWNzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7XG4gIGludGVycG9sYXRlQ29vbCxcbiAgaW50ZXJwb2xhdGVJbmZlcm5vLFxuICBpbnRlcnBvbGF0ZU1hZ21hLFxuICBpbnRlcnBvbGF0ZVBsYXNtYSxcbiAgaW50ZXJwb2xhdGVWaXJpZGlzLFxuICBpbnRlcnBvbGF0ZVdhcm0sXG4gIHNjaGVtZUJsdWVzLFxuICBzY2hlbWVCdUduLFxuICBzY2hlbWVCdVB1LFxuICBzY2hlbWVHbkJ1LFxuICBzY2hlbWVHcmVlbnMsXG4gIHNjaGVtZUdyZXlzLFxuICBzY2hlbWVPcmFuZ2VzLFxuICBzY2hlbWVPclJkLFxuICBzY2hlbWVQdUJ1LFxuICBzY2hlbWVQdUJ1R24sXG4gIHNjaGVtZVB1UmQsXG4gIHNjaGVtZVB1cnBsZXMsXG4gIHNjaGVtZVJkUHUsXG4gIHNjaGVtZVJlZHMsXG4gIHNjaGVtZVlsR24sXG4gIHNjaGVtZVlsR25CdSxcbiAgc2NoZW1lWWxPckJyLFxuICBzY2hlbWVZbE9yUmQsXG59IGZyb20gJ2QzLXNjYWxlLWNocm9tYXRpYyc7XG5pbXBvcnQge3JhbmdlfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQge3NjYWxlUG93LCBzY2FsZVNlcXVlbnRpYWwsIHNjYWxlU2VxdWVudGlhbFBvd30gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZUJhc2lzLCBpbnRlcnBvbGF0ZVJnYkJhc2lzfSBmcm9tICdkMy1pbnRlcnBvbGF0ZSc7XG5pbXBvcnQge2NvbG9yIGFzIGQzY29sb3IsIGhjbCwgcmdiIGFzIGNvbG9yUmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge1NldHRpbmdzU3RhdGV9IGZyb20gJy4vRmxvd21hcFN0YXRlJztcblxuY29uc3QgREVGQVVMVF9PVVRMSU5FX0NPTE9SID0gJyNmZmYnO1xuY29uc3QgREVGQVVMVF9ESU1NRURfT1BBQ0lUWSA9IDAuNDtcbmNvbnN0IERFRkFVTFRfRkxPV19NSU5fQ09MT1IgPSAncmdiYSgyNDAsMjQwLDI0MCwwLjUpJztcbmNvbnN0IERFRkFVTFRfRkxPV19DT0xPUl9TQ0hFTUUgPSBbREVGQVVMVF9GTE9XX01JTl9DT0xPUiwgJyMxMzdDQkQnXTtcbmNvbnN0IERFRkFVTFRfTE9DQVRJT05fQVJFQV9DT0xPUiA9ICdyZ2JhKDIyMCwyMjAsMjIwLDAuNSknO1xuXG5jb25zdCBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX1BPU0lUSVZFID0gW0RFRkFVTFRfRkxPV19NSU5fQ09MT1IsICcjZjY2NTRlJ107XG5jb25zdCBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX05FR0FUSVZFID0gW0RFRkFVTFRfRkxPV19NSU5fQ09MT1IsICcjMDBhOWNjJ107XG5cbmV4cG9ydCB0eXBlIENvbG9yU2NhbGUgPSAodmFsdWU6IG51bWJlcikgPT4gUkdCQTtcbmV4cG9ydCB0eXBlIFJHQkEgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuY29uc3QgRkFMTEJBQ0tfQ09MT1JfUkdCQTogUkdCQSA9IFsyNTUsIDI1NSwgMjU1LCAyNTVdO1xuXG5leHBvcnQgZnVuY3Rpb24gb3BhY2l0eUZsb2F0VG9JbnRlZ2VyKG9wYWNpdHk6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLnJvdW5kKG9wYWNpdHkgKiAyNTUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BhY2lmeUhleChoZXhDb2RlOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGMgPSBkM2NvbG9yKGhleENvZGUpO1xuICBpZiAoIWMpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgY29sb3I6ICcsIGhleENvZGUpO1xuICAgIHJldHVybiBgcmdiYSgyNTUsIDI1NSwgMjU1LCAke29wYWNpdHl9KWA7XG4gIH1cbiAgY29uc3QgY29sID0gYy5yZ2IoKTtcbiAgcmV0dXJuIGByZ2JhKCR7Y29sLnJ9LCAke2NvbC5nfSwgJHtjb2wuYn0sICR7b3BhY2l0eX0pYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yQXNSZ2JhKGNvbG9yOiBzdHJpbmcgfCBudW1iZXJbXSk6IFJHQkEge1xuICBpZiAoQXJyYXkuaXNBcnJheShjb2xvcikpIHtcbiAgICByZXR1cm4gY29sb3IgYXMgUkdCQTtcbiAgfVxuICBjb25zdCBjb2wgPSBkM2NvbG9yKGNvbG9yKTtcbiAgaWYgKCFjb2wpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgY29sb3I6ICcsIGNvbG9yKTtcbiAgICByZXR1cm4gRkFMTEJBQ0tfQ09MT1JfUkdCQTtcbiAgfVxuICBjb25zdCByZ2JDb2xvciA9IGNvbC5yZ2IoKTtcbiAgcmV0dXJuIFtcbiAgICBNYXRoLmZsb29yKHJnYkNvbG9yLnIpLFxuICAgIE1hdGguZmxvb3IocmdiQ29sb3IuZyksXG4gICAgTWF0aC5mbG9vcihyZ2JDb2xvci5iKSxcbiAgICBvcGFjaXR5RmxvYXRUb0ludGVnZXIoY29sLm9wYWNpdHkpLFxuICBdO1xufVxuXG5mdW5jdGlvbiBjb2xvckFzUmdiYU9yKFxuICBjb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkZWZhdWx0Q29sb3I6IFJHQkEgfCBzdHJpbmcsXG4pOiBSR0JBIHtcbiAgaWYgKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNvbG9yQXNSZ2JhKGNvbG9yKTtcbiAgfVxuICBpZiAodHlwZW9mIGRlZmF1bHRDb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gY29sb3JBc1JnYmEoZGVmYXVsdENvbG9yKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdENvbG9yO1xufVxuXG5jb25zdCBhc1NjaGVtZSA9IChzY2hlbWU6IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHlBcnJheTxzdHJpbmc+PikgPT5cbiAgc2NoZW1lW3NjaGVtZS5sZW5ndGggLSAxXSBhcyBzdHJpbmdbXTtcblxuZXhwb3J0IGVudW0gQ29sb3JTY2hlbWUge1xuICBwcmltYXJ5ID0gJyMxNjJkM2MnLFxufVxuXG5jb25zdCBTQ0FMRV9OVU1fU1RFUFMgPSAyMDtcbmNvbnN0IGdldENvbG9yU3RlcHMgPSAoaW50ZXJwb2xhdGU6ICh4OiBudW1iZXIpID0+IHN0cmluZykgPT5cbiAgcmFuZ2UoMCwgU0NBTEVfTlVNX1NURVBTICsgMSlcbiAgICAubWFwKChpKSA9PiBpbnRlcnBvbGF0ZShpIC8gU0NBTEVfTlVNX1NURVBTKSlcbiAgICAucmV2ZXJzZSgpO1xuXG5jb25zdCBGTE9XX01JTl9DT0xPUiA9ICdyZ2JhKDI0MCwyNDAsMjQwLDAuNSknO1xuZXhwb3J0IGNvbnN0IEdSQVlJU0ggPSBbRkxPV19NSU5fQ09MT1IsIENvbG9yU2NoZW1lLnByaW1hcnldO1xuY29uc3Qgc2NoZW1lQmx1WWwgPSBbXG4gICcjZjdmZWFlJyxcbiAgJyNiN2U2YTUnLFxuICAnIzdjY2JhMicsXG4gICcjNDZhZWEwJyxcbiAgJyMwODkwOTknLFxuICAnIzAwNzE4YicsXG4gICcjMDQ1Mjc1Jyxcbl07XG5cbmNvbnN0IHNjaGVtZUVtcmxkID0gW1xuICAnI2QzZjJhMycsXG4gICcjOTdlMTk2JyxcbiAgJyM2Y2MwOGInLFxuICAnIzRjOWI4MicsXG4gICcjMjE3YTc5JyxcbiAgJyMxMDU5NjUnLFxuICAnIzA3NDA1MCcsXG5dO1xuXG5leHBvcnQgY29uc3Qgc2NoZW1lVGVhbCA9IFtcbiAgJyNkMWVlZWEnLFxuICAnI2E4ZGJkOScsXG4gICcjODVjNGM5JyxcbiAgJyM2OGFiYjgnLFxuICAnIzRmOTBhNicsXG4gICcjM2I3MzhmJyxcbiAgJyMyYTU2NzQnLFxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09MT1JfU0NIRU1FID0gc2NoZW1lVGVhbDtcbmV4cG9ydCBjb25zdCBDT0xPUl9TQ0hFTUVTOiB7W2tleTogc3RyaW5nXTogc3RyaW5nW119ID0ge1xuICBCbHVlczogYXNTY2hlbWUoc2NoZW1lQmx1ZXMpLFxuICBCbHVHcm46IFtcbiAgICAnI2M0ZTZjMycsXG4gICAgJyM5NmQyYTQnLFxuICAgICcjNmRiYzkwJyxcbiAgICAnIzRkYTI4NCcsXG4gICAgJyMzNjg3N2EnLFxuICAgICcjMjY2YjZlJyxcbiAgICAnIzFkNGY2MCcsXG4gIF0sXG4gIEJsdVlsOiBzY2hlbWVCbHVZbCxcbiAgQnJ3bllsOiBbXG4gICAgJyNlZGU1Y2YnLFxuICAgICcjZTBjMmEyJyxcbiAgICAnI2QzOWM4MycsXG4gICAgJyNjMTc2NmYnLFxuICAgICcjYTY1NDYxJyxcbiAgICAnIzgxMzc1MycsXG4gICAgJyM1NDFmM2YnLFxuICBdLFxuICBCdUduOiBhc1NjaGVtZShzY2hlbWVCdUduKSxcbiAgQnVQdTogYXNTY2hlbWUoc2NoZW1lQnVQdSksXG4gIEJ1cmc6IFtcbiAgICAnI2ZmYzZjNCcsXG4gICAgJyNmNGEzYTgnLFxuICAgICcjZTM4MTkxJyxcbiAgICAnI2NjNjA3ZCcsXG4gICAgJyNhZDQ2NmMnLFxuICAgICcjOGIzMDU4JyxcbiAgICAnIzY3MjA0NCcsXG4gIF0sXG4gIEJ1cmdZbDogW1xuICAgICcjZmJlNmM1JyxcbiAgICAnI2Y1YmE5OCcsXG4gICAgJyNlZThhODInLFxuICAgICcjZGM3MTc2JyxcbiAgICAnI2M4NTg2YycsXG4gICAgJyM5YzNmNWQnLFxuICAgICcjNzAyODRhJyxcbiAgXSxcbiAgQ29vbDogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZUNvb2wpLFxuICBEYXJrTWludDogW1xuICAgICcjZDJmYmQ0JyxcbiAgICAnI2E1ZGJjMicsXG4gICAgJyM3YmJjYjAnLFxuICAgICcjNTU5YzllJyxcbiAgICAnIzNhN2M4OScsXG4gICAgJyMyMzVkNzInLFxuICAgICcjMTIzZjVhJyxcbiAgXSxcbiAgRW1ybGQ6IHNjaGVtZUVtcmxkLFxuICBHbkJ1OiBhc1NjaGVtZShzY2hlbWVHbkJ1KSxcbiAgR3JheWlzaDogR1JBWUlTSCxcbiAgR3JlZW5zOiBhc1NjaGVtZShzY2hlbWVHcmVlbnMpLFxuICBHcmV5czogYXNTY2hlbWUoc2NoZW1lR3JleXMpLFxuICBJbmZlcm5vOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlSW5mZXJubyksXG4gIE1hZ2VudGE6IFtcbiAgICAnI2YzY2JkMycsXG4gICAgJyNlYWE5YmQnLFxuICAgICcjZGQ4OGFjJyxcbiAgICAnI2NhNjk5ZCcsXG4gICAgJyNiMTRkOGUnLFxuICAgICcjOTEzNTdkJyxcbiAgICAnIzZjMjE2NycsXG4gIF0sXG4gIE1hZ21hOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlTWFnbWEpLFxuICBNaW50OiBbXG4gICAgJyNlNGYxZTEnLFxuICAgICcjYjRkOWNjJyxcbiAgICAnIzg5YzBiNicsXG4gICAgJyM2M2E2YTAnLFxuICAgICcjNDQ4YzhhJyxcbiAgICAnIzI4NzI3NCcsXG4gICAgJyMwZDU4NWYnLFxuICBdLFxuICBPcmFuZ2VzOiBhc1NjaGVtZShzY2hlbWVPcmFuZ2VzKSxcbiAgT3JSZDogYXNTY2hlbWUoc2NoZW1lT3JSZCksXG4gIE9yWWVsOiBbXG4gICAgJyNlY2RhOWEnLFxuICAgICcjZWZjNDdlJyxcbiAgICAnI2YzYWQ2YScsXG4gICAgJyNmNzk0NWQnLFxuICAgICcjZjk3YjU3JyxcbiAgICAnI2Y2NjM1NicsXG4gICAgJyNlZTRkNWEnLFxuICBdLFxuICBQZWFjaDogW1xuICAgICcjZmRlMGM1JyxcbiAgICAnI2ZhY2JhNicsXG4gICAgJyNmOGI1OGInLFxuICAgICcjZjU5ZTcyJyxcbiAgICAnI2YyODU1ZCcsXG4gICAgJyNlZjZhNGMnLFxuICAgICcjZWI0YTQwJyxcbiAgXSxcbiAgUGxhc21hOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlUGxhc21hKSxcbiAgUGlua1lsOiBbXG4gICAgJyNmZWY2YjUnLFxuICAgICcjZmZkZDlhJyxcbiAgICAnI2ZmYzI4NScsXG4gICAgJyNmZmE2NzknLFxuICAgICcjZmE4YTc2JyxcbiAgICAnI2YxNmQ3YScsXG4gICAgJyNlMTUzODMnLFxuICBdLFxuICBQdUJ1OiBhc1NjaGVtZShzY2hlbWVQdUJ1KSxcbiAgUHVCdUduOiBhc1NjaGVtZShzY2hlbWVQdUJ1R24pLFxuICBQdVJkOiBhc1NjaGVtZShzY2hlbWVQdVJkKSxcbiAgUHVycDogW1xuICAgICcjZjNlMGY3JyxcbiAgICAnI2U0YzdmMScsXG4gICAgJyNkMWFmZTgnLFxuICAgICcjYjk5OGRkJyxcbiAgICAnIzlmODJjZScsXG4gICAgJyM4MjZkYmEnLFxuICAgICcjNjM1ODlmJyxcbiAgXSxcbiAgUHVycGxlczogYXNTY2hlbWUoc2NoZW1lUHVycGxlcyksXG4gIFB1cnBPcjogW1xuICAgICcjZjlkZGRhJyxcbiAgICAnI2YyYjljNCcsXG4gICAgJyNlNTk3YjknLFxuICAgICcjY2U3OGIzJyxcbiAgICAnI2FkNWZhZCcsXG4gICAgJyM4MzRiYTAnLFxuICAgICcjNTczYjg4JyxcbiAgXSxcbiAgUmRQdTogYXNTY2hlbWUoc2NoZW1lUmRQdSksXG4gIFJlZE9yOiBbXG4gICAgJyNmNmQyYTknLFxuICAgICcjZjViNzhlJyxcbiAgICAnI2YxOWM3YycsXG4gICAgJyNlYTgxNzEnLFxuICAgICcjZGQ2ODZjJyxcbiAgICAnI2NhNTI2OCcsXG4gICAgJyNiMTNmNjQnLFxuICBdLFxuICBSZWRzOiBhc1NjaGVtZShzY2hlbWVSZWRzKSxcbiAgU3Vuc2V0OiBbXG4gICAgJyNmM2U3OWInLFxuICAgICcjZmFjNDg0JyxcbiAgICAnI2Y4YTA3ZScsXG4gICAgJyNlYjdmODYnLFxuICAgICcjY2U2NjkzJyxcbiAgICAnI2EwNTlhMCcsXG4gICAgJyM1YzUzYTUnLFxuICBdLFxuICBTdW5zZXREYXJrOiBbXG4gICAgJyNmY2RlOWMnLFxuICAgICcjZmFhNDc2JyxcbiAgICAnI2YwNzQ2ZScsXG4gICAgJyNlMzRmNmYnLFxuICAgICcjZGMzOTc3JyxcbiAgICAnI2I5MjU3YScsXG4gICAgJyM3YzFkNmYnLFxuICBdLFxuICBUZWFsOiBzY2hlbWVUZWFsLFxuICBUZWFsR3JuOiBbXG4gICAgJyNiMGYyYmMnLFxuICAgICcjODllOGFjJyxcbiAgICAnIzY3ZGJhNScsXG4gICAgJyM0Y2M4YTMnLFxuICAgICcjMzhiMmEzJyxcbiAgICAnIzJjOThhMCcsXG4gICAgJyMyNTdkOTgnLFxuICBdLFxuICBWaXJpZGlzOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlVmlyaWRpcyksXG4gIFdhcm06IGdldENvbG9yU3RlcHMoaW50ZXJwb2xhdGVXYXJtKSxcbiAgWWxHbjogYXNTY2hlbWUoc2NoZW1lWWxHbiksXG4gIFlsR25CdTogYXNTY2hlbWUoc2NoZW1lWWxHbkJ1KSxcbiAgWWxPckJyOiBhc1NjaGVtZShzY2hlbWVZbE9yQnIpLFxuICBZbE9yUmQ6IGFzU2NoZW1lKHNjaGVtZVlsT3JSZCksXG59O1xuXG5leHBvcnQgY29uc3QgQ09MT1JfU0NIRU1FX0tFWVMgPSBPYmplY3Qua2V5cyhDT0xPUl9TQ0hFTUVTKTtcblxuY29uc3QgY29tcGxlbWVudGFyeSA9ICcjZjUyMDIwJztcbmNvbnN0IGJhc2VEaWZmQ29sb3IgPSAnIzE3YTViZSc7XG5cbmNvbnN0IGRpZmZDb2xvcnM6IERpZmZDb2xvcnMgPSB7XG4gIG5lZ2F0aXZlOiB7XG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZTogW0ZMT1dfTUlOX0NPTE9SLCBiYXNlRGlmZkNvbG9yXSxcbiAgICB9LFxuICB9LFxuICBwb3NpdGl2ZToge1xuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWU6IFtGTE9XX01JTl9DT0xPUiwgY29tcGxlbWVudGFyeV0sXG4gICAgfSxcbiAgfSxcbiAgbG9jYXRpb25BcmVhczoge1xuICAgIG91dGxpbmU6ICdyZ2JhKDkyLDExMiwxMjgsMC41KScsXG4gICAgbm9ybWFsOiAncmdiYSgyMjAsMjIwLDIyMCwwLjUpJyxcbiAgfSxcbiAgb3V0bGluZUNvbG9yOiAncmdiKDIzMCwyMzMsMjM3KScsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rmxvd21hcENvbG9ycyhzZXR0aW5nczogU2V0dGluZ3NTdGF0ZSk6IENvbG9ycyB8IERpZmZDb2xvcnMge1xuICByZXR1cm4gZ2V0Q29sb3JzKFxuICAgIGZhbHNlLCAvLyBUT0RPOiBkaWZmTW9kZVxuICAgIHNldHRpbmdzLmNvbG9yU2NoZW1lLFxuICAgIHNldHRpbmdzLmRhcmtNb2RlLFxuICAgIHNldHRpbmdzLmZhZGVFbmFibGVkLFxuICAgIHNldHRpbmdzLmZhZGVPcGFjaXR5RW5hYmxlZCxcbiAgICBzZXR0aW5ncy5mYWRlQW1vdW50LFxuICAgIHNldHRpbmdzLmFuaW1hdGlvbkVuYWJsZWQsXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvcnMoXG4gIGRpZmZNb2RlOiBib29sZWFuLFxuICBjb2xvclNjaGVtZTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIGRhcmtNb2RlOiBib29sZWFuLFxuICBmYWRlRW5hYmxlZDogYm9vbGVhbixcbiAgZmFkZU9wYWNpdHlFbmFibGVkOiBib29sZWFuLFxuICBmYWRlQW1vdW50OiBudW1iZXIsXG4gIGFuaW1hdGU6IGJvb2xlYW4sXG4pOiBDb2xvcnMgfCBEaWZmQ29sb3JzIHtcbiAgaWYgKGRpZmZNb2RlKSB7XG4gICAgcmV0dXJuIGRpZmZDb2xvcnM7XG4gIH1cblxuICBsZXQgc2NoZW1lO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yU2NoZW1lKSkge1xuICAgIHNjaGVtZSA9IGNvbG9yU2NoZW1lO1xuICB9IGVsc2Uge1xuICAgIHNjaGVtZSA9XG4gICAgICAoY29sb3JTY2hlbWUgJiYgQ09MT1JfU0NIRU1FU1tjb2xvclNjaGVtZV0pIHx8IERFRkFVTFRfQ09MT1JfU0NIRU1FO1xuICAgIGlmIChkYXJrTW9kZSkge1xuICAgICAgc2NoZW1lID0gc2NoZW1lLnNsaWNlKCkucmV2ZXJzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIChhbmltYXRlKVxuICAvLyBpZiAoZmFkZUFtb3VudCA+IDApXG4gIHtcbiAgICBjb25zdCBpbmRpY2VzID0gcmFuZ2UoMCwgTWF0aC5tYXgoMTAsIHNjaGVtZS5sZW5ndGgpKTtcbiAgICBjb25zdCBOID0gaW5kaWNlcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGNvbG9yU2NhbGUgPSBzY2FsZVNlcXVlbnRpYWwoaW50ZXJwb2xhdGVSZ2JCYXNpcyhzY2hlbWUpKS5kb21haW4oW1xuICAgICAgMCxcbiAgICAgIE4sXG4gICAgXSk7XG5cbiAgICBpZiAoIWZhZGVFbmFibGVkIHx8IGZhZGVBbW91bnQgPT09IDApIHtcbiAgICAgIHNjaGVtZSA9IGluZGljZXMubWFwKChjLCBpKSA9PiBjb2xvclNjYWxlKGkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYW1vdW50ID0gc2NhbGVQb3coKVxuICAgICAgICAvLyAuZXhwb25lbnQoYW5pbWF0ZSA/IDEgOiAxLzIuNSlcbiAgICAgICAgLy8gLmV4cG9uZW50KGFuaW1hdGUgPyAxMDAgOiA1MClcbiAgICAgICAgLy8gLmV4cG9uZW50KGFuaW1hdGUgPyAyMCA6IDUpXG4gICAgICAgIC8vIC5leHBvbmVudCgxLzIuNSlcbiAgICAgICAgLmV4cG9uZW50KDEuNSlcbiAgICAgICAgLmRvbWFpbihbTiwgMF0pXG4gICAgICAgIC8vIC5yYW5nZShbZmFkZUFtb3VudC8xMDAqKGFuaW1hdGU/MjoxKSwgMF0pXG4gICAgICAgIC8vIC5yYW5nZShbMCwgZmFkZUFtb3VudC8xMDAqKGFuaW1hdGU/MjoxKV0pXG4gICAgICAgIC8vIC5yYW5nZShkYXJrTW9kZSA/IFsxLWZhZGVBbW91bnQvMTAwLCAxXSA6IFsxLCAxIC0gZmFkZUFtb3VudC8xMDBdKVxuICAgICAgICAvLyAucmFuZ2UoZGFya01vZGUgPyBbMSAtIGZhZGVBbW91bnQvMTAwLCAxXSA6IFtmYWRlQW1vdW50LzEwMCwgMF0pXG4gICAgICAgIC8vIC5yYW5nZShbMSAtIGZhZGVBbW91bnQvMTAwLCAxXSlcbiAgICAgICAgLnJhbmdlKFswLCAoMiAqIGZhZGVBbW91bnQpIC8gMTAwXSk7XG5cbiAgICAgIHNjaGVtZSA9IGluZGljZXMubWFwKFxuICAgICAgICAoYywgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JTY2FsZShpKTtcbiAgICAgICAgICBjb25zdCBhID0gYW1vdW50KGkpO1xuICAgICAgICAgIGlmIChjb2xvciA9PSBudWxsIHx8IGEgPT0gbnVsbCkgcmV0dXJuICcjMDAwJztcbiAgICAgICAgICBjb25zdCBjb2wgPSBoY2woY29sb3IpO1xuICAgICAgICAgIGNvbC5sID0gZGFya01vZGUgPyBjb2wubCAtIGNvbC5sICogYSA6IGNvbC5sICsgKDEwMCAtIGNvbC5sKSAqIGE7XG4gICAgICAgICAgY29sLmMgPSBjb2wuYyAtIGNvbC5jICogKGEgLyA0KTtcbiAgICAgICAgICBpZiAoZmFkZU9wYWNpdHlFbmFibGVkKSB7XG4gICAgICAgICAgICBjb2wub3BhY2l0eSA9IGNvbC5vcGFjaXR5ICogKDEuMCAtIGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29sLnRvU3RyaW5nKCk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIGludGVycG9sYXRlUmdiQmFzaXMoW2NvbG9yU2NhbGUoaSksIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnXSkoYW1vdW50KGkpKVxuICAgICAgICAvLyBpbnRlcnBvbGF0ZUhzbChjb2xvclNjYWxlKGkpLCBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJykoYW1vdW50KGkpKS50b1N0cmluZygpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGFya01vZGUsXG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZSxcbiAgICB9LFxuICAgIGxvY2F0aW9uQ2lyY2xlczoge1xuICAgICAgb3V0Z29pbmc6IGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnLFxuICAgIH0sXG4gICAgb3V0bGluZUNvbG9yOiBkYXJrTW9kZSA/ICcjMDAwJyA6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpbnRlcnBvbGF0ZVJnYmFCYXNpcyhjb2xvcnM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IHNwbGluZSA9IGludGVycG9sYXRlQmFzaXM7XG4gIGNvbnN0IG4gPSBjb2xvcnMubGVuZ3RoO1xuICBsZXQgcjogYW55ID0gbmV3IEFycmF5KG4pLFxuICAgIGc6IGFueSA9IG5ldyBBcnJheShuKSxcbiAgICBiOiBhbnkgPSBuZXcgQXJyYXkobiksXG4gICAgb3BhY2l0eTogYW55ID0gbmV3IEFycmF5KG4pLFxuICAgIGksXG4gICAgY29sb3I6IGFueTtcbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGNvbG9yID0gY29sb3JSZ2IoY29sb3JzW2ldKTtcbiAgICByW2ldID0gY29sb3IuciB8fCAwO1xuICAgIGdbaV0gPSBjb2xvci5nIHx8IDA7XG4gICAgYltpXSA9IGNvbG9yLmIgfHwgMDtcbiAgICBvcGFjaXR5W2ldID0gY29sb3Iub3BhY2l0eSB8fCAwO1xuICB9XG4gIHIgPSBzcGxpbmUocik7XG4gIGcgPSBzcGxpbmUoZyk7XG4gIGIgPSBzcGxpbmUoYik7XG4gIG9wYWNpdHkgPSBzcGxpbmUob3BhY2l0eSk7XG4gIC8vIGNvbG9yLm9wYWNpdHkgPSAxO1xuICByZXR1cm4gZnVuY3Rpb24gKHQ6IG51bWJlcikge1xuICAgIGNvbG9yLnIgPSByKHQpO1xuICAgIGNvbG9yLmcgPSBnKHQpO1xuICAgIGNvbG9yLmIgPSBiKHQpO1xuICAgIGNvbG9yLm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgIHJldHVybiBjb2xvciArICcnO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gIGRvbWFpbjogW251bWJlciwgbnVtYmVyXSxcbiAgc2NoZW1lOiBzdHJpbmdbXSxcbiAgYW5pbWF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbik6IENvbG9yU2NhbGUge1xuICBjb25zdCBzY2FsZSA9IHNjYWxlU2VxdWVudGlhbFBvdyhpbnRlcnBvbGF0ZVJnYmFCYXNpcyhzY2hlbWUpKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAuZXhwb25lbnQoYW5pbWF0ZSA/IDEgLyAyIDogMSAvIDMpXG4gICAgLmRvbWFpbihkb21haW4pO1xuXG4gIHJldHVybiAodmFsdWU6IG51bWJlcikgPT4gY29sb3JBc1JnYmEoc2NhbGUodmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsb3dDb2xvclNjYWxlKFxuICBjb2xvcnM6IENvbG9yc1JHQkEgfCBEaWZmQ29sb3JzUkdCQSxcbiAgbWFnbml0dWRlRXh0ZW50OiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLFxuICBhbmltYXRlOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogKG1hZ25pdHVkZTogbnVtYmVyKSA9PiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IG1pbk1hZ25pdHVkZSA9IG1hZ25pdHVkZUV4dGVudCA/IG1hZ25pdHVkZUV4dGVudFswXSA6IDA7XG4gIGNvbnN0IG1heE1hZ25pdHVkZSA9IG1hZ25pdHVkZUV4dGVudCA/IG1hZ25pdHVkZUV4dGVudFsxXSA6IDA7XG4gIGlmIChpc0RpZmZDb2xvcnNSR0JBKGNvbG9ycykpIHtcbiAgICBjb25zdCBwb3NTY2FsZSA9IGNyZWF0ZUZsb3dDb2xvclNjYWxlKFxuICAgICAgWzAsIG1heE1hZ25pdHVkZV0sXG4gICAgICBjb2xvcnMucG9zaXRpdmUuZmxvd3Muc2NoZW1lLFxuICAgICAgYW5pbWF0ZSxcbiAgICApO1xuICAgIGNvbnN0IG5lZ1NjYWxlID0gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gICAgICBbMCwgbWluTWFnbml0dWRlXSxcbiAgICAgIGNvbG9ycy5uZWdhdGl2ZS5mbG93cy5zY2hlbWUsXG4gICAgICBhbmltYXRlLFxuICAgICk7XG5cbiAgICByZXR1cm4gKG1hZ25pdHVkZTogbnVtYmVyKSA9PlxuICAgICAgbWFnbml0dWRlID49IDAgPyBwb3NTY2FsZShtYWduaXR1ZGUpIDogbmVnU2NhbGUobWFnbml0dWRlKTtcbiAgfVxuXG4gIGNvbnN0IHNjYWxlID0gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gICAgWzAsIG1heE1hZ25pdHVkZSB8fCAwXSxcbiAgICBjb2xvcnMuZmxvd3Muc2NoZW1lLFxuICAgIGFuaW1hdGUsXG4gICk7XG4gIHJldHVybiAobWFnbml0dWRlOiBudW1iZXIpID0+IHNjYWxlKG1hZ25pdHVkZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpZmZDb2xvcnMoXG4gIGNvbG9yczogRGlmZkNvbG9ycyB8IENvbG9ycyxcbik6IGNvbG9ycyBpcyBEaWZmQ29sb3JzIHtcbiAgcmV0dXJuIChjb2xvcnMgYXMgRGlmZkNvbG9ycykucG9zaXRpdmUgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlmZkNvbG9yc1JHQkEoXG4gIGNvbG9yczogRGlmZkNvbG9yc1JHQkEgfCBDb2xvcnNSR0JBLFxuKTogY29sb3JzIGlzIERpZmZDb2xvcnNSR0JBIHtcbiAgcmV0dXJuIChjb2xvcnMgYXMgRGlmZkNvbG9yc1JHQkEpLnBvc2l0aXZlICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldExvY2F0aW9uQXJlYUNvbG9yc1JHQkEoXG4gIGNvbG9yczogTG9jYXRpb25BcmVhQ29sb3JzIHwgdW5kZWZpbmVkLFxuICBkYXJrTW9kZTogYm9vbGVhbixcbik6IExvY2F0aW9uQXJlYUNvbG9yc1JHQkEge1xuICBjb25zdCBub3JtYWxDb2xvciA9IChjb2xvcnMgJiYgY29sb3JzLm5vcm1hbCkgfHwgREVGQVVMVF9MT0NBVElPTl9BUkVBX0NPTE9SO1xuICBjb25zdCBub3JtYWxDb2xvckhjbCA9IGhjbChub3JtYWxDb2xvcik7XG4gIGNvbnN0IGxvY2F0aW9uQXJlYXNOb3JtYWwgPSBjb2xvckFzUmdiYShub3JtYWxDb2xvcik7XG4gIHJldHVybiB7XG4gICAgbm9ybWFsOiBsb2NhdGlvbkFyZWFzTm9ybWFsLFxuICAgIGNvbm5lY3RlZDogY29sb3JBc1JnYmFPcihjb2xvcnMgJiYgY29sb3JzLmNvbm5lY3RlZCwgbG9jYXRpb25BcmVhc05vcm1hbCksXG4gICAgaGlnaGxpZ2h0ZWQ6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLmhpZ2hsaWdodGVkLFxuICAgICAgb3BhY2lmeUhleChcbiAgICAgICAgbm9ybWFsQ29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDEpLnRvU3RyaW5nKCksXG4gICAgICAgIDAuNSxcbiAgICAgICksXG4gICAgKSxcbiAgICBzZWxlY3RlZDogY29sb3JBc1JnYmFPcihcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMuc2VsZWN0ZWQsXG4gICAgICBvcGFjaWZ5SGV4KFxuICAgICAgICBub3JtYWxDb2xvckhjbFtkYXJrTW9kZSA/ICdicmlnaHRlcicgOiAnZGFya2VyJ10oMikudG9TdHJpbmcoKSxcbiAgICAgICAgMC44LFxuICAgICAgKSxcbiAgICApLFxuICAgIG91dGxpbmU6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLm91dGxpbmUsXG4gICAgICBjb2xvckFzUmdiYShcbiAgICAgICAgbm9ybWFsQ29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDQpLnRvU3RyaW5nKCksXG4gICAgICApLFxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0NvbG9ycyB7XG4gIHNjaGVtZT86IHN0cmluZ1tdO1xuICBoaWdobGlnaHRlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkNpcmNsZUNvbG9ycyB7XG4gIGlubmVyPzogc3RyaW5nO1xuICBvdXRnb2luZz86IHN0cmluZztcbiAgaW5jb21pbmc/OiBzdHJpbmc7XG4gIGhpZ2hsaWdodGVkPzogc3RyaW5nO1xuICBlbXB0eT86IHN0cmluZztcbiAgb3V0bGluZUVtcHR5TWl4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQXJlYUNvbG9ycyB7XG4gIG91dGxpbmU/OiBzdHJpbmc7XG4gIG5vcm1hbD86IHN0cmluZztcbiAgc2VsZWN0ZWQ/OiBzdHJpbmc7XG4gIGhpZ2hsaWdodGVkPzogc3RyaW5nO1xuICBjb25uZWN0ZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbG9ycyB7XG4gIGRhcmtNb2RlPzogYm9vbGVhbjtcbiAgbG9jYXRpb25BcmVhcz86IExvY2F0aW9uQXJlYUNvbG9ycztcbiAgZGltbWVkT3BhY2l0eT86IG51bWJlcjtcbiAgb3V0bGluZUNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9ycyBleHRlbmRzIEJhc2VDb2xvcnMge1xuICBmbG93cz86IEZsb3dDb2xvcnM7XG4gIGxvY2F0aW9uQ2lyY2xlcz86IExvY2F0aW9uQ2lyY2xlQ29sb3JzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dBbmRDaXJjbGVDb2xvcnMge1xuICBmbG93cz86IEZsb3dDb2xvcnM7XG4gIGxvY2F0aW9uQ2lyY2xlcz86IExvY2F0aW9uQ2lyY2xlQ29sb3JzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZDb2xvcnMgZXh0ZW5kcyBCYXNlQ29sb3JzIHtcbiAgcG9zaXRpdmU/OiBGbG93QW5kQ2lyY2xlQ29sb3JzO1xuICBuZWdhdGl2ZT86IEZsb3dBbmRDaXJjbGVDb2xvcnM7XG59XG5cbi8vIFRoZSB4eHhDb2xvcnNSR0JBIG9iamVjdHMgYXJlIG1pcnJvcmluZyB0aGUgaW5wdXQgY29sb3JzJyBvYmplY3RzLFxuLy8gYnV0IGNvbnZlcnRlZCB0byBSR0JBIGFuZCB3aXRoIGFsbCB0aGUgb21pdHRlZCBvbmVzIHNldCB0byBkZWZhdWx0c1xuLy8gb3IgZGVyaXZlZC5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0NvbG9yc1JHQkEge1xuICBzY2hlbWU6IHN0cmluZ1tdO1xuICBoaWdobGlnaHRlZDogUkdCQTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkNpcmNsZUNvbG9yc1JHQkEge1xuICBpbm5lcjogUkdCQTtcbiAgb3V0Z29pbmc6IFJHQkE7XG4gIGluY29taW5nOiBSR0JBO1xuICBoaWdobGlnaHRlZDogUkdCQTtcbiAgZW1wdHk6IFJHQkE7XG4gIG91dGxpbmVFbXB0eU1peDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQXJlYUNvbG9yc1JHQkEge1xuICBvdXRsaW5lOiBSR0JBO1xuICBub3JtYWw6IFJHQkE7XG4gIHNlbGVjdGVkOiBSR0JBO1xuICBoaWdobGlnaHRlZDogUkdCQTtcbiAgY29ubmVjdGVkOiBSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDb2xvcnNSR0JBIHtcbiAgZGFya01vZGU6IGJvb2xlYW47XG4gIGxvY2F0aW9uQXJlYXM6IExvY2F0aW9uQXJlYUNvbG9yc1JHQkE7XG4gIGRpbW1lZE9wYWNpdHk6IG51bWJlcjtcbiAgb3V0bGluZUNvbG9yOiBSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yc1JHQkEgZXh0ZW5kcyBCYXNlQ29sb3JzUkdCQSB7XG4gIGZsb3dzOiBGbG93Q29sb3JzUkdCQTtcbiAgbG9jYXRpb25DaXJjbGVzOiBMb2NhdGlvbkNpcmNsZUNvbG9yc1JHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0FuZENpcmNsZUNvbG9yc1JHQkEge1xuICBmbG93czogRmxvd0NvbG9yc1JHQkE7XG4gIGxvY2F0aW9uQ2lyY2xlczogTG9jYXRpb25DaXJjbGVDb2xvcnNSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZDb2xvcnNSR0JBIGV4dGVuZHMgQmFzZUNvbG9yc1JHQkEge1xuICBwb3NpdGl2ZTogRmxvd0FuZENpcmNsZUNvbG9yc1JHQkE7XG4gIG5lZ2F0aXZlOiBGbG93QW5kQ2lyY2xlQ29sb3JzUkdCQTtcbn1cblxuZnVuY3Rpb24gZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgaW5wdXRDb2xvcnM6IEZsb3dBbmRDaXJjbGVDb2xvcnMgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRGbG93Q29sb3JTY2hlbWU6IHN0cmluZ1tdLFxuICBkYXJrTW9kZTogYm9vbGVhbixcbik6IEZsb3dBbmRDaXJjbGVDb2xvcnNSR0JBIHtcbiAgY29uc3QgZmxvd0NvbG9yU2NoZW1lID1cbiAgICAoaW5wdXRDb2xvcnMgJiYgaW5wdXRDb2xvcnMuZmxvd3MgJiYgaW5wdXRDb2xvcnMuZmxvd3Muc2NoZW1lKSB8fFxuICAgIGRlZmF1bHRGbG93Q29sb3JTY2hlbWU7XG4gIGNvbnN0IG1heEZsb3dDb2xvckhjbCA9IGhjbChmbG93Q29sb3JTY2hlbWVbZmxvd0NvbG9yU2NoZW1lLmxlbmd0aCAtIDFdKTtcbiAgY29uc3QgZmxvd0NvbG9ySGlnaGxpZ2h0ZWQgPSBjb2xvckFzUmdiYU9yKFxuICAgIGlucHV0Q29sb3JzICYmIGlucHV0Q29sb3JzLmZsb3dzICYmIGlucHV0Q29sb3JzLmZsb3dzLmhpZ2hsaWdodGVkLFxuICAgIGNvbG9yQXNSZ2JhKFxuICAgICAgbWF4Rmxvd0NvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSgwLjcpLnRvU3RyaW5nKCksXG4gICAgKSxcbiAgKTtcblxuICBjb25zdCBlbXB0eUNvbG9yID0gY29sb3JBc1JnYmFPcihcbiAgICBpbnB1dENvbG9ycz8ubG9jYXRpb25DaXJjbGVzPy5lbXB0eSxcbiAgICBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJyxcbiAgKTtcbiAgY29uc3QgaW5uZXJDb2xvciA9IGNvbG9yQXNSZ2JhT3IoXG4gICAgaW5wdXRDb2xvcnMgJiZcbiAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzLmlubmVyLFxuICAgIG1heEZsb3dDb2xvckhjbC50b1N0cmluZygpLFxuICApO1xuICByZXR1cm4ge1xuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWU6IGZsb3dDb2xvclNjaGVtZSxcbiAgICAgIGhpZ2hsaWdodGVkOiBmbG93Q29sb3JIaWdobGlnaHRlZCxcbiAgICB9LFxuICAgIGxvY2F0aW9uQ2lyY2xlczoge1xuICAgICAgaW5uZXI6IGlubmVyQ29sb3IsXG4gICAgICBvdXRnb2luZzogY29sb3JBc1JnYmFPcihcbiAgICAgICAgaW5wdXRDb2xvcnMgJiZcbiAgICAgICAgICBpbnB1dENvbG9ycy5sb2NhdGlvbkNpcmNsZXMgJiZcbiAgICAgICAgICBpbnB1dENvbG9ycy5sb2NhdGlvbkNpcmNsZXMub3V0Z29pbmcsXG4gICAgICAgIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnLFxuICAgICAgKSxcbiAgICAgIGluY29taW5nOiBjb2xvckFzUmdiYU9yKFxuICAgICAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcy5pbmNvbWluZyxcbiAgICAgICAgbWF4Rmxvd0NvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSgxLjI1KS50b1N0cmluZygpLFxuICAgICAgKSxcbiAgICAgIGhpZ2hsaWdodGVkOiBjb2xvckFzUmdiYU9yKFxuICAgICAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcy5oaWdobGlnaHRlZCxcbiAgICAgICAgZmxvd0NvbG9ySGlnaGxpZ2h0ZWQsXG4gICAgICApLFxuICAgICAgZW1wdHk6IGVtcHR5Q29sb3IsXG4gICAgICBvdXRsaW5lRW1wdHlNaXg6IGlucHV0Q29sb3JzPy5sb2NhdGlvbkNpcmNsZXM/Lm91dGxpbmVFbXB0eU1peCA/PyAwLjQsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0QmFzZUNvbG9yc1JHQkEoXG4gIGNvbG9yczogQ29sb3JzIHwgRGlmZkNvbG9ycyB8IHVuZGVmaW5lZCxcbik6IEJhc2VDb2xvcnNSR0JBIHtcbiAgY29uc3QgZGFya01vZGUgPSBjb2xvcnMgJiYgY29sb3JzLmRhcmtNb2RlID8gdHJ1ZSA6IGZhbHNlO1xuICByZXR1cm4ge1xuICAgIGRhcmtNb2RlLFxuICAgIGxvY2F0aW9uQXJlYXM6IGdldExvY2F0aW9uQXJlYUNvbG9yc1JHQkEoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLmxvY2F0aW9uQXJlYXMsXG4gICAgICBkYXJrTW9kZSxcbiAgICApLFxuICAgIG91dGxpbmVDb2xvcjogY29sb3JBc1JnYmEoXG4gICAgICAoY29sb3JzICYmIGNvbG9ycy5vdXRsaW5lQ29sb3IpIHx8IERFRkFVTFRfT1VUTElORV9DT0xPUixcbiAgICApLFxuICAgIGRpbW1lZE9wYWNpdHk6XG4gICAgICBjb2xvcnMgJiYgY29sb3JzLmRpbW1lZE9wYWNpdHkgIT0gbnVsbFxuICAgICAgICA/IGNvbG9ycy5kaW1tZWRPcGFjaXR5XG4gICAgICAgIDogREVGQVVMVF9ESU1NRURfT1BBQ0lUWSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yc1JHQkEoY29sb3JzOiBDb2xvcnMgfCB1bmRlZmluZWQpOiBDb2xvcnNSR0JBIHtcbiAgY29uc3QgYmFzZUNvbG9yc1JHQkEgPSBnZXRCYXNlQ29sb3JzUkdCQShjb2xvcnMpO1xuICByZXR1cm4ge1xuICAgIC4uLmJhc2VDb2xvcnNSR0JBLFxuICAgIC4uLmdldEZsb3dBbmRDaXJjbGVDb2xvcnMoXG4gICAgICBjb2xvcnMsXG4gICAgICBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FLFxuICAgICAgYmFzZUNvbG9yc1JHQkEuZGFya01vZGUsXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpZmZDb2xvcnNSR0JBKFxuICBjb2xvcnM6IERpZmZDb2xvcnMgfCB1bmRlZmluZWQsXG4pOiBEaWZmQ29sb3JzUkdCQSB7XG4gIGNvbnN0IGJhc2VDb2xvcnNSR0JBID0gZ2V0QmFzZUNvbG9yc1JHQkEoY29sb3JzKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlQ29sb3JzUkdCQSxcbiAgICBwb3NpdGl2ZTogZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMucG9zaXRpdmUsXG4gICAgICBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX1BPU0lUSVZFLFxuICAgICAgYmFzZUNvbG9yc1JHQkEuZGFya01vZGUsXG4gICAgKSxcbiAgICBuZWdhdGl2ZTogZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMubmVnYXRpdmUsXG4gICAgICBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX05FR0FUSVZFLFxuICAgICAgYmFzZUNvbG9yc1JHQkEuZGFya01vZGUsXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJnYmFBc1N0cmluZyhjb2xvcjogUkdCQSk6IHN0cmluZyB7XG4gIHJldHVybiBgcmdiYSgke2NvbG9yLmpvaW4oJywnKX0pYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pZHBvaW50KGE6IG51bWJlciwgYjogbnVtYmVyLCB6ZXJvVG9PbmU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBhICsgKGIgLSBhKSAqIHplcm9Ub09uZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1peENvbG9yc1JHQkEoXG4gIGNvbG9yMTogUkdCQSxcbiAgY29sb3IyOiBSR0JBLFxuICB6ZXJvVG9PbmU6IG51bWJlcixcbik6IFJHQkEge1xuICByZXR1cm4gY29sb3IxLm1hcCgodiwgaSkgPT4gbWlkcG9pbnQodiwgY29sb3IyW2ldLCB6ZXJvVG9PbmUpKSBhcyBSR0JBO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRDb2xvcnM7XG4iXX0=
|
|
@@ -51,4 +51,4 @@ export function getViewStateForLocations(locations, getLocationCoords, size, opt
|
|
|
51
51
|
geometries,
|
|
52
52
|
}, size, opts);
|
|
53
53
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dldFZpZXdTdGF0ZUZvckxvY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFrQmhELE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsaUJBRXNCLEVBQ3RCLElBQXNCLEVBQ3RCLElBQTBCO0lBRTFCLE1BQU0sRUFBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQy9DLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxpQkFBd0IsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUNwQyxNQUFNLFlBQVksR0FBeUMsR0FBRztRQUM1RCxDQUFDLENBQUM7WUFDRSxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM1QyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUM3QztRQUNILENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDWCxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUM3QixPQUFPO1FBQ0wsR0FBRyxTQUFTLENBQUM7WUFDWCxLQUFLO1lBQ0wsTUFBTTtZQUNOLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTztZQUN0QixXQUFXO1lBQ1gsT0FBTztTQUNSLENBQUM7UUFDRixLQUFLO1FBQ0wsTUFBTTtRQUNOLE9BQU8sRUFBRSxDQUFDO1FBQ1YsS0FBSyxFQUFFLENBQUM7S0FDVCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsU0FBc0IsRUFDdEIsaUJBQW9ELEVBQ3BELElBQXNCLEVBQ3RCLElBQTBCO0lBRTFCLE1BQU0sVUFBVSxHQUFHLENBQUMsUUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztLQUN6QyxDQUFDLENBQUM7SUFDSCxJQUFJLFVBQVUsQ0FBQztJQUNmLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzdCLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7U0FBTSxDQUFDO1FBQ04sVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLHVCQUF1QixDQUM1QjtRQUNFLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsVUFBVTtLQUNKLEVBQ1IsSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIEZsb3dtYXAuZ2wgY29udHJpYnV0b3JzXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMCBUZXJhbHl0aWNzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7Z2VvQm91bmRzfSBmcm9tICdkMy1nZW8nO1xuaW1wb3J0IHtmaXRCb3VuZHN9IGZyb20gJ0BtYXRoLmdsL3dlYi1tZXJjYXRvcic7XG5pbXBvcnQgdHlwZSB7XG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxuICBHZW9tZXRyeUNvbGxlY3Rpb24sXG4gIEdlb21ldHJ5T2JqZWN0LFxufSBmcm9tICdnZW9qc29uJztcbmltcG9ydCB0eXBlIHtWaWV3U3RhdGV9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBMb2NhdGlvblByb3BlcnRpZXMgPSBhbnk7XG5cbmV4cG9ydCB0eXBlIEdldFZpZXdTdGF0ZU9wdGlvbnMgPSB7XG4gIHBhZD86IG51bWJlcjsgLy8gc2l6ZSByYXRpb1xuICBwYWRkaW5nPzoge3RvcDogbnVtYmVyOyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyByaWdodDogbnVtYmVyfTtcbiAgdGlsZVNpemU/OiBudW1iZXI7XG4gIC8vIG1pblpvb20/OiBudW1iZXI7ICAvLyBub3Qgc3VwcG9ydGVkIGJ5IGZpdEJvdW5kc1xuICBtYXhab29tPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdTdGF0ZUZvckZlYXR1cmVzKFxuICBmZWF0dXJlQ29sbGVjdGlvbjpcbiAgICB8IEZlYXR1cmVDb2xsZWN0aW9uPEdlb21ldHJ5T2JqZWN0LCBMb2NhdGlvblByb3BlcnRpZXM+XG4gICAgfCBHZW9tZXRyeUNvbGxlY3Rpb24sXG4gIHNpemU6IFtudW1iZXIsIG51bWJlcl0sXG4gIG9wdHM/OiBHZXRWaWV3U3RhdGVPcHRpb25zLFxuKTogVmlld1N0YXRlICYge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfSB7XG4gIGNvbnN0IHtwYWQgPSAwLjA1LCBtYXhab29tID0gMTAwfSA9IG9wdHMgfHwge307XG4gIGNvbnN0IGJvdW5kcyA9IGdlb0JvdW5kcyhmZWF0dXJlQ29sbGVjdGlvbiBhcyBhbnkpO1xuICBjb25zdCBbW3gxLCB5MV0sIFt4MiwgeTJdXSA9IGJvdW5kcztcbiAgY29uc3QgcGFkZGVkQm91bmRzOiBbW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXV0gPSBwYWRcbiAgICA/IFtcbiAgICAgICAgW3gxIC0gcGFkICogKHgyIC0geDEpLCB5MSAtIHBhZCAqICh5MiAtIHkxKV0sXG4gICAgICAgIFt4MiArIHBhZCAqICh4MiAtIHgxKSwgeTIgKyBwYWQgKiAoeTIgLSB5MSldLFxuICAgICAgXVxuICAgIDogYm91bmRzO1xuICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSBzaXplO1xuICByZXR1cm4ge1xuICAgIC4uLmZpdEJvdW5kcyh7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIGJvdW5kczogcGFkZGVkQm91bmRzLFxuICAgICAgcGFkZGluZzogb3B0cz8ucGFkZGluZyxcbiAgICAgIC8vIG1pblpvb20sXG4gICAgICBtYXhab29tLFxuICAgIH0pLFxuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBiZWFyaW5nOiAwLFxuICAgIHBpdGNoOiAwLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zPEw+KFxuICBsb2NhdGlvbnM6IEl0ZXJhYmxlPEw+LFxuICBnZXRMb2NhdGlvbkNvb3JkczogKGxvY2F0aW9uOiBMKSA9PiBbbnVtYmVyLCBudW1iZXJdLFxuICBzaXplOiBbbnVtYmVyLCBudW1iZXJdLFxuICBvcHRzPzogR2V0Vmlld1N0YXRlT3B0aW9ucyxcbik6IFZpZXdTdGF0ZSAmIHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0ge1xuICBjb25zdCBhc0dlb21ldHJ5ID0gKGxvY2F0aW9uOiBMKSA9PiAoe1xuICAgIHR5cGU6ICdQb2ludCcsXG4gICAgY29vcmRpbmF0ZXM6IGdldExvY2F0aW9uQ29vcmRzKGxvY2F0aW9uKSxcbiAgfSk7XG4gIGxldCBnZW9tZXRyaWVzO1xuICBpZiAoQXJyYXkuaXNBcnJheShsb2NhdGlvbnMpKSB7XG4gICAgZ2VvbWV0cmllcyA9IGxvY2F0aW9ucy5tYXAoYXNHZW9tZXRyeSk7XG4gIH0gZWxzZSB7XG4gICAgZ2VvbWV0cmllcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgICBnZW9tZXRyaWVzLnB1c2goYXNHZW9tZXRyeShsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZ2V0Vmlld1N0YXRlRm9yRmVhdHVyZXMoXG4gICAge1xuICAgICAgdHlwZTogJ0dlb21ldHJ5Q29sbGVjdGlvbicsXG4gICAgICBnZW9tZXRyaWVzLFxuICAgIH0gYXMgYW55LFxuICAgIHNpemUsXG4gICAgb3B0cyxcbiAgKTtcbn1cbiJdfQ==
|