@gravitee/ui-components 3.21.7 → 3.24.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/package.json +22 -21
- package/src/atoms/gv-autocomplete.js +5 -6
- package/src/atoms/gv-button.js +4 -4
- package/src/atoms/gv-checkbox.js +3 -3
- package/src/atoms/gv-date-picker-calendar.js +4 -5
- package/src/atoms/gv-date-picker-cell.js +4 -4
- package/src/atoms/gv-date-picker.js +4 -5
- package/src/atoms/gv-file-upload.js +4 -5
- package/src/atoms/gv-icon.js +14 -7
- package/src/atoms/gv-image.js +4 -4
- package/src/atoms/gv-input-message.js +2 -3
- package/src/atoms/gv-input.js +3 -3
- package/src/atoms/gv-link.js +6 -6
- package/src/atoms/gv-message.js +3 -3
- package/src/atoms/gv-metric.js +3 -3
- package/src/atoms/gv-relative-time.js +6 -4
- package/src/atoms/gv-select-native.js +288 -0
- package/src/atoms/gv-select.js +10 -8
- package/src/atoms/gv-spinner.js +2 -2
- package/src/atoms/gv-state.js +3 -3
- package/src/atoms/gv-switch.js +4 -4
- package/src/atoms/gv-tag.js +3 -3
- package/src/atoms/gv-text.js +4 -4
- package/src/charts/gv-chart-bar.js +2 -2
- package/src/charts/gv-chart-gauge.js +2 -2
- package/src/charts/gv-chart-histogram.js +2 -2
- package/src/charts/gv-chart-line.js +2 -2
- package/src/charts/gv-chart-map.js +2 -2
- package/src/charts/gv-chart-pie.js +2 -2
- package/src/index.js +2 -1
- package/src/lib/item.js +2 -2
- package/src/lib/studio.js +3 -3
- package/src/mixins/chart-element.js +3 -4
- package/src/mixins/input-element.js +4 -4
- package/src/mixins/item-resource.js +3 -3
- package/src/mixins/with-skeleton-attribute.js +2 -2
- package/src/molecules/gv-card-full.js +7 -6
- package/src/molecules/gv-card-list.js +3 -4
- package/src/molecules/gv-card.js +3 -3
- package/src/molecules/gv-category-list.js +2 -3
- package/src/molecules/gv-category.js +3 -3
- package/src/molecules/gv-code-hint.js +2 -3
- package/src/molecules/gv-code.js +3 -3
- package/src/molecules/gv-confirm.js +2 -3
- package/src/molecules/gv-cron-editor.js +3 -3
- package/src/molecules/gv-dropdown-menu.js +2 -3
- package/src/molecules/gv-expandable.js +3 -3
- package/src/molecules/gv-expression-language.js +2 -3
- package/src/molecules/gv-identity-picture.js +3 -4
- package/src/molecules/gv-list.js +4 -4
- package/src/molecules/gv-metrics.js +4 -4
- package/src/molecules/gv-modal.js +2 -2
- package/src/molecules/gv-nav.js +5 -5
- package/src/molecules/gv-option.js +6 -6
- package/src/molecules/gv-plans.js +5 -6
- package/src/molecules/gv-popover.js +3 -4
- package/src/molecules/gv-promote.js +7 -6
- package/src/molecules/gv-rating-list.js +4 -5
- package/src/molecules/gv-rating.js +4 -4
- package/src/molecules/gv-row-expandable.js +2 -2
- package/src/molecules/gv-row.js +3 -3
- package/src/molecules/gv-stats.js +4 -4
- package/src/molecules/gv-stepper.js +4 -4
- package/src/molecules/gv-table.js +7 -8
- package/src/molecules/gv-tree.js +4 -4
- package/src/organisms/gv-documentation.js +2 -2
- package/src/organisms/gv-header.js +6 -6
- package/src/organisms/gv-http-client.js +2 -2
- package/src/organisms/gv-menu.js +3 -3
- package/src/organisms/gv-newsletter-subscription.js +2 -2
- package/src/organisms/gv-pagination.js +2 -2
- package/src/organisms/gv-properties.js +3 -3
- package/src/organisms/gv-resizable-views.js +3 -4
- package/src/organisms/gv-resources.js +2 -2
- package/src/organisms/gv-schema-form-array.js +5 -5
- package/src/organisms/gv-schema-form-control-object.js +5 -5
- package/src/organisms/gv-schema-form-control.js +11 -11
- package/src/organisms/gv-schema-form.js +8 -7
- package/src/organisms/gv-tabs.js +2 -3
- package/src/organisms/gv-user-menu.js +4 -4
- package/src/organisms/gv-vertical-menu.js +2 -2
- package/src/policy-studio/gv-flow-step.js +3 -3
- package/src/policy-studio/gv-flow.js +5 -5
- package/src/policy-studio/gv-policy-studio-menu.js +4 -4
- package/src/policy-studio/gv-policy-studio.js +5 -5
- package/src/styles/empty.js +2 -2
- package/src/styles/input.js +3 -3
- package/src/styles/link.js +2 -2
- package/src/styles/skeleton.js +2 -2
- package/src/styles/zoom.js +2 -2
- package/src/theme/gv-theme.js +2 -2
- package/wc/gv-select-native.js +1 -0
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { css, LitElement } from 'lit
|
|
17
|
-
import { html } from 'lit-html';
|
|
16
|
+
import { css, LitElement, html } from 'lit';
|
|
18
17
|
import { dispatchCustomEvent } from '../lib/events';
|
|
19
18
|
import '../atoms/gv-input';
|
|
20
19
|
import '../atoms/gv-input-message';
|
|
21
20
|
import '../atoms/gv-text';
|
|
22
21
|
import '../atoms/gv-select';
|
|
22
|
+
import '../atoms/gv-select-native';
|
|
23
23
|
import '../atoms/gv-switch';
|
|
24
24
|
import '../molecules/gv-code';
|
|
25
25
|
import '../molecules/gv-expression-language';
|
|
@@ -135,7 +135,11 @@ export class GvSchemaFormControl extends UpdateAfterBrowser(LitElement) {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
if ((this.control.enum || this.control.items && this.control.items.enum) && !this.isAutocomplete()) {
|
|
138
|
-
|
|
138
|
+
if (this.control.type === 'array') {
|
|
139
|
+
return 'gv-select';
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return 'gv-select-native';
|
|
139
143
|
} else if (isComplexArray(this.control)) {
|
|
140
144
|
return 'gv-schema-form-array';
|
|
141
145
|
} else if (this.control.type === 'array') {
|
|
@@ -173,10 +177,6 @@ export class GvSchemaFormControl extends UpdateAfterBrowser(LitElement) {
|
|
|
173
177
|
element.skeleton = this.skeleton;
|
|
174
178
|
element.classList.add('form__control');
|
|
175
179
|
|
|
176
|
-
if (this.value != null) {
|
|
177
|
-
this._setValue(element);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
180
|
if (this.value == null && this.control.default != null) {
|
|
181
181
|
this.value = this.control.default;
|
|
182
182
|
dispatchCustomEvent(this, 'default-value', {
|
|
@@ -351,8 +351,8 @@ export class GvSchemaFormControl extends UpdateAfterBrowser(LitElement) {
|
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
353
|
|
|
354
|
-
async
|
|
355
|
-
await super.
|
|
354
|
+
async getUpdateComplete() {
|
|
355
|
+
await super.getUpdateComplete();
|
|
356
356
|
await Promise.all(this.getControls().map(e => e.updateComplete));
|
|
357
357
|
}
|
|
358
358
|
|
|
@@ -408,9 +408,9 @@ export class GvSchemaFormControl extends UpdateAfterBrowser(LitElement) {
|
|
|
408
408
|
|
|
409
409
|
static get styles() {
|
|
410
410
|
return [// language=CSS
|
|
411
|
-
css`:host{box-sizing:border-box;margin:var(--gv-schema-form-control--m,.4rem);display:block}:host([hidden]){visibility:hidden;height:0;margin:0;padding:0;overflow:hidden}.form__control-description,.form__control-error{font-size:12px}.form__control-description{opacity:.8}.form__control-label{display:flex;flex-direction:row;border-bottom:1px solid #d9d9d9}label{margin:.2rem}.form__control-label label{flex:1;text-transform:capitalize}.form__control-array,.form__control-object{display:flex;flex-direction:column}.form__control-enum{display:flex}.form__control-array gv-button{align-self:flex-end}.form__control{position:relative}gv-code,gv-expression-language,gv-input,gv-select,gv-switch{width:100%;margin:.2rem 0}gv-autocomplete:hover,gv-select:hover{z-index:70}.error{color:var(--gv-theme-color-error,#f44336)}.warning{color:var(--gv-theme-color-warning,#ff9800)}`];
|
|
411
|
+
css`:host{box-sizing:border-box;margin:var(--gv-schema-form-control--m,.4rem);display:block}:host([hidden]){visibility:hidden;height:0;margin:0;padding:0;overflow:hidden}.form__control-description,.form__control-error{font-size:12px}.form__control-description{opacity:.8}.form__control-label{display:flex;flex-direction:row;border-bottom:1px solid #d9d9d9}label{margin:.2rem}.form__control-label label{flex:1;text-transform:capitalize}.form__control-array,.form__control-object{display:flex;flex-direction:column}.form__control-enum{display:flex}.form__control-array gv-button{align-self:flex-end}.form__control{position:relative}gv-code,gv-expression-language,gv-input,gv-select,gv-select-native,gv-switch{width:100%;margin:.2rem 0}gv-autocomplete:hover,gv-select-native:hover,gv-select:hover{z-index:70}.error{color:var(--gv-theme-color-error,#f44336)}.warning{color:var(--gv-theme-color-warning,#ff9800)}`];
|
|
412
412
|
}
|
|
413
413
|
|
|
414
414
|
}
|
|
415
415
|
window.customElements.define('gv-schema-form-control', GvSchemaFormControl);
|
|
416
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImlzQ29kZW1pcnJvciIsImlzT2JqZWN0IiwiaXNDb21wbGV4QXJyYXkiLCJVcGRhdGVBZnRlckJyb3dzZXIiLCJHdlNjaGVtYUZvcm1Db250cm9sIiwicHJvcGVydGllcyIsInR5cGUiLCJTdHJpbmciLCJpZCIsInJlZmxlY3QiLCJuYW1lIiwicmVxdWlyZWQiLCJCb29sZWFuIiwiZGlzYWJsZWQiLCJyZWFkb25seSIsInRpdGxlIiwicGF0dGVybiIsImNvbnRyb2wiLCJPYmplY3QiLCJlcnJvcnMiLCJBcnJheSIsInZhbHVlIiwic2tlbGV0b24iLCJoaWRkZW4iLCJ3cml0ZU9ubHkiLCJjb21wYWN0IiwiY29uc3RydWN0b3IiLCJfb2JzZXJ2ZWRQcm9wZXJ0aWVzIiwiaXNFeHByZXNzaW9uTGFuZ3VhZ2UiLCJpc0Nyb25FeHByZXNzaW9uIiwiaXNQYXNzd29yZCIsImdldFBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJpc0F1dG9jb21wbGV0ZSIsImV2ZW50IiwiaXNUZXh0IiwiZ2V0RWxlbWVudE5hbWUiLCJlbnVtIiwiaXRlbXMiLCJfdXBkYXRlUHJvcGVydGllcyIsImVsZW1lbnQiLCJmb3JFYWNoIiwicHJvcGVydHkiLCJfcmVuZGVyQ29udHJvbCIsImVsZW1lbnROYW1lIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiX3NldFZhbHVlIiwiZGVmYXVsdCIsImN1cnJlbnRUYXJnZXQiLCJzY2hlbWEiLCJsYWJlbCIsInRtcCIsInNwbGl0IiwibGVuZ3RoIiwiaXNOYU4iLCJwYXJzZUludCIsInJvd3MiLCJhdXRvc2l6ZSIsImRlc2NyaXB0aW9uIiwib3B0aW9ucyIsInRpdGxlTWFwIiwibWFwIiwibXVsdGlwbGUiLCJjb2RlbWlycm9yT3B0aW9ucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25JbnB1dCIsImJpbmQiLCJhdXRvY29tcGxldGUiLCJtaW5DaGFycyIsImZpbHRlciIsImNsZWFyYWJsZSIsImFwcGVuZENoaWxkIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwidGFyZ2V0IiwidGFnTmFtZSIsImRldGFpbCIsImdldENvbnRyb2xzIiwiZnJvbSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0Q29udHJvbCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250cm9sRWxlbWVudCIsInRvU3RyaW5nIiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwiUHJvbWlzZSIsImFsbCIsInVwZGF0ZUNvbXBsZXRlIiwidGhlbiIsIl9nZXRVcGRhdGVDb21wbGV0ZSIsImZvcm1hdEVycm9yTWVzc2FnZSIsImVycm9yIiwiYXJndW1lbnQiLCJtZXNzYWdlIiwicmVwbGFjZSIsInNob3VsZFVwZGF0ZSIsImZpbmQiLCJlcnJvckNvbnRhaW5lciIsImNvbnRhaW5lciIsImlubmVySFRNTCIsImtleSIsImxldmVsIiwicmVuZGVyIiwic3R5bGVzIiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLEdBQVQsRUFBY0MsVUFBZCxRQUFnQyxhQUFoQztBQUNBLFNBQVNDLElBQVQsUUFBcUIsVUFBckI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUNBLE9BQU8sbUJBQVA7QUFDQSxPQUFPLDJCQUFQO0FBQ0EsT0FBTyxrQkFBUDtBQUNBLE9BQU8sb0JBQVA7QUFDQSxPQUFPLG9CQUFQO0FBQ0EsT0FBTyxzQkFBUDtBQUNBLE9BQU8scUNB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TCxDQUFZc0IsT0FBWixDQUFxQnlELEtBQUQsSUFBVztBQUM3QixjQUFNUyxHQUFHLEdBQUdULEtBQUssQ0FBQ3hELFFBQU4sS0FBbUIsVUFBbkIsR0FBZ0N3RCxLQUFLLENBQUNDLFFBQXRDLEdBQWlERCxLQUFLLENBQUN4RCxRQUFOLENBQWUyRCxPQUFmLENBQXVCLFdBQXZCLEVBQW9DLEVBQXBDLENBQTdEO0FBQ0EsY0FBTUcsY0FBYyxHQUFHLEtBQUtyQixVQUFMLENBQWdCRyxhQUFoQixDQUErQixRQUFPcUIsR0FBSSxVQUExQyxDQUF2Qjs7QUFDQSxZQUFJSCxjQUFKLEVBQW9CO0FBQ2xCLGdCQUFNSixPQUFPLEdBQUd2RCxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsa0JBQXZCLENBQWhCO0FBQ0FzRCxVQUFBQSxPQUFPLENBQUNNLFNBQVIsR0FBb0IsS0FBS1Qsa0JBQUwsQ0FBd0JDLEtBQXhCLENBQXBCO0FBQ0FFLFVBQUFBLE9BQU8sQ0FBQ1EsS0FBUixHQUFnQixNQUFoQjtBQUNBSixVQUFBQSxjQUFjLENBQUM5QixXQUFmLENBQTJCMEIsT0FBM0I7QUFDRDtBQUNGLE9BVEQ7QUFVQSxhQUFPLEtBQVA7QUFDRDs7QUFDRCxXQUFPLE1BQU1FLFlBQU4sQ0FBbUJaLGlCQUFuQixDQUFQO0FBQ0Q7O0FBRURtQixFQUFBQSxNQUFNLEdBQUc7QUFDUCxXQUFPL0csSUFBSSxJQUNQLEtBQUs2QyxjQUFMLEVBRE8seUNBRThCLEtBQUtuQyxFQUFMLEdBQVUsUUFGeEMsV0FBWDtBQUlEOztBQUVnQixhQUFOc0csTUFBTSxHQUFHO0FBQ2xCLFdBQU8sQ0FDTDtBQUNBbEgsSUFBQUEsR0FBRyxpMkJBRkUsQ0FBUDtBQW1GRDs7QUF0WnFFO0FBeVp4RW1ILE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkMsTUFBdEIsQ0FBNkIsd0JBQTdCLEVBQXVEN0csbUJBQXZEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgTGl0RWxlbWVudCB9IGZyb20gJ2xpdC1lbGVtZW50JztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQtaHRtbCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWlucHV0JztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtaW5wdXQtbWVzc2FnZSc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXRleHQnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1zZWxlY3QnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1zd2l0Y2gnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtY29kZSc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1leHByZXNzaW9uLWxhbmd1YWdlJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LWNyb24tZWRpdG9yJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtYXV0b2NvbXBsZXRlJztcbmltcG9ydCAnLi4vb3JnYW5pc21zL2d2LXNjaGVtYS1mb3JtLWFycmF5JztcbmltcG9ydCAnLi4vb3JnYW5pc21zL2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtb2JqZWN0JztcbmltcG9ydCB7IGlzQ29kZW1pcnJvciwgaXNPYmplY3QsIGlzQ29tcGxleEFycmF5IH0gZnJvbSAnLi4vbGliL3NjaGVtYS1mb3JtJztcbmltcG9ydCB7IFVwZGF0ZUFmdGVyQnJvd3NlciB9IGZyb20gJy4uL21peGlucy91cGRhdGUtYWZ0ZXItYnJvd3Nlcic7XG5cbmV4cG9ydCBjbGFzcyBHdlNjaGVtYUZvcm1Db250cm9sIGV4dGVuZHMgVXBkYXRlQWZ0ZXJCcm93c2VyKExpdEVsZW1lbnQpIHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgaWQ6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgcmVxdWlyZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgcmVhZG9ubHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgdGl0bGU6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBwYXR0ZXJuOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgY29udHJvbDogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIGVycm9yczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgdmFsdWU6IHsgdHlwZTogT2JqZWN0LCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBza2VsZXRvbjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBoaWRkZW46IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgd3JpdGVPbmx5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGNvbXBhY3Q6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIFdoZW4gZm9ybSBoYXMgZXJyb3JzLCB0aGUgY29udHJvbCBpcyBub3QgdXBkYXRlIHRvIGNvbnNlcnZlIHRoZSBlcnJvciBzdGF0ZS5cbiAgICAvLyBUaGlzIGxpc3QgaXMgdXNlZCB0byBmb3JjZSB0aGUgdXBkYXRlIG9mIHByb3BlcnRpZXMgZXZlbiBpbiBlcnJvciBjYXNlLlxuICAgIHRoaXMuX29ic2VydmVkUHJvcGVydGllcyA9IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknLCAncmVxdWlyZWQnXTtcbiAgfVxuXG4gIGlzRXhwcmVzc2lvbkxhbmd1YWdlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVsnZXhwcmVzc2lvbi1sYW5ndWFnZSddICE9IG51bGw7XG4gIH1cblxuICBpc0Nyb25FeHByZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVsnY3Jvbi1leHByZXNzaW9uJ10gPT09IHRydWU7XG4gIH1cblxuICBpc1Bhc3N3b3JkKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNvbnRyb2wud3JpdGVPbmx5ID09PSB0cnVlIHx8XG4gICAgICAodGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udHlwZSAhPSBudWxsICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnR5cGUgPT09ICdwYXNzd29yZCcpXG4gICAgKTtcbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5wbGFjZWhvbGRlciA/IHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnBsYWNlaG9sZGVyIDogbnVsbDtcbiAgfVxuXG4gIGlzQ29kZW1pcnJvcigpIHtcbiAgICByZXR1cm4gaXNDb2RlbWlycm9yKHRoaXMuY29udHJvbCk7XG4gIH1cblxuICBpc09iamVjdCgpIHtcbiAgICByZXR1cm4gaXNPYmplY3QodGhpcy5jb250cm9sKTtcbiAgfVxuXG4gIGlzQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5ldmVudCAhPSBudWxsICYmIHRoaXMuY29udHJvbC50eXBlID09PSAnc3RyaW5nJztcbiAgfVxuXG4gIGlzVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udHlwZSA9PT0gJ3RleHQnICYmIHRoaXMuY29udHJvbC50eXBlID09PSAnc3RyaW5nJztcbiAgfVxuXG4gIGdldEVsZW1lbnROYW1lKCkge1xuICAgIGlmICh0aGlzLmlzT2JqZWN0KCkpIHtcbiAgICAgIHJldHVybiAnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1vYmplY3QnO1xuICAgIH1cbiAgICBpZiAoKHRoaXMuY29udHJvbC5lbnVtIHx8ICh0aGlzLmNvbnRyb2wuaXRlbXMgJiYgdGhpcy5jb250cm9sLml0ZW1zLmVudW0pKSAmJiAhdGhpcy5pc0F1dG9jb21wbGV0ZSgpKSB7XG4gICAgICByZXR1cm4gJ2d2LXNlbGVjdCc7XG4gICAgfSBlbHNlIGlmIChpc0NvbXBsZXhBcnJheSh0aGlzLmNvbnRyb2wpKSB7XG4gICAgICByZXR1cm4gJ2d2LXNjaGVtYS1mb3JtLWFycmF5JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICByZXR1cm4gJ2d2LWJ1dHRvbic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gJ2d2LXN3aXRjaCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRXhwcmVzc2lvbkxhbmd1YWdlKCkpIHtcbiAgICAgIHJldHVybiAnZ3YtZXhwcmVzc2lvbi1sYW5ndWFnZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29kZW1pcnJvcigpKSB7XG4gICAgICByZXR1cm4gJ2d2LWNvZGUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0Nyb25FeHByZXNzaW9uKCkpIHtcbiAgICAgIHJldHVybiAnZ3YtY3Jvbi1lZGl0b3InO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1RleHQoKSkge1xuICAgICAgcmV0dXJuICdndi10ZXh0JztcbiAgICB9XG5cbiAgICByZXR1cm4gJ2d2LWlucHV0JztcbiAgfVxuXG4gIF91cGRhdGVQcm9wZXJ0aWVzKGVsZW1lbnQpIHtcbiAgICBpZiAoZWxlbWVudCAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9vYnNlcnZlZFByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgaWYgKHRoaXNbcHJvcGVydHldICE9IG51bGwpIHtcbiAgICAgICAgICBlbGVtZW50W3Byb3BlcnR5XSA9IHRoaXNbcHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBfcmVuZGVyQ29udHJvbCgpIHtcbiAgICBjb25zdCBlbGVtZW50TmFtZSA9IHRoaXMuZ2V0RWxlbWVudE5hbWUoKTtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50TmFtZSk7XG4gICAgZWxlbWVudC5pZCA9IHRoaXMuaWQ7XG4gICAgZWxlbWVudC5uYW1lID0gdGhpcy5pZDtcbiAgICBlbGVtZW50LnNrZWxldG9uID0gdGhpcy5za2VsZXRvbjtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Zvcm1fX2NvbnRyb2wnKTtcblxuICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3NldFZhbHVlKGVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsICYmIHRoaXMuY29udHJvbC5kZWZhdWx0ICE9IG51bGwpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvbnRyb2wuZGVmYXVsdDtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2RlZmF1bHQtdmFsdWUnLCB7IHZhbHVlOiB0aGlzLnZhbHVlLCBjdXJyZW50VGFyZ2V0OiBlbGVtZW50LCBjb250cm9sOiB0aGlzLmNvbnRyb2wgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3NldFZhbHVlKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGVsZW1lbnQuc2NoZW1hID0gdGhpcy5jb250cm9sO1xuICAgIH0gZWxzZSBpZiAoaXNDb21wbGV4QXJyYXkodGhpcy5jb250cm9sKSkge1xuICAgICAgZWxlbWVudC5zY2hlbWEgPSB0aGlzLmNvbnRyb2wuaXRlbXM7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlUHJvcGVydGllcyhlbGVtZW50KTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2wudGl0bGUpIHtcbiAgICAgIGVsZW1lbnQubGFiZWwgPSB0aGlzLmNvbnRyb2wudGl0bGU7XG4gICAgICBlbGVtZW50LnRpdGxlID0gdGhpcy5jb250cm9sLnRpdGxlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0bXAgPSB0aGlzLmlkLnNwbGl0KCcuJyk7XG4gICAgICBjb25zdCB0aXRsZSA9IHRtcFt0bXAubGVuZ3RoIC0gMV07XG4gICAgICBpZiAoaXNOYU4ocGFyc2VJbnQodGl0bGUsIDEwKSkpIHtcbiAgICAgICAgZWxlbWVudC5sYWJlbCA9IHRpdGxlO1xuICAgICAgICBlbGVtZW50LnRpdGxlID0gdGl0bGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC5wYXR0ZXJuKSB7XG4gICAgICBlbGVtZW50LnBhdHRlcm4gPSB0aGlzLmNvbnRyb2wucGF0dGVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgZWxlbWVudC50eXBlID0gJ251bWJlcic7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNUZXh0KCkpIHtcbiAgICAgIGVsZW1lbnQucm93cyA9IDM7XG4gICAgICBlbGVtZW50LmF1dG9zaXplID0gdHJ1ZTtcbiAgICAgIGVsZW1lbnQucGxhY2Vob2xkZXIgPSB0aGlzLmNvbnRyb2wuZGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLmdldFBsYWNlaG9sZGVyKCk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sLmVudW0gfHwgKHRoaXMuY29udHJvbC5pdGVtcyAmJiB0aGlzLmNvbnRyb2wuaXRlbXMuZW51bSkpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNvbnRyb2wuZW51bSB8fCB0aGlzLmNvbnRyb2wuaXRlbXMuZW51bTtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50aXRsZU1hcCkge1xuICAgICAgICBlbGVtZW50Lm9wdGlvbnMgPSBvcHRpb25zLm1hcCgodmFsdWUpID0+ICh7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgbGFiZWw6IHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnRpdGxlTWFwW3ZhbHVlXSB8fCB2YWx1ZSxcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICBlbGVtZW50Lm11bHRpcGxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb2RlbWlycm9yKCkpIHtcbiAgICAgIGVsZW1lbnQub3B0aW9ucyA9IHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLmNvZGVtaXJyb3JPcHRpb25zO1xuICAgICAgaWYgKHRoaXMuY29udHJvbC5kZWZhdWx0ICE9IG51bGwgJiYgZWxlbWVudC5vcHRpb25zLnZhbHVlID09IG51bGwpIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zLnZhbHVlID0gdGhpcy5jb250cm9sLmRlZmF1bHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRXhwcmVzc2lvbkxhbmd1YWdlKCkpIHtcbiAgICAgIGVsZW1lbnQub3B0aW9ucyA9IHt9O1xuICAgICAgZWxlbWVudC5yb3dzID0gMTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNQYXNzd29yZCgpKSB7XG4gICAgICBlbGVtZW50LnR5cGUgPSAncGFzc3dvcmQnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wuZGVzY3JpcHRpb24pIHtcbiAgICAgIGVsZW1lbnQuZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2wuZGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29tcGFjdCkge1xuICAgICAgZWxlbWVudC5wbGFjZWhvbGRlciA9IGVsZW1lbnQuZGVzY3JpcHRpb24gfHwgZWxlbWVudC5sYWJlbDtcbiAgICAgIGVsZW1lbnQubGFiZWwgPSBudWxsO1xuICAgICAgZWxlbWVudC5kZXNjcmlwdGlvbiA9IG51bGw7XG4gICAgICBlbGVtZW50LmNvbXBhY3QgPSB0aGlzLmNvbXBhY3Q7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlaG9sZGVyICE9IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbkxhbmd1YWdlKCkgfHwgdGhpcy5pc0NvZGVtaXJyb3IoKSkge1xuICAgICAgICBlbGVtZW50Lm9wdGlvbnMucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoYCR7ZWxlbWVudE5hbWV9OmlucHV0YCwgdGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpKTtcblxuICAgIGxldCBjdXJyZW50VGFyZ2V0O1xuICAgIGlmICh0aGlzLmlzQXV0b2NvbXBsZXRlKCkpIHtcbiAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2d2LWF1dG9jb21wbGV0ZScpO1xuICAgICAgYXV0b2NvbXBsZXRlLm1pbkNoYXJzID0gMDtcbiAgICAgIGF1dG9jb21wbGV0ZS5maWx0ZXIgPSB0cnVlO1xuICAgICAgZWxlbWVudC5jbGVhcmFibGUgPSB0cnVlO1xuICAgICAgYXV0b2NvbXBsZXRlLmlkID0gdGhpcy5pZDtcbiAgICAgIGF1dG9jb21wbGV0ZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgIGF1dG9jb21wbGV0ZS5hZGRFdmVudExpc3RlbmVyKGBndi1hdXRvY29tcGxldGU6c2VsZWN0YCwgdGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpKTtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihgZ3YtaW5wdXQ6Y2xlYXJgLCB0aGlzLl9vbklucHV0LmJpbmQodGhpcykpO1xuICAgICAgY3VycmVudFRhcmdldCA9IGF1dG9jb21wbGV0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudFRhcmdldCA9IGVsZW1lbnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAhPSBudWxsKSB7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjb250cm9sLXJlYWR5Jywge1xuICAgICAgICBjdXJyZW50VGFyZ2V0LFxuICAgICAgICBjb250cm9sOiB0aGlzLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50VGFyZ2V0O1xuICB9XG5cbiAgX29uSW5wdXQoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGxldCB2YWx1ZSA9IG51bGw7XG4gICAgaWYgKGUudGFyZ2V0LnRhZ05hbWUgPT09ICdHVi1BVVRPQ09NUExFVEUnKSB7XG4gICAgICB2YWx1ZSA9IGUuZGV0YWlsLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGUuZGV0YWlsO1xuICAgIH1cbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2UnLCB7IHZhbHVlLCBjdXJyZW50VGFyZ2V0OiBlLnRhcmdldCwgY29udHJvbDogdGhpcy5jb250cm9sIH0pO1xuICB9XG5cbiAgZ2V0Q29udHJvbHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wnKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sLWFycmF5JykpLFxuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1vYmplY3QnKSksXG4gICAgXTtcbiAgfVxuXG4gIGdldENvbnRyb2woaWQpIHtcbiAgICBpZiAoaWQgPT0gbnVsbCkge1xuICAgICAgaWQgPSB0aGlzLmlkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7aWR9XCJdYCk7XG4gIH1cblxuICBfc2V0VmFsdWUoY29udHJvbEVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsICYmIGNvbnRyb2xFbGVtZW50ICE9IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2Jvb2xlYW4nIHx8IHRoaXMuY29udHJvbC50eXBlID09PSAnYXJyYXknIHx8IHRoaXMuY29udHJvbC50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb250cm9sRWxlbWVudC52YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sRWxlbWVudC52YWx1ZSA9IHRoaXMudmFsdWUudG9TdHJpbmcgPyB0aGlzLnZhbHVlLnRvU3RyaW5nKCkgOiB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29udHJvbEVsZW1lbnQ7XG4gIH1cblxuICBhc3luYyB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKSB7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygndmFsdWUnKSkge1xuICAgICAgUHJvbWlzZS5hbGwodGhpcy5nZXRDb250cm9scygpLm1hcCgoY29udHJvbCkgPT4gY29udHJvbC51cGRhdGVDb21wbGV0ZSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh0aGlzLmdldENvbnRyb2woKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBfZ2V0VXBkYXRlQ29tcGxldGUoKSB7XG4gICAgYXdhaXQgc3VwZXIuX2dldFVwZGF0ZUNvbXBsZXRlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5nZXRDb250cm9scygpLm1hcCgoZSkgPT4gZS51cGRhdGVDb21wbGV0ZSkpO1xuICB9XG5cbiAgZm9ybWF0RXJyb3JNZXNzYWdlKGVycm9yKSB7XG4gICAgbGV0IHRpdGxlO1xuICAgIGlmICh0aGlzLmNvbnRyb2wucHJvcGVydGllcyAhPSBudWxsICYmIHRoaXMuY29udHJvbC5wcm9wZXJ0aWVzW2Vycm9yLmFyZ3VtZW50XSAhPSBudWxsKSB7XG4gICAgICB0aXRsZSA9IHRoaXMuY29udHJvbC5wcm9wZXJ0aWVzW2Vycm9yLmFyZ3VtZW50XS50aXRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGl0bGUgPSB0aGlzLmNvbnRyb2wudGl0bGU7XG4gICAgfVxuICAgIGlmICh0aXRsZSkge1xuICAgICAgcmV0dXJuIGA8c3Bhbj4ke2Vycm9yLm1lc3NhZ2UucmVwbGFjZShlcnJvci5hcmd1bWVudCwgdGl0bGUpfTwvc3Bhbj5gO1xuICAgIH1cbiAgICByZXR1cm4gYDxzcGFuPiR7ZXJyb3IubWVzc2FnZX08L3NwYW4+YDtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGlmICh0aGlzLl9vYnNlcnZlZFByb3BlcnRpZXMuZmluZCgocHJvcGVydHkpID0+IGNoYW5nZWRQcm9wZXJ0aWVzLmhhcyhwcm9wZXJ0eSkpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXModGhpcy5nZXRDb250cm9sKCkpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Vycm9ycycpICYmIHRoaXMuZXJyb3JzICE9IG51bGwpIHtcbiAgICAgIC8vIFNldCBlcnJvcnMgdG8gY29tcGxleCBjb250cm9sc1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGaW5kIHNpbXBsZSBjb250cm9scyBhbmQgYXBwZW5kIGVycm9yIG1lc3NhZ2VcbiAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtX19jb250cm9sLWVycm9yJyk7XG4gICAgICBlcnJvckNvbnRhaW5lci5mb3JFYWNoKChjb250YWluZXIpID0+IChjb250YWluZXIuaW5uZXJIVE1MID0gJycpKTtcbiAgICAgIHRoaXMuZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGVycm9yLnByb3BlcnR5ID09PSAnaW5zdGFuY2UnID8gZXJyb3IuYXJndW1lbnQgOiBlcnJvci5wcm9wZXJ0eS5yZXBsYWNlKCdpbnN0YW5jZS4nLCAnJyk7XG4gICAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7a2V5fS1lcnJvclwiXWApO1xuICAgICAgICBpZiAoZXJyb3JDb250YWluZXIpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZ3YtaW5wdXQtbWVzc2FnZScpO1xuICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gdGhpcy5mb3JtYXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgICAgICAgIG1lc3NhZ2UubGV2ZWwgPSAnd2Fybic7XG4gICAgICAgICAgZXJyb3JDb250YWluZXIuYXBwZW5kQ2hpbGQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgICR7dGhpcy5fcmVuZGVyQ29udHJvbCgpfVxuICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2NvbnRyb2wtZXJyb3JcIiBpZD1cIiR7dGhpcy5pZCArICctZXJyb3InfVwiPjwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1hcmdpbjogdmFyKC0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbSwgMC40cmVtKTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtoaWRkZW5dKSB7XG4gICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZGVzY3JpcHRpb24sXG4gICAgICAgIC5mb3JtX19jb250cm9sLWVycm9yIHtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9fY29udHJvbC1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sLWxhYmVsIGxhYmVsIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXksXG4gICAgICAgIC5mb3JtX19jb250cm9sLW9iamVjdCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZW51bSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAvKmFsaWduLWl0ZW1zOiBmbGV4LWVuZDsqL1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXkgZ3YtYnV0dG9uIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3QsXG4gICAgICAgIGd2LWlucHV0LFxuICAgICAgICBndi1jb2RlLFxuICAgICAgICBndi1zd2l0Y2gsXG4gICAgICAgIGd2LWV4cHJlc3Npb24tbGFuZ3VhZ2Uge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtIDA7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3Q6aG92ZXIsXG4gICAgICAgIGd2LWF1dG9jb21wbGV0ZTpob3ZlciB7XG4gICAgICAgICAgei1pbmRleDogNzA7XG4gICAgICAgIH1cblxuICAgICAgICAuZXJyb3Ige1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1jb2xvci1lcnJvciwgI2Y0NDMzNik7XG4gICAgICAgIH1cblxuICAgICAgICAud2FybmluZyB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWd2LXRoZW1lLWNvbG9yLXdhcm5pbmcsICNmZjk4MDApO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcsIEd2U2NoZW1hRm9ybUNvbnRyb2wpO1xuIl19
|
|
416
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImlzQ29kZW1pcnJvciIsImlzT2JqZWN0IiwiaXNDb21wbGV4QXJyYXkiLCJVcGRhdGVBZnRlckJyb3dzZXIiLCJHdlNjaGVtYUZvcm1Db250cm9sIiwicHJvcGVydGllcyIsInR5cGUiLCJTdHJpbmciLCJpZCIsInJlZmxlY3QiLCJuYW1lIiwicmVxdWlyZWQiLCJCb29sZWFuIiwiZGlzYWJsZWQiLCJyZWFkb25seSIsInRpdGxlIiwicGF0dGVybiIsImNvbnRyb2wiLCJPYmplY3QiLCJlcnJvcnMiLCJBcnJheSIsInZhbHVlIiwic2tlbGV0b24iLCJoaWRkZW4iLCJ3cml0ZU9ubHkiLCJjb21wYWN0IiwiY29uc3RydWN0b3IiLCJfb2JzZXJ2ZWRQcm9wZXJ0aWVzIiwiaXNFeHByZXNzaW9uTGFuZ3VhZ2UiLCJpc0Nyb25FeHByZXNzaW9uIiwiaXNQYXNzd29yZCIsImdldFBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJpc0F1dG9jb21wbGV0ZSIsImV2ZW50IiwiaXNUZXh0IiwiZ2V0RWxlbWVudE5hbWUiLCJlbnVtIiwiaXRlbXMiLCJfdXBkYXRlUHJvcGVydGllcyIsImVsZW1lbnQiLCJmb3JFYWNoIiwicHJvcGVydHkiLCJfcmVuZGVyQ29udHJvbCIsImVsZW1lbnROYW1lIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiZGVmYXVsdCIsImN1cnJlbnRUYXJnZXQiLCJfc2V0VmFsdWUiLCJzY2hlbWEiLCJsYWJlbCIsInRtcCIsInNwbGl0IiwibGVuZ3RoIiwiaXNOYU4iLCJwYXJzZUludCIsInJvd3MiLCJhdXRvc2l6ZSIsImRlc2NyaXB0aW9uIiwib3B0aW9ucyIsInRpdGxlTWFwIiwibWFwIiwibXVsdGlwbGUiLCJjb2RlbWlycm9yT3B0aW9ucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25JbnB1dCIsImJpbmQiLCJhdXRvY29tcGxldGUiLCJtaW5DaGFycyIsImZpbHRlciIsImNsZWFyYWJsZSIsImFwcGVuZENoaWxkIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwidGFyZ2V0IiwidGFnTmFtZSIsImRldGFpbCIsImdldENvbnRyb2xzIiwiZnJvbSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0Q29udHJvbCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250cm9sRWxlbWVudCIsInRvU3RyaW5nIiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwiUHJvbWlzZSIsImFsbCIsInVwZGF0ZUNvbXBsZXRlIiwidGhlbiIsImdldFVwZGF0ZUNvbXBsZXRlIiwiZm9ybWF0RXJyb3JNZXNzYWdlIiwiZXJyb3IiLCJhcmd1bWVudCIsIm1lc3NhZ2UiLCJyZXBsYWNlIiwic2hvdWxkVXBkYXRlIiwiZmluZCIsImVycm9yQ29udGFpbmVyIiwiY29udGFpbmVyIiwiaW5uZXJIVE1MIiwia2V5IiwibGV2ZWwiLCJyZW5kZXIiLCJzdHlsZXMiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxVQUFkLEVBQTBCQyxJQUExQixRQUFzQyxLQUF0QztBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLE9BQU8sMkJBQVA7QUFDQSxPQUFPLGtCQUFQO0FBQ0EsT0FBTyxvQkFBUDtBQUNBLE9BQU8sMkJBQVA7QUFDQSxPQUFPLG9CQUFQO0FBQ0EsT0FBTyxzQkFBUDtBQUNBLE9BQU8scUNB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LENBQVlzQixPQUFaLENBQXFCeUQsS0FBRCxJQUFXO0FBQzdCLGNBQU1TLEdBQUcsR0FBR1QsS0FBSyxDQUFDeEQsUUFBTixLQUFtQixVQUFuQixHQUFnQ3dELEtBQUssQ0FBQ0MsUUFBdEMsR0FBaURELEtBQUssQ0FBQ3hELFFBQU4sQ0FBZTJELE9BQWYsQ0FBdUIsV0FBdkIsRUFBb0MsRUFBcEMsQ0FBN0Q7QUFDQSxjQUFNRyxjQUFjLEdBQUcsS0FBS3JCLFVBQUwsQ0FBZ0JHLGFBQWhCLENBQStCLFFBQU9xQixHQUFJLFVBQTFDLENBQXZCOztBQUNBLFlBQUlILGNBQUosRUFBb0I7QUFDbEIsZ0JBQU1KLE9BQU8sR0FBR3ZELFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixrQkFBdkIsQ0FBaEI7QUFDQXNELFVBQUFBLE9BQU8sQ0FBQ00sU0FBUixHQUFvQixLQUFLVCxrQkFBTCxDQUF3QkMsS0FBeEIsQ0FBcEI7QUFDQUUsVUFBQUEsT0FBTyxDQUFDUSxLQUFSLEdBQWdCLE1BQWhCO0FBQ0FKLFVBQUFBLGNBQWMsQ0FBQzlCLFdBQWYsQ0FBMkIwQixPQUEzQjtBQUNEO0FBQ0YsT0FURDtBQVVBLGFBQU8sS0FBUDtBQUNEOztBQUNELFdBQU8sTUFBTUUsWUFBTixDQUFtQlosaUJBQW5CLENBQVA7QUFDRDs7QUFFRG1CLEVBQUFBLE1BQU0sR0FBRztBQUNQLFdBQU8vRyxJQUFJLElBQ1AsS0FBSzZDLGNBQUwsRUFETyx5Q0FFOEIsS0FBS25DLEVBQUwsR0FBVSxRQUZ4QyxXQUFYO0FBSUQ7O0FBRWdCLGFBQU5zRyxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMO0FBQ0FsSCxJQUFBQSxHQUFHLHk0QkFGRSxDQUFQO0FBcUZEOztBQXZacUU7QUEwWnhFbUgsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2Qix3QkFBN0IsRUFBdUQ3RyxtQkFBdkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBMaXRFbGVtZW50LCBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtaW5wdXQnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbnB1dC1tZXNzYWdlJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtdGV4dCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXNlbGVjdCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXNlbGVjdC1uYXRpdmUnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1zd2l0Y2gnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtY29kZSc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1leHByZXNzaW9uLWxhbmd1YWdlJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LWNyb24tZWRpdG9yJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtYXV0b2NvbXBsZXRlJztcbmltcG9ydCAnLi4vb3JnYW5pc21zL2d2LXNjaGVtYS1mb3JtLWFycmF5JztcbmltcG9ydCAnLi4vb3JnYW5pc21zL2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtb2JqZWN0JztcbmltcG9ydCB7IGlzQ29kZW1pcnJvciwgaXNPYmplY3QsIGlzQ29tcGxleEFycmF5IH0gZnJvbSAnLi4vbGliL3NjaGVtYS1mb3JtJztcbmltcG9ydCB7IFVwZGF0ZUFmdGVyQnJvd3NlciB9IGZyb20gJy4uL21peGlucy91cGRhdGUtYWZ0ZXItYnJvd3Nlcic7XG5cbmV4cG9ydCBjbGFzcyBHdlNjaGVtYUZvcm1Db250cm9sIGV4dGVuZHMgVXBkYXRlQWZ0ZXJCcm93c2VyKExpdEVsZW1lbnQpIHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgaWQ6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgcmVxdWlyZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgcmVhZG9ubHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgdGl0bGU6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBwYXR0ZXJuOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgY29udHJvbDogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIGVycm9yczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgdmFsdWU6IHsgdHlwZTogT2JqZWN0LCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBza2VsZXRvbjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBoaWRkZW46IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgd3JpdGVPbmx5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGNvbXBhY3Q6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIFdoZW4gZm9ybSBoYXMgZXJyb3JzLCB0aGUgY29udHJvbCBpcyBub3QgdXBkYXRlIHRvIGNvbnNlcnZlIHRoZSBlcnJvciBzdGF0ZS5cbiAgICAvLyBUaGlzIGxpc3QgaXMgdXNlZCB0byBmb3JjZSB0aGUgdXBkYXRlIG9mIHByb3BlcnRpZXMgZXZlbiBpbiBlcnJvciBjYXNlLlxuICAgIHRoaXMuX29ic2VydmVkUHJvcGVydGllcyA9IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknLCAncmVxdWlyZWQnXTtcbiAgfVxuXG4gIGlzRXhwcmVzc2lvbkxhbmd1YWdlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVsnZXhwcmVzc2lvbi1sYW5ndWFnZSddICE9IG51bGw7XG4gIH1cblxuICBpc0Nyb25FeHByZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVsnY3Jvbi1leHByZXNzaW9uJ10gPT09IHRydWU7XG4gIH1cblxuICBpc1Bhc3N3b3JkKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNvbnRyb2wud3JpdGVPbmx5ID09PSB0cnVlIHx8XG4gICAgICAodGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udHlwZSAhPSBudWxsICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnR5cGUgPT09ICdwYXNzd29yZCcpXG4gICAgKTtcbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5wbGFjZWhvbGRlciA/IHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnBsYWNlaG9sZGVyIDogbnVsbDtcbiAgfVxuXG4gIGlzQ29kZW1pcnJvcigpIHtcbiAgICByZXR1cm4gaXNDb2RlbWlycm9yKHRoaXMuY29udHJvbCk7XG4gIH1cblxuICBpc09iamVjdCgpIHtcbiAgICByZXR1cm4gaXNPYmplY3QodGhpcy5jb250cm9sKTtcbiAgfVxuXG4gIGlzQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5ldmVudCAhPSBudWxsICYmIHRoaXMuY29udHJvbC50eXBlID09PSAnc3RyaW5nJztcbiAgfVxuXG4gIGlzVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udHlwZSA9PT0gJ3RleHQnICYmIHRoaXMuY29udHJvbC50eXBlID09PSAnc3RyaW5nJztcbiAgfVxuXG4gIGdldEVsZW1lbnROYW1lKCkge1xuICAgIGlmICh0aGlzLmlzT2JqZWN0KCkpIHtcbiAgICAgIHJldHVybiAnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1vYmplY3QnO1xuICAgIH1cbiAgICBpZiAoKHRoaXMuY29udHJvbC5lbnVtIHx8ICh0aGlzLmNvbnRyb2wuaXRlbXMgJiYgdGhpcy5jb250cm9sLml0ZW1zLmVudW0pKSAmJiAhdGhpcy5pc0F1dG9jb21wbGV0ZSgpKSB7XG4gICAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgcmV0dXJuICdndi1zZWxlY3QnO1xuICAgICAgfVxuICAgICAgcmV0dXJuICdndi1zZWxlY3QtbmF0aXZlJztcbiAgICB9IGVsc2UgaWYgKGlzQ29tcGxleEFycmF5KHRoaXMuY29udHJvbCkpIHtcbiAgICAgIHJldHVybiAnZ3Ytc2NoZW1hLWZvcm0tYXJyYXknO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgIHJldHVybiAnZ3YtYnV0dG9uJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiAnZ3Ytc3dpdGNoJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNFeHByZXNzaW9uTGFuZ3VhZ2UoKSkge1xuICAgICAgcmV0dXJuICdndi1leHByZXNzaW9uLWxhbmd1YWdlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb2RlbWlycm9yKCkpIHtcbiAgICAgIHJldHVybiAnZ3YtY29kZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ3JvbkV4cHJlc3Npb24oKSkge1xuICAgICAgcmV0dXJuICdndi1jcm9uLWVkaXRvcic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzVGV4dCgpKSB7XG4gICAgICByZXR1cm4gJ2d2LXRleHQnO1xuICAgIH1cblxuICAgIHJldHVybiAnZ3YtaW5wdXQnO1xuICB9XG5cbiAgX3VwZGF0ZVByb3BlcnRpZXMoZWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX29ic2VydmVkUHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBpZiAodGhpc1twcm9wZXJ0eV0gIT0gbnVsbCkge1xuICAgICAgICAgIGVsZW1lbnRbcHJvcGVydHldID0gdGhpc1twcm9wZXJ0eV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9yZW5kZXJDb250cm9sKCkge1xuICAgIGNvbnN0IGVsZW1lbnROYW1lID0gdGhpcy5nZXRFbGVtZW50TmFtZSgpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKTtcbiAgICBlbGVtZW50LmlkID0gdGhpcy5pZDtcbiAgICBlbGVtZW50Lm5hbWUgPSB0aGlzLmlkO1xuICAgIGVsZW1lbnQuc2tlbGV0b24gPSB0aGlzLnNrZWxldG9uO1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZm9ybV9fY29udHJvbCcpO1xuICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgJiYgdGhpcy5jb250cm9sLmRlZmF1bHQgIT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udHJvbC5kZWZhdWx0O1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZGVmYXVsdC12YWx1ZScsIHsgdmFsdWU6IHRoaXMudmFsdWUsIGN1cnJlbnRUYXJnZXQ6IGVsZW1lbnQsIGNvbnRyb2w6IHRoaXMuY29udHJvbCB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgZWxlbWVudC5zY2hlbWEgPSB0aGlzLmNvbnRyb2w7XG4gICAgfSBlbHNlIGlmIChpc0NvbXBsZXhBcnJheSh0aGlzLmNvbnRyb2wpKSB7XG4gICAgICBlbGVtZW50LnNjaGVtYSA9IHRoaXMuY29udHJvbC5pdGVtcztcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzKGVsZW1lbnQpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbC50aXRsZSkge1xuICAgICAgZWxlbWVudC5sYWJlbCA9IHRoaXMuY29udHJvbC50aXRsZTtcbiAgICAgIGVsZW1lbnQudGl0bGUgPSB0aGlzLmNvbnRyb2wudGl0bGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRtcCA9IHRoaXMuaWQuc3BsaXQoJy4nKTtcbiAgICAgIGNvbnN0IHRpdGxlID0gdG1wW3RtcC5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChpc05hTihwYXJzZUludCh0aXRsZSwgMTApKSkge1xuICAgICAgICBlbGVtZW50LmxhYmVsID0gdGl0bGU7XG4gICAgICAgIGVsZW1lbnQudGl0bGUgPSB0aXRsZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250cm9sLnBhdHRlcm4pIHtcbiAgICAgIGVsZW1lbnQucGF0dGVybiA9IHRoaXMuY29udHJvbC5wYXR0ZXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2ludGVnZXInKSB7XG4gICAgICBlbGVtZW50LnR5cGUgPSAnbnVtYmVyJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1RleHQoKSkge1xuICAgICAgZWxlbWVudC5yb3dzID0gMztcbiAgICAgIGVsZW1lbnQuYXV0b3NpemUgPSB0cnVlO1xuICAgICAgZWxlbWVudC5wbGFjZWhvbGRlciA9IHRoaXMuY29udHJvbC5kZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2wuZW51bSB8fCAodGhpcy5jb250cm9sLml0ZW1zICYmIHRoaXMuY29udHJvbC5pdGVtcy5lbnVtKSkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY29udHJvbC5lbnVtIHx8IHRoaXMuY29udHJvbC5pdGVtcy5lbnVtO1xuICAgICAgaWYgKHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnRpdGxlTWFwKSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucyA9IG9wdGlvbnMubWFwKCh2YWx1ZSkgPT4gKHtcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBsYWJlbDogdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udGl0bGVNYXBbdmFsdWVdIHx8IHZhbHVlLFxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGVsZW1lbnQubXVsdGlwbGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvZGVtaXJyb3IoKSkge1xuICAgICAgZWxlbWVudC5vcHRpb25zID0gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10uY29kZW1pcnJvck9wdGlvbnM7XG4gICAgICBpZiAodGhpcy5jb250cm9sLmRlZmF1bHQgIT0gbnVsbCAmJiBlbGVtZW50Lm9wdGlvbnMudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBlbGVtZW50Lm9wdGlvbnMudmFsdWUgPSB0aGlzLmNvbnRyb2wuZGVmYXVsdDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNFeHByZXNzaW9uTGFuZ3VhZ2UoKSkge1xuICAgICAgZWxlbWVudC5vcHRpb25zID0ge307XG4gICAgICBlbGVtZW50LnJvd3MgPSAxO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1Bhc3N3b3JkKCkpIHtcbiAgICAgIGVsZW1lbnQudHlwZSA9ICdwYXNzd29yZCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC5kZXNjcmlwdGlvbikge1xuICAgICAgZWxlbWVudC5kZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbC5kZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb21wYWN0KSB7XG4gICAgICBlbGVtZW50LnBsYWNlaG9sZGVyID0gZWxlbWVudC5kZXNjcmlwdGlvbiB8fCBlbGVtZW50LmxhYmVsO1xuICAgICAgZWxlbWVudC5sYWJlbCA9IG51bGw7XG4gICAgICBlbGVtZW50LmRlc2NyaXB0aW9uID0gbnVsbDtcbiAgICAgIGVsZW1lbnQuY29tcGFjdCA9IHRoaXMuY29tcGFjdDtcbiAgICB9XG5cbiAgICBpZiAocGxhY2Vob2xkZXIgIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uTGFuZ3VhZ2UoKSB8fCB0aGlzLmlzQ29kZW1pcnJvcigpKSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucy5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihgJHtlbGVtZW50TmFtZX06aW5wdXRgLCB0aGlzLl9vbklucHV0LmJpbmQodGhpcykpO1xuXG4gICAgbGV0IGN1cnJlbnRUYXJnZXQ7XG4gICAgaWYgKHRoaXMuaXNBdXRvY29tcGxldGUoKSkge1xuICAgICAgY29uc3QgYXV0b2NvbXBsZXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZ3YtYXV0b2NvbXBsZXRlJyk7XG4gICAgICBhdXRvY29tcGxldGUubWluQ2hhcnMgPSAwO1xuICAgICAgYXV0b2NvbXBsZXRlLmZpbHRlciA9IHRydWU7XG4gICAgICBlbGVtZW50LmNsZWFyYWJsZSA9IHRydWU7XG4gICAgICBhdXRvY29tcGxldGUuaWQgPSB0aGlzLmlkO1xuICAgICAgYXV0b2NvbXBsZXRlLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgYXV0b2NvbXBsZXRlLmFkZEV2ZW50TGlzdGVuZXIoYGd2LWF1dG9jb21wbGV0ZTpzZWxlY3RgLCB0aGlzLl9vbklucHV0LmJpbmQodGhpcykpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGBndi1pbnB1dDpjbGVhcmAsIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSk7XG4gICAgICBjdXJyZW50VGFyZ2V0ID0gYXV0b2NvbXBsZXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50VGFyZ2V0ID0gZWxlbWVudDtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICE9IG51bGwpIHtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NvbnRyb2wtcmVhZHknLCB7XG4gICAgICAgIGN1cnJlbnRUYXJnZXQsXG4gICAgICAgIGNvbnRyb2w6IHRoaXMsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRUYXJnZXQ7XG4gIH1cblxuICBfb25JbnB1dChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgbGV0IHZhbHVlID0gbnVsbDtcbiAgICBpZiAoZS50YXJnZXQudGFnTmFtZSA9PT0gJ0dWLUFVVE9DT01QTEVURScpIHtcbiAgICAgIHZhbHVlID0gZS5kZXRhaWwudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZS5kZXRhaWw7XG4gICAgfVxuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NoYW5nZScsIHsgdmFsdWUsIGN1cnJlbnRUYXJnZXQ6IGUudGFyZ2V0LCBjb250cm9sOiB0aGlzLmNvbnRyb2wgfSk7XG4gIH1cblxuICBnZXRDb250cm9scygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtYXJyYXknKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCcpKSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0Q29udHJvbChpZCkge1xuICAgIGlmIChpZCA9PSBudWxsKSB7XG4gICAgICBpZCA9IHRoaXMuaWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgfVxuXG4gIF9zZXRWYWx1ZShjb250cm9sRWxlbWVudCkge1xuICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwgJiYgY29udHJvbEVsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnYm9vbGVhbicgfHwgdGhpcy5jb250cm9sLnR5cGUgPT09ICdhcnJheScgfHwgdGhpcy5jb250cm9sLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnRyb2xFbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2xFbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZS50b1N0cmluZyA/IHRoaXMudmFsdWUudG9TdHJpbmcoKSA6IHRoaXMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb250cm9sRWxlbWVudDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd2YWx1ZScpKSB7XG4gICAgICBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChjb250cm9sKSA9PiBjb250cm9sLnVwZGF0ZUNvbXBsZXRlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuZ2V0Q29udHJvbCgpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldFVwZGF0ZUNvbXBsZXRlKCkge1xuICAgIGF3YWl0IHN1cGVyLmdldFVwZGF0ZUNvbXBsZXRlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5nZXRDb250cm9scygpLm1hcCgoZSkgPT4gZS51cGRhdGVDb21wbGV0ZSkpO1xuICB9XG5cbiAgZm9ybWF0RXJyb3JNZXNzYWdlKGVycm9yKSB7XG4gICAgbGV0IHRpdGxlO1xuICAgIGlmICh0aGlzLmNvbnRyb2wucHJvcGVydGllcyAhPSBudWxsICYmIHRoaXMuY29udHJvbC5wcm9wZXJ0aWVzW2Vycm9yLmFyZ3VtZW50XSAhPSBudWxsKSB7XG4gICAgICB0aXRsZSA9IHRoaXMuY29udHJvbC5wcm9wZXJ0aWVzW2Vycm9yLmFyZ3VtZW50XS50aXRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGl0bGUgPSB0aGlzLmNvbnRyb2wudGl0bGU7XG4gICAgfVxuICAgIGlmICh0aXRsZSkge1xuICAgICAgcmV0dXJuIGA8c3Bhbj4ke2Vycm9yLm1lc3NhZ2UucmVwbGFjZShlcnJvci5hcmd1bWVudCwgdGl0bGUpfTwvc3Bhbj5gO1xuICAgIH1cbiAgICByZXR1cm4gYDxzcGFuPiR7ZXJyb3IubWVzc2FnZX08L3NwYW4+YDtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGlmICh0aGlzLl9vYnNlcnZlZFByb3BlcnRpZXMuZmluZCgocHJvcGVydHkpID0+IGNoYW5nZWRQcm9wZXJ0aWVzLmhhcyhwcm9wZXJ0eSkpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXModGhpcy5nZXRDb250cm9sKCkpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Vycm9ycycpICYmIHRoaXMuZXJyb3JzICE9IG51bGwpIHtcbiAgICAgIC8vIFNldCBlcnJvcnMgdG8gY29tcGxleCBjb250cm9sc1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGaW5kIHNpbXBsZSBjb250cm9scyBhbmQgYXBwZW5kIGVycm9yIG1lc3NhZ2VcbiAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtX19jb250cm9sLWVycm9yJyk7XG4gICAgICBlcnJvckNvbnRhaW5lci5mb3JFYWNoKChjb250YWluZXIpID0+IChjb250YWluZXIuaW5uZXJIVE1MID0gJycpKTtcbiAgICAgIHRoaXMuZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGVycm9yLnByb3BlcnR5ID09PSAnaW5zdGFuY2UnID8gZXJyb3IuYXJndW1lbnQgOiBlcnJvci5wcm9wZXJ0eS5yZXBsYWNlKCdpbnN0YW5jZS4nLCAnJyk7XG4gICAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7a2V5fS1lcnJvclwiXWApO1xuICAgICAgICBpZiAoZXJyb3JDb250YWluZXIpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZ3YtaW5wdXQtbWVzc2FnZScpO1xuICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gdGhpcy5mb3JtYXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgICAgICAgIG1lc3NhZ2UubGV2ZWwgPSAnd2Fybic7XG4gICAgICAgICAgZXJyb3JDb250YWluZXIuYXBwZW5kQ2hpbGQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgICR7dGhpcy5fcmVuZGVyQ29udHJvbCgpfVxuICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2NvbnRyb2wtZXJyb3JcIiBpZD1cIiR7dGhpcy5pZCArICctZXJyb3InfVwiPjwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1hcmdpbjogdmFyKC0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbSwgMC40cmVtKTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtoaWRkZW5dKSB7XG4gICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZGVzY3JpcHRpb24sXG4gICAgICAgIC5mb3JtX19jb250cm9sLWVycm9yIHtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9fY29udHJvbC1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sLWxhYmVsIGxhYmVsIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXksXG4gICAgICAgIC5mb3JtX19jb250cm9sLW9iamVjdCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZW51bSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAvKmFsaWduLWl0ZW1zOiBmbGV4LWVuZDsqL1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXkgZ3YtYnV0dG9uIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3QsXG4gICAgICAgIGd2LXNlbGVjdC1uYXRpdmUsXG4gICAgICAgIGd2LWlucHV0LFxuICAgICAgICBndi1jb2RlLFxuICAgICAgICBndi1zd2l0Y2gsXG4gICAgICAgIGd2LWV4cHJlc3Npb24tbGFuZ3VhZ2Uge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtIDA7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3Q6aG92ZXIsXG4gICAgICAgIGd2LXNlbGVjdC1uYXRpdmU6aG92ZXIsXG4gICAgICAgIGd2LWF1dG9jb21wbGV0ZTpob3ZlciB7XG4gICAgICAgICAgei1pbmRleDogNzA7XG4gICAgICAgIH1cblxuICAgICAgICAuZXJyb3Ige1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1jb2xvci1lcnJvciwgI2Y0NDMzNik7XG4gICAgICAgIH1cblxuICAgICAgICAud2FybmluZyB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWd2LXRoZW1lLWNvbG9yLXdhcm5pbmcsICNmZjk4MDApO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcsIEd2U2NoZW1hRm9ybUNvbnRyb2wpO1xuIl19
|
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { LitElement, html, css } from 'lit
|
|
16
|
+
import { LitElement, html, css } from 'lit';
|
|
17
17
|
import { get, set, del } from 'object-path';
|
|
18
18
|
import { dispatchCustomEvent } from '../lib/events';
|
|
19
19
|
import { deepClone, deepEqual } from '../lib/utils';
|
|
20
|
-
import { classMap } from 'lit
|
|
20
|
+
import { classMap } from 'lit/directives/class-map';
|
|
21
|
+
import { repeat } from 'lit/directives/repeat';
|
|
21
22
|
import { Validator } from 'jsonschema';
|
|
22
23
|
import { empty } from '../styles/empty';
|
|
23
24
|
import './gv-schema-form-control';
|
|
@@ -387,7 +388,7 @@ export class GvSchemaForm extends LitElement {
|
|
|
387
388
|
const isReadonly = this.readonly || control.readOnly === true;
|
|
388
389
|
const isWriteOnly = control.writeOnly === true;
|
|
389
390
|
const value = get(this._values, key);
|
|
390
|
-
return html`<gv-schema-form-control .id="${key}" .errors="${this.errors}" .control="${control}" .skeleton="${this.skeleton}" .value="${value}" ?readonly="${isReadonly}" ?writeonly="${isWriteOnly}" ?required="${isRequired}" ?disabled="${isDisabled}" ?hidden="${isHidden}"></gv-schema-form-control>`;
|
|
391
|
+
return html`<gv-schema-form-control data-a="dd" .id="${key}" .errors="${this.errors}" .control="${control}" .skeleton="${this.skeleton}" .value="${value}" ?readonly="${isReadonly}" ?writeonly="${isWriteOnly}" ?required="${isRequired}" ?disabled="${isDisabled}" ?hidden="${isHidden}"></gv-schema-form-control>`;
|
|
391
392
|
}
|
|
392
393
|
|
|
393
394
|
_hasCondition(control) {
|
|
@@ -489,7 +490,7 @@ export class GvSchemaForm extends LitElement {
|
|
|
489
490
|
|
|
490
491
|
const keys = this.schema.properties ? Object.keys(this.schema.properties) : [];
|
|
491
492
|
this._ignoreProperties = [];
|
|
492
|
-
return
|
|
493
|
+
return repeat(keys, key => this._renderControl(key));
|
|
493
494
|
}
|
|
494
495
|
|
|
495
496
|
getControls() {
|
|
@@ -591,8 +592,8 @@ export class GvSchemaForm extends LitElement {
|
|
|
591
592
|
this._updateChildren(this.validateOnRender && (changedProperties.has('_values') || changedProperties.has('schema')));
|
|
592
593
|
}
|
|
593
594
|
|
|
594
|
-
async
|
|
595
|
-
await super.
|
|
595
|
+
async getUpdateComplete() {
|
|
596
|
+
await super.getUpdateComplete();
|
|
596
597
|
await Promise.all(this.getControls().map(e => e.updateComplete));
|
|
597
598
|
}
|
|
598
599
|
|
|
@@ -615,4 +616,4 @@ export class GvSchemaForm extends LitElement {
|
|
|
615
616
|
|
|
616
617
|
}
|
|
617
618
|
window.customElements.define('gv-schema-form', GvSchemaForm);
|
|
618
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS5qcyJdLCJuYW1lcyI6WyJMaXRFbGVtZW50IiwiaHRtbCIsImNzcyIsImdldCIsInNldCIsImRlbCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJkZWVwQ2xvbmUiLCJkZWVwRXF1YWwiLCJjbGFzc01hcCIsIlZhbGlkYXRvciIsImVtcHR5IiwiR3ZTY2hlbWFGb3JtIiwicHJvcGVydGllcyIsInNjaGVtYSIsInR5cGUiLCJPYmplY3QiLCJlcnJvcnMiLCJ2YWx1ZXMiLCJzdWJtaXRMYWJlbCIsIlN0cmluZyIsImhhc0Zvb3RlciIsIkJvb2xlYW4iLCJhdHRyaWJ1dGUiLCJoYXNIZWFkZXIiLCJfY29uZmlybSIsIl92YWx1ZXMiLCJkaXJ0eSIsInJlZmxlY3QiLCJoaWRlRGVwcmVjYXRlZCIsInZhbGlkYXRlT25SZW5kZXIiLCJfdmFsaWRhdG9yUmVzdWx0cyIsInNrZWxldG9uIiwiX3RvdWNoIiwicmVhZG9ubHkiLCJzY3JvbGxhYmxlIiwiY29uc3RydWN0b3IiLCJfdmFsaWRhdG9yIiwiX2lnbm9yZVByb3BlcnRpZXMiLCJfZHluYW1pY0NvbnRyb2xzIiwiX2R5bmFtaWNBdHRyaWJ1dGVzIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9vbkRlZmF1bHRWYWx1ZSIsImJpbmQiLCJfb25DaGFuZ2UiLCJfb25Db250cm9sUmVhZHkiLCJfaW5pdGlhbFZhbHVlcyIsInJlc2V0IiwiX3NldERpcnR5IiwiZ2V0Q29udHJvbHMiLCJmb3JFYWNoIiwicyIsInJlcXVlc3RVcGRhdGUiLCJfb25SZXNldCIsInJlcXVlc3RWYWxpZGF0aW9uIiwiY2xlYXJUaW1lb3V0IiwiX3ZhbGlkYXRlVGltZW91dCIsInNldFRpbWVvdXQiLCJ2YWxpZGF0ZSIsIl91cGRhdGVBY3Rpb25zIiwic3VibWl0IiwiX29uU3VibWl0IiwidmFsaWRhdG9yUmVzdWx0cyIsImlzVmFsaWQiLCJfc2V0VG91Y2giLCJ0b3VjaCIsImNvbmZpcm0iLCJpc1RvdWNoIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiX29uQ29uZmlybVJlc2V0IiwidGhlbiIsIl9vbkNvbmZpcm1FZGl0IiwiX3VwZGF0ZUNoaWxkcmVuIiwiX2dldFN1Ym1pdEJ0biIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwiX2dldFJlc2V0QnRuIiwiX2Rpc3BhdGNoQ2hhbmdlIiwiX2NoYW5nZVRpbWVvdXQiLCJ0YXJnZXQiLCJ2YWxpZGF0aW9uIiwiZGV0YWlsIiwiY3VycmVudFRhcmdldCIsInZhbHVlIiwiY29udHJvbCIsInRyaW0iLCJsZW5ndGgiLCJwYXJzZUludCIsImlkIiwiaW50VmFsdWUiLCJOdW1iZXIiLCJ2YWx1ZU9mIiwiaXNOYU4iLCJlbnVtIiwia2V5cyIsIl91cGRhdGVEeW5hbWljQ29udHJvbHMiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJjb250cm9sRWxlbWVudCIsImV2ZW50IiwibmFtZSIsIl9oYXNDb25kaXRpb24iLCJwdXNoIiwiX3VwZGF0ZUR5bmFtaWNDb250cm9sIiwiaXMiLCJfZXZhbHVhdGVDb25kaXRpb24iLCJzZXRBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJwZXJmb3JtVXBkYXRlIiwiX3JlbmRlckNvbnRyb2wiLCJrZXkiLCJpc1JlcXVpcmVkIiwicmVxdWlyZWQiLCJpbmNsdWRlcyIsImlzRGlzYWJsZWQiLCJkaXNhYmxlZCIsImlzSGlkZGVuIiwiaXNSZWFkb25seSIsInJlYWRPbmx5IiwiaXNXcml0ZU9ubHkiLCJ3cml0ZU9ubHkiLCJmaW5kIiwiY29uZGl0aW9uIiwiY29uZGl0aW9uS2V5IiwiQXJyYXkiLCJpc0FycmF5IiwiY29uc29sZSIsIndhcm4iLCJyZXN1bHQiLCJvcGVyYXRpb24iLCJvcGVyYXRvciIsIl9ldmFsdWF0ZU5vdEVxdWFsc0NvbmRpdGlvbiIsIl9ldmFsdWF0ZUVxdWFsc0NvbmRpdGlvbiIsIl9ldmFsdWF0ZU5vdERlZkNvbmRpdGlvbiIsIl9ldmFsdWF0ZURlZkNvbmRpdGlvbiIsIm9wZXJhbmRzIiwibW9kZWxBdHRyaWJ1dGVzIiwibWFwIiwibW9kZWxBdHRyaWJ1dGUiLCJ0ZXN0VmFsdWUiLCJyZWR1Y2UiLCJhY2MiLCJjdXJyZW50IiwidW5kZWZpbmVkIiwiX3JlbmRlclBhcnQiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsImdldENvbnRyb2wiLCJfZ2V0RXJyb3JzIiwiZmlsdGVyIiwiZXJyb3IiLCJwcm9wZXJ0eSIsInJlcGxhY2UiLCJhcmd1bWVudCIsImVycm9yS2V5IiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwidmFsaWQiLCJjYW5TdWJtaXQiLCJzdWJtaXRCdG4iLCJyZXNldEJ0biIsIndpdGhWYWxpZGF0aW9uIiwiX3VwZGF0ZUFjdGlvbnNUaW1lb3V0IiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwiX2dldFVwZGF0ZUNvbXBsZXRlIiwiYWxsIiwidXBkYXRlQ29tcGxldGUiLCJyZW5kZXIiLCJjb250YWluZXIiLCJ0aXRsZSIsImNlbnRlciIsInN0eWxlcyIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsYUFBdEM7QUFDQSxTQUFTQyxHQUFULEVBQWNDLEdBQWQsRUFBbUJDLEdBQW5CLFFBQThCLGFBQTlCO0FBQ0EsU0FBU0MsbUJBQVQsUUFBb0MsZUFBcEM7QUFDQSxTQUFTQyxTQUFULEVBQW9CQyxTQUFwQixRQUFxQyxjQUFyQztBQUNBLFNBQVNDLFFBQVQsUUFBeUIsK0JBQXpCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQixZQUExQjtBQUNB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bSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IExpdEVsZW1lbnQsIGh0bWwsIGNzcyB9IGZyb20gJ2xpdC1lbGVtZW50JztcbmltcG9ydCB7IGdldCwgc2V0LCBkZWwgfSBmcm9tICdvYmplY3QtcGF0aCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBkZWVwQ2xvbmUsIGRlZXBFcXVhbCB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC1odG1sL2RpcmVjdGl2ZXMvY2xhc3MtbWFwJztcbmltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0IHsgZW1wdHkgfSBmcm9tICcuLi9zdHlsZXMvZW1wdHknO1xuaW1wb3J0ICcuL2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wnO1xuXG4vKipcbiAqIFNjaGVtYSBmb3JtIGNvbXBvbmVudFxuICpcbiAqIEBmaXJlcyBndi1zY2hlbWEtZm9ybTpzdWJtaXQgLSBldmVudCB3aGVuIHVzZXIgc3VibWl0IHZhbGlkIGZvcm1cbiAqIEBmaXJlcyBndi1zY2hlbWEtZm9ybTplcnJvciAtIGV2ZW50IHdoZW4gdXNlciBzdWJtaXQgaW52YWxpZCBmb3JtXG4gKiBAZmlyZXMgZ3Ytc2NoZW1hLWZvcm06Y2hhbmdlIC0gZXZlbnQgd2hlbiB3aGVuIGZvcm0gY2hhbmdlXG4gKiBAZmlyZXMgZ3Ytc2NoZW1hLWZvcm06Y2FuY2VsIC0gZXZlbnQgd2hlbiB1c2VyIGNhbmNlbCBmb3JtXG4gKlxuICogQGF0dHIge09iamVjdH0gc2NoZW1hIC0gdGhlIHNjaGVtYSBmb3JtIGNvbmZpZ3VyYXRpb25cbiAqIEBhdHRyIHtPYmplY3R9IHZhbHVlcyAtIHRoZSB2YWx1ZXMgb2YgZmllbGRzXG4gKiBAYXR0ciB7T2JqZWN0fSBlcnJvcnMgLSB0aGUgbWFwIG9mIGVycm9ycyBieSBpbnB1dCBrZXlcbiAqIEBhdHRyIHtCb29sZWFufSB2YWxpZGF0ZSAtIHRvIGZvcmNlIHZhbGlkYXRpb24gb24gZmlyc3QgcmVuZGVyXG4gKiBAYXR0ciB7Qm9vbGVhbn0gcmVhZG9ubHkgLSB0cnVlIGlmIHJlYWRvbmx5XG4gKiBAYXR0ciB7Qm9vbGVhbn0gc2Nyb2xsYWJsZSAtIHVzZWZ1bCBmb3IgbWFraW5nIGNvbnRlbnQgc2Nyb2xsYWJsZSB3aXRoIGZpeGVkIGhlYWRlcnMgLyBmb290ZXJzXG4gKlxuICogQGNzc3Byb3Age0NvbG9yfSBbLS1ndi1zY2hlbWEtZm9ybS0tYmdjPSNmZmZmZmZdIC0gQmFja2dyb3VuZCBjb2xvclxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbT0wLjRyZW1dIC0gQ29udHJvbCBtYXJnaW5cbiAqL1xuZXhwb3J0IGNsYXNzIEd2U2NoZW1hRm9ybSBleHRlbmRzIExpdEVsZW1lbnQge1xuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtYTogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIGVycm9yczogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIHZhbHVlczogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIHN1Ym1pdExhYmVsOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgaGFzRm9vdGVyOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2hhcy1mb290ZXInIH0sXG4gICAgICBoYXNIZWFkZXI6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnaGFzLWhlYWRlcicgfSxcbiAgICAgIF9jb25maXJtOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgX3ZhbHVlczogeyB0eXBlOiBPYmplY3QsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIGRpcnR5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGhpZGVEZXByZWNhdGVkOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2hpZGUtZGVwcmVjYXRlZCcgfSxcbiAgICAgIHZhbGlkYXRlT25SZW5kZXI6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAndmFsaWRhdGUtb24tcmVuZGVyJyB9LFxuICAgICAgX3ZhbGlkYXRvclJlc3VsdHM6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBza2VsZXRvbjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBfdG91Y2g6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgcmVhZG9ubHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgc2Nyb2xsYWJsZTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5oaWRlRGVwcmVjYXRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbHVlcyA9IHt9O1xuICAgIHRoaXMuc3VibWl0TGFiZWwgPSAnT2snO1xuICAgIHRoaXMuaGFzSGVhZGVyID0gZmFsc2U7XG4gICAgdGhpcy5oYXNGb290ZXIgPSBmYWxzZTtcbiAgICB0aGlzLl90b3VjaCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbGlkYXRvciA9IG5ldyBWYWxpZGF0b3IoKTtcbiAgICB0aGlzLl92YWxpZGF0b3JSZXN1bHRzID0ge307XG4gICAgdGhpcy5faWdub3JlUHJvcGVydGllcyA9IFtdO1xuICAgIHRoaXMuX2R5bmFtaWNDb250cm9scyA9IFtdO1xuICAgIHRoaXMuX2R5bmFtaWNBdHRyaWJ1dGVzID0gWydkaXNhYmxlZCcsICdyZXF1aXJlZCcsICdoaWRkZW4nXTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2w6ZGVmYXVsdC12YWx1ZScsIHRoaXMuX29uRGVmYXVsdFZhbHVlLmJpbmQodGhpcykpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZ3Ytc2NoZW1hLWZvcm0tY29udHJvbDpjaGFuZ2UnLCB0aGlzLl9vbkNoYW5nZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2w6Y29udHJvbC1yZWFkeScsIHRoaXMuX29uQ29udHJvbFJlYWR5LmJpbmQodGhpcykpO1xuICB9XG5cbiAgc2V0IHZhbHVlcyh2YWx1ZXMpIHtcbiAgICBpZiAoIWRlZXBFcXVhbCh0aGlzLl92YWx1ZXMsIHZhbHVlcykpIHtcbiAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFZhbHVlcyA9IHsgLi4udmFsdWVzIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pbml0aWFsVmFsdWVzID0ge307XG4gICAgICB9XG4gICAgICB0aGlzLl92YWx1ZXMgPSBkZWVwQ2xvbmUodGhpcy5faW5pdGlhbFZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVzO1xuICB9XG5cbiAgcmVzZXQodmFsdWVzID0gbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlcyA9IGRlZXBDbG9uZSh2YWx1ZXMgfHwgdGhpcy5faW5pdGlhbFZhbHVlcyk7XG4gICAgdGhpcy5fdG91Y2ggPSBmYWxzZTtcbiAgICB0aGlzLl9zZXREaXJ0eShmYWxzZSk7XG4gICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKHMpID0+IHtcbiAgICAgIHMucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgX29uUmVzZXQoKSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3Jlc2V0Jyk7XG4gIH1cblxuICByZXF1ZXN0VmFsaWRhdGlvbigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdmFsaWRhdGVUaW1lb3V0KTtcbiAgICB0aGlzLl92YWxpZGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICAgIHRoaXMuX3VwZGF0ZUFjdGlvbnMoKTtcbiAgICB9LCAzNTApO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuX29uU3VibWl0KCk7XG4gIH1cblxuICBfb25TdWJtaXQoKSB7XG4gICAgY29uc3QgdmFsaWRhdG9yUmVzdWx0cyA9IHRoaXMudmFsaWRhdGUoKTtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgIHRoaXMuX2luaXRpYWxWYWx1ZXMgPSBkZWVwQ2xvbmUodGhpcy5fdmFsdWVzKTtcbiAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3RvdWNoID0gZmFsc2U7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdzdWJtaXQnLCB7IHZhbHVlczogdGhpcy5fdmFsdWVzLCB2YWxpZGF0b3JSZXN1bHRzIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdlcnJvcicsIHsgdmFsdWVzOiB0aGlzLl92YWx1ZXMsIHZhbGlkYXRvclJlc3VsdHMgfSk7XG4gICAgfVxuICB9XG5cbiAgX3NldERpcnR5KGRpcnR5ID0gdHJ1ZSkge1xuICAgIHRoaXMuZGlydHkgPSAhIWRpcnR5O1xuICB9XG5cbiAgX3NldFRvdWNoKHRvdWNoID0gdHJ1ZSkge1xuICAgIHRoaXMuX3RvdWNoID0gISF0b3VjaDtcbiAgfVxuXG4gIGNvbmZpcm0oKSB7XG4gICAgaWYgKHRoaXMuaXNUb3VjaCgpKSB7XG4gICAgICBpZiAodGhpcy5fY29uZmlybSAmJiB0aGlzLl9jb25maXJtLnByb21pc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpcm0ucHJvbWlzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiAodGhpcy5fY29uZmlybSA9IHsgcmVzb2x2ZSwgcmVqZWN0IH0pKTtcbiAgICAgIHRoaXMuX2NvbmZpcm0ucHJvbWlzZSA9IHByb21pc2U7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgX29uQ29uZmlybVJlc2V0KCkge1xuICAgIGNvbnN0IHsgcmVzb2x2ZSB9ID0gdGhpcy5fY29uZmlybTtcbiAgICB0aGlzLl9jb25maXJtID0gbnVsbDtcbiAgICB0aGlzLl9vblJlc2V0KCk7XG4gICAgdGhpcy5yZXF1ZXN0VXBkYXRlKCkudGhlbigoKSA9PiB7XG4gICAgICByZXNvbHZlKHRoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgX29uQ29uZmlybUVkaXQoKSB7XG4gICAgdGhpcy5fY29uZmlybS5yZWplY3QodGhpcyk7XG4gICAgdGhpcy5fY29uZmlybSA9IG51bGw7XG4gICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4odGhpcy52YWxpZGF0ZU9uUmVuZGVyKTtcbiAgfVxuXG4gIF9nZXRTdWJtaXRCdG4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcjc3VibWl0Jyk7XG4gIH1cblxuICBfZ2V0UmVzZXRCdG4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcjcmVzZXQnKTtcbiAgfVxuXG4gIF9kaXNwYXRjaENoYW5nZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2hhbmdlVGltZW91dCk7XG4gICAgdGhpcy5fY2hhbmdlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2hhbmdlJywgeyB0YXJnZXQ6IHRoaXMsIHZhbHVlczogdGhpcy5fdmFsdWVzLCB2YWxpZGF0aW9uOiB0aGlzLl92YWxpZGF0b3JSZXN1bHRzIH0pO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIF9vbkRlZmF1bHRWYWx1ZSh7IGRldGFpbDogeyBjdXJyZW50VGFyZ2V0LCB2YWx1ZSwgY29udHJvbCB9IH0pIHtcbiAgICBpZiAoY29udHJvbC50eXBlID09PSAnaW50ZWdlcicgJiYgdmFsdWUgIT0gbnVsbCAmJiAoKHZhbHVlLnRyaW0gJiYgdmFsdWUubGVuZ3RoID4gMCkgfHwgdmFsdWUubGVuZ3RoID4gMCkpIHtcbiAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICB9XG4gICAgc2V0KHRoaXMuX3ZhbHVlcywgY3VycmVudFRhcmdldC5pZCwgdmFsdWUpO1xuICB9XG5cbiAgX29uQ2hhbmdlKHsgZGV0YWlsOiB7IGN1cnJlbnRUYXJnZXQsIHZhbHVlLCBjb250cm9sIH0gfSkge1xuICAgIHRoaXMuX3NldFRvdWNoKHRydWUpO1xuICAgIGlmIChjb250cm9sLnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpbnRWYWx1ZSA9IE51bWJlcih2YWx1ZSkudmFsdWVPZigpO1xuICAgICAgICBpZiAoIWlzTmFOKGludFZhbHVlKSkge1xuICAgICAgICAgIHZhbHVlID0gaW50VmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb250cm9sLnR5cGUgPT09ICdhcnJheScgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YWx1ZSA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChjb250cm9sLnR5cGUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDAgJiYgIWNvbnRyb2wuZW51bSkge1xuICAgICAgdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAoY29udHJvbC50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgZGVsKHRoaXMuX3ZhbHVlcywgY3VycmVudFRhcmdldC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldCh0aGlzLl92YWx1ZXMsIGN1cnJlbnRUYXJnZXQuaWQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVEeW5hbWljQ29udHJvbHMoKTtcbiAgICB0aGlzLl92YWxpZGF0b3JSZXN1bHRzID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICAgIHRoaXMuX3VwZGF0ZUFjdGlvbnMoKTtcbiAgICB0aGlzLl9kaXNwYXRjaENoYW5nZSgpO1xuICB9XG5cbiAgX29uQ29udHJvbFJlYWR5KGUpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBjb250cm9sRWxlbWVudCA9IGUuZGV0YWlsLmNvbnRyb2w7XG4gICAgY29uc3QgY29udHJvbCA9IGNvbnRyb2xFbGVtZW50LmNvbnRyb2w7XG4gICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSkge1xuICAgICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5ldmVudCkge1xuICAgICAgICBjb25zdCBldmVudCA9IGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5ldmVudDtcbiAgICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCBldmVudC5uYW1lLCB7IC4uLmV2ZW50LCAuLi5lLmRldGFpbCB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faGFzQ29uZGl0aW9uKGNvbnRyb2wpKSB7XG4gICAgICAgIHRoaXMuX2R5bmFtaWNDb250cm9scy5wdXNoKGNvbnRyb2xFbGVtZW50KTtcbiAgICAgICAgdGhpcy5fdXBkYXRlRHluYW1pY0NvbnRyb2woY29udHJvbEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVEeW5hbWljQ29udHJvbHMoKSB7XG4gICAgdGhpcy5faWdub3JlUHJvcGVydGllcyA9IFtdO1xuICAgIHRoaXMuX2R5bmFtaWNDb250cm9scy5mb3JFYWNoKChjb250cm9sRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlRHluYW1pY0NvbnRyb2woY29udHJvbEVsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgX3VwZGF0ZUR5bmFtaWNDb250cm9sKGNvbnRyb2xFbGVtZW50KSB7XG4gICAgY29uc3QgY29udHJvbCA9IGNvbnRyb2xFbGVtZW50LmNvbnRyb2w7XG4gICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSkge1xuICAgICAgdGhpcy5fZHluYW1pY0F0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzID0gdGhpcy5fZXZhbHVhdGVDb25kaXRpb24oY29udHJvbCwgYXR0cmlidXRlKTtcbiAgICAgICAgaWYgKGlzKSB7XG4gICAgICAgICAgY29udHJvbEVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgJycpO1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzLnB1c2goY29udHJvbEVsZW1lbnQuaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgcGVyZm9ybVVwZGF0ZSgpIHtcbiAgICB0aGlzLmdldENvbnRyb2xzKCkuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcy5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgfSk7XG4gICAgc3VwZXIucGVyZm9ybVVwZGF0ZSgpO1xuICB9XG5cbiAgX3JlbmRlckNvbnRyb2woa2V5KSB7XG4gICAgLy8gVGhpcyBpcyByZXF1aXJlIHRvIGNsZWFuIGNhY2hlIG9mIDxndi1zY2hlbWEtZm9ybS1jb250cm9sPlxuICAgIGNvbnN0IGNvbnRyb2wgPSB7IC4uLnRoaXMuc2NoZW1hLnByb3BlcnRpZXNba2V5XSB9O1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSAodGhpcy5zY2hlbWEucmVxdWlyZWQgJiYgdGhpcy5zY2hlbWEucmVxdWlyZWQuaW5jbHVkZXMoa2V5KSkgfHwgdGhpcy5fZXZhbHVhdGVDb25kaXRpb24oY29udHJvbCwgJ3JlcXVpcmVkJyk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9ICh0aGlzLnNjaGVtYS5kaXNhYmxlZCAmJiB0aGlzLnNjaGVtYS5kaXNhYmxlZC5pbmNsdWRlcyhrZXkpKSB8fCB0aGlzLl9ldmFsdWF0ZUNvbmRpdGlvbihjb250cm9sLCAnZGlzYWJsZWQnKTtcbiAgICBjb25zdCBpc0hpZGRlbiA9IHRoaXMuX2V2YWx1YXRlQ29uZGl0aW9uKGNvbnRyb2wsICdoaWRkZW4nKTtcbiAgICBpZiAoaXNIaWRkZW4pIHtcbiAgICAgIHRoaXMuX2lnbm9yZVByb3BlcnRpZXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBjb25zdCBpc1JlYWRvbmx5ID0gdGhpcy5yZWFkb25seSB8fCBjb250cm9sLnJlYWRPbmx5ID09PSB0cnVlO1xuICAgIGNvbnN0IGlzV3JpdGVPbmx5ID0gY29udHJvbC53cml0ZU9ubHkgPT09IHRydWU7XG4gICAgY29uc3QgdmFsdWUgPSBnZXQodGhpcy5fdmFsdWVzLCBrZXkpO1xuICAgIHJldHVybiBodG1sYDxndi1zY2hlbWEtZm9ybS1jb250cm9sXG4gICAgICAuaWQ9XCIke2tleX1cIlxuICAgICAgLmVycm9ycz1cIiR7dGhpcy5lcnJvcnN9XCJcbiAgICAgIC5jb250cm9sPVwiJHtjb250cm9sfVwiXG4gICAgICAuc2tlbGV0b249XCIke3RoaXMuc2tlbGV0b259XCJcbiAgICAgIC52YWx1ZT1cIiR7dmFsdWV9XCJcbiAgICAgID9yZWFkb25seT1cIiR7aXNSZWFkb25seX1cIlxuICAgICAgP3dyaXRlb25seT1cIiR7aXNXcml0ZU9ubHl9XCJcbiAgICAgID9yZXF1aXJlZD1cIiR7aXNSZXF1aXJlZH1cIlxuICAgICAgP2Rpc2FibGVkPVwiJHtpc0Rpc2FibGVkfVwiXG4gICAgICA/aGlkZGVuPVwiJHtpc0hpZGRlbn1cIlxuICAgID48L2d2LXNjaGVtYS1mb3JtLWNvbnRyb2w+YDtcbiAgfVxuXG4gIF9oYXNDb25kaXRpb24oY29udHJvbCkge1xuICAgIGlmIChjb250cm9sWyd4LXNjaGVtYS1mb3JtJ10pIHtcbiAgICAgIHJldHVybiB0aGlzLl9keW5hbWljQXR0cmlidXRlcy5maW5kKChjb25kaXRpb24pID0+IGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVtjb25kaXRpb25dICE9IG51bGwpICE9IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIF9ldmFsdWF0ZUNvbmRpdGlvbihjb250cm9sLCBjb25kaXRpb25LZXkpIHtcbiAgICBpZiAoY29udHJvbFsneC1zY2hlbWEtZm9ybSddID09IG51bGwgfHwgY29udHJvbFsneC1zY2hlbWEtZm9ybSddW2NvbmRpdGlvbktleV0gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjb25kaXRpb24gPSBjb250cm9sWyd4LXNjaGVtYS1mb3JtJ11bY29uZGl0aW9uS2V5XTtcbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gY29uZGl0aW9uO1xuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgLy8gY29uZGl0aW9uIGlzbid0IGFuIGFycmF5LCBpZ25vcmUgdGhlIGNvbmRpdGlvblxuICAgICAgY29uc29sZS53YXJuKGAnJHtjb25kaXRpb25LZXl9JyBhdHRyaWJ1dGUgb2YgJ3gtc2NoZW1hLWZvcm0nIHNob3VsZCBiZSBhbiBhcnJheWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSB0cnVlO1xuICAgIGZvciAoY29uc3Qgb3BlcmF0aW9uIG9mIGNvbmRpdGlvbikge1xuICAgICAgLy8gb3BlcmF0aW9uIG9ubHkgaGF2ZSBvbmUgb3BlcmF0b3Igd2l0aCBhIHNpbmdsZSBvYmplY3QgY29udGFpbmluZyBvcGVyYW5kIHZhbHVlc1xuICAgICAgY29uc3Qgb3BlcmF0b3IgPSBPYmplY3Qua2V5cyhvcGVyYXRpb24pWzBdO1xuXG4gICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgIGNhc2UgJyRuZXEnOlxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB0aGlzLl9ldmFsdWF0ZU5vdEVxdWFsc0NvbmRpdGlvbihjb250cm9sLCBvcGVyYXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICckZXEnOlxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB0aGlzLl9ldmFsdWF0ZUVxdWFsc0NvbmRpdGlvbihjb250cm9sLCBvcGVyYXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICckbm9kZWYnOlxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB0aGlzLl9ldmFsdWF0ZU5vdERlZkNvbmRpdGlvbihjb250cm9sLCBvcGVyYXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICckZGVmJzpcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5fZXZhbHVhdGVEZWZDb25kaXRpb24oY29udHJvbCwgb3BlcmF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIG9wZXJhdG9yICcke29wZXJhdG9yfScgb24gZGlzYWJsZSBjb25kaXRpb25gKTtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgX2V2YWx1YXRlTm90RXF1YWxzQ29uZGl0aW9uKGNvbnRyb2wsIGNvbmRpdGlvbikge1xuICAgIHJldHVybiAhdGhpcy5fZXZhbHVhdGVFcXVhbHNDb25kaXRpb24oY29udHJvbCwgY29uZGl0aW9uKTtcbiAgfVxuXG4gIF9ldmFsdWF0ZUVxdWFsc0NvbmRpdGlvbihjb250cm9sLCBjb25kaXRpb24pIHtcbiAgICBjb25zdCBvcGVyYXRvciA9IE9iamVjdC5rZXlzKGNvbmRpdGlvbilbMF07XG4gICAgY29uc3Qgb3BlcmFuZHMgPSBjb25kaXRpb25bb3BlcmF0b3JdO1xuICAgIGNvbnN0IG1vZGVsQXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKG9wZXJhbmRzKTtcbiAgICByZXR1cm4gbW9kZWxBdHRyaWJ1dGVzXG4gICAgICAubWFwKChtb2RlbEF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICBjb25zdCB0ZXN0VmFsdWUgPSBvcGVyYW5kc1ttb2RlbEF0dHJpYnV0ZV07XG4gICAgICAgIGxldCB2YWx1ZSA9IGdldCh0aGlzLl92YWx1ZXMsIG1vZGVsQXR0cmlidXRlKTtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwgJiYgY29udHJvbC50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGVzdFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB0ZXN0VmFsdWUuaW5jbHVkZXModmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdGVzdFZhbHVlO1xuICAgICAgfSlcbiAgICAgIC5yZWR1Y2UoKGFjYywgY3VycmVudCkgPT4gYWNjIHx8IGN1cnJlbnQpO1xuICB9XG5cbiAgX2V2YWx1YXRlTm90RGVmQ29uZGl0aW9uKGNvbnRyb2wsIGNvbmRpdGlvbikge1xuICAgIGNvbnN0IG9wZXJhdG9yID0gT2JqZWN0LmtleXMoY29uZGl0aW9uKVswXTtcbiAgICBjb25zdCBtb2RlbEF0dHJpYnV0ZSA9IGNvbmRpdGlvbltvcGVyYXRvcl07XG4gICAgcmV0dXJuIGdldCh0aGlzLl92YWx1ZXMsIG1vZGVsQXR0cmlidXRlKSA9PT0gdW5kZWZpbmVkIHx8IGdldCh0aGlzLl92YWx1ZXMsIG1vZGVsQXR0cmlidXRlKSA9PT0gbnVsbDtcbiAgfVxuXG4gIF9ldmFsdWF0ZURlZkNvbmRpdGlvbihjb250cm9sLCBjb25kaXRpb24pIHtcbiAgICByZXR1cm4gIXRoaXMuX2V2YWx1YXRlTm90RGVmQ29uZGl0aW9uKGNvbnRyb2wsIGNvbmRpdGlvbik7XG4gIH1cblxuICBfcmVuZGVyUGFydCgpIHtcbiAgICBpZiAodGhpcy5fY29uZmlybSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImNvbmZpcm0tYm94XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiPlRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCB2YWxpZCBhbmQgY2Fubm90IGJlIHNhdmVkLjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybS1ib3hfYWN0aW9uc1wiPlxuICAgICAgICAgIDxndi1idXR0b24gQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25Db25maXJtUmVzZXR9XCIgb3V0bGluZWQgaWNvbj1cImdlbmVyYWw6dXBkYXRlXCIgZGFuZ2VyPkxvc2UgY2hhbmdlczwvZ3YtYnV0dG9uPlxuICAgICAgICAgIDxndi1idXR0b24gQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25Db25maXJtRWRpdH1cIiBpY29uPVwiZGVzaWduOmVkaXRcIj5FZGl0PC9ndi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+YDtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IHRoaXMuc2NoZW1hLnByb3BlcnRpZXMgPyBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzKSA6IFtdO1xuICAgIHRoaXMuX2lnbm9yZVByb3BlcnRpZXMgPSBbXTtcbiAgICByZXR1cm4gaHRtbGAke2tleXMubWFwKChrZXkpID0+IHRoaXMuX3JlbmRlckNvbnRyb2woa2V5KSl9YDtcbiAgfVxuXG4gIGdldENvbnRyb2xzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sJykpO1xuICB9XG5cbiAgZ2V0Q29udHJvbChpZCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgfVxuXG4gIF9nZXRFcnJvcnMoKSB7XG4gICAgcmV0dXJuICh0aGlzLl92YWxpZGF0b3JSZXN1bHRzLmVycm9ycyB8fCBbXSkuZmlsdGVyKChlcnJvcikgPT4ge1xuICAgICAgbGV0IGlkID0gYCR7ZXJyb3IucHJvcGVydHkucmVwbGFjZSgnaW5zdGFuY2UuJywgJycpfWA7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXJyb3IuYXJndW1lbnQpKSB7XG4gICAgICAgIGlkID0gYCR7aWR9LiR7ZXJyb3IuYXJndW1lbnR9YDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXJyb3JLZXkgPSBgeC1zY2hlbWEtZm9ybS5lcnJvcnMuJHtpZH0uJHtlcnJvci5uYW1lfWA7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBnZXQodGhpcy5zY2hlbWEsIGVycm9yS2V5KTtcbiAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhdGhpcy5faWdub3JlUHJvcGVydGllcy5pbmNsdWRlcyhpZCk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5zY2hlbWEpIHtcbiAgICAgIC8vIEFkZGl0aW9uYWwgcHJvcGVydGllcyBzaG91bGQgbm90IGJsb2NrIHRoZSB2YWxpZGF0aW9uIG9mIHRoZSBmb3JtXG4gICAgICB0aGlzLl92YWxpZGF0b3JSZXN1bHRzID0gdGhpcy5fdmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMuX3ZhbHVlcywgeyAuLi50aGlzLnNjaGVtYSwgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9ycyA9IHRoaXMuX2dldEVycm9ycygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yUmVzdWx0cztcbiAgfVxuXG4gIGlzVmFsaWQoKSB7XG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMudmFsaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZ2V0RXJyb3JzKCkgPT09IDA7XG4gIH1cblxuICBpc1RvdWNoKCkge1xuICAgIHJldHVybiB0aGlzLl90b3VjaCB8fCAodGhpcy5kaXJ0eSAmJiB0aGlzLnZhbGlkYXRlT25SZW5kZXIpO1xuICB9XG5cbiAgY2FuU3VibWl0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVG91Y2goKSAmJiB0aGlzLmlzVmFsaWQoKTtcbiAgfVxuXG4gIF91cGRhdGVBY3Rpb25zKCkge1xuICAgIGNvbnN0IHN1Ym1pdEJ0biA9IHRoaXMuX2dldFN1Ym1pdEJ0bigpO1xuICAgIGlmIChzdWJtaXRCdG4gIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuY2FuU3VibWl0KCkpIHtcbiAgICAgICAgdGhpcy5fZ2V0U3VibWl0QnRuKCkucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZ2V0U3VibWl0QnRuKCkuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXNldEJ0biA9IHRoaXMuX2dldFJlc2V0QnRuKCk7XG4gICAgaWYgKHJlc2V0QnRuICE9IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICAgIHJlc2V0QnRuLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2V0QnRuLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfdXBkYXRlQ2hpbGRyZW4od2l0aFZhbGlkYXRpb24pIHtcbiAgICBpZiAod2l0aFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB7fTtcbiAgICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICAgIHRoaXMucmVxdWVzdFZhbGlkYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlQWN0aW9uc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3VwZGF0ZUFjdGlvbnMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVBY3Rpb25zVGltZW91dCk7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnX3ZhbHVlcycpKSB7XG4gICAgICB0aGlzLmdldENvbnRyb2xzKCkuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICBjb250cm9sLnZhbHVlID0gZ2V0KHRoaXMuX3ZhbHVlcywgY29udHJvbC5pZCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4odGhpcy52YWxpZGF0ZU9uUmVuZGVyICYmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ192YWx1ZXMnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NjaGVtYScpKSk7XG4gIH1cblxuICBhc3luYyBfZ2V0VXBkYXRlQ29tcGxldGUoKSB7XG4gICAgYXdhaXQgc3VwZXIuX2dldFVwZGF0ZUNvbXBsZXRlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5nZXRDb250cm9scygpLm1hcCgoZSkgPT4gZS51cGRhdGVDb21wbGV0ZSkpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBodG1sYDxmb3JtIGNsYXNzPVwiJHtjbGFzc01hcCh7IHNjcm9sbGFibGU6IHRoaXMuc2Nyb2xsYWJsZSB9KX1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgY29udGFpbmVyOiB0cnVlLCBjb25maXJtOiB0aGlzLl9jb25maXJtIH0pfVwiPlxuICAgICAgICAke3RoaXMuaGFzSGVhZGVyID09PSB0cnVlXG4gICAgICAgICAgPyBodG1sYFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyB0aXRsZTogdHJ1ZSwgY2VudGVyOiB0aGlzLmhhc0hlYWRlciAmJiAhdGhpcy5oYXNGb290ZXIgfSl9XCI+XG4gICAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwidGl0bGVcIj48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItbGVmdFwiPjwvc2xvdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAke3RoaXMucmVhZG9ubHkgPT09IHRydWUgfHwgdGhpcy5oYXNGb290ZXIgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgIDogaHRtbGA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInJlc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25SZXNldH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImdlbmVyYWw6dXBkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25TdWJtaXR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjb2RlOmNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aXRsZT1cIiR7dGhpcy5zdWJtaXRMYWJlbH1cIlxuICAgICAgICAgICAgICAgICAgICAgID48L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IGB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYFxuICAgICAgICAgIDogJyd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+JHt0aGlzLnNjaGVtYSAhPSBudWxsID8gdGhpcy5fcmVuZGVyUGFydCgpIDogaHRtbGBgfTwvZGl2PlxuICAgICAgICAke3RoaXMuaGFzRm9vdGVyID09PSB0cnVlICYmIHRoaXMucmVhZG9ubHkgIT09IHRydWVcbiAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGd2LWJ1dHRvbiBpZD1cInJlc2V0XCIgb3V0bGluZWQgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25SZXNldH1cIiBpY29uPVwiZ2VuZXJhbDp1cGRhdGVcIiB0aXRsZT1cIlJlc2V0XCI+UmVzZXQ8L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxndi1idXR0b24gaWQ9XCJzdWJtaXRcIiBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vblN1Ym1pdH1cIiBpY29uPVwiY29kZTpjaGVja1wiIC50aXRsZT1cIiR7dGhpcy5zdWJtaXRMYWJlbH1cIlxuICAgICAgICAgICAgICAgICAgICA+JHt0aGlzLnN1Ym1pdExhYmVsfTwvZ3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYFxuICAgICAgICAgIDogJyd9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+YDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBlbXB0eSxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgICAtLWJnYzogdmFyKC0tZ3Ytc2NoZW1hLWZvcm0tLWJnYywgI2ZmZmZmZik7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtLnNjcm9sbGFibGUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZ2MpO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgIC8qIGZvciBGaXJlZm94ICovXG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIsXG4gICAgICAgIC5mb290ZXIsXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZ2MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgLyogZm9yIEZpcmVmb3ggKi9cbiAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQgPiBndi1zY2hlbWEtZm9ybS1jb250cm9sIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtLnNjcm9sbGFibGUgLmNvbnRlbnQge1xuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybS5zY3JvbGxhYmxlIC5jb250ZW50ID4gZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCB7XG4gICAgICAgICAgbWF4LXdpZHRoOiA3NzVweDtcbiAgICAgICAgICB3aWR0aDogOTUlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlcixcbiAgICAgICAgLmZvb3RlciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ1cHg7XG4gICAgICAgICAgLS1ndi1pY29uLS1zOiAyNnB4O1xuICAgICAgICAgIC0tZ3YtaWNvbi0tYzogI2JmYmZiZjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIHBhZGRpbmc6IDAgMC41cmVtO1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvb3RlciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm0uc2Nyb2xsYWJsZSAuZm9vdGVyIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb290ZXIgLmxlZnQsXG4gICAgICAgIC5mb290ZXIgLnJpZ2h0IHtcbiAgICAgICAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciAubGVmdCxcbiAgICAgICAgLmZvb3RlciAubGVmdCxcbiAgICAgICAgLmhlYWRlciAucmlnaHQsXG4gICAgICAgIC5mb290ZXIgLnJpZ2h0IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIgLnJpZ2h0LFxuICAgICAgICAuZm9vdGVyIC5yaWdodCB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIgLnRpdGxlIHtcbiAgICAgICAgICBjb2xvcjogIzI4NDQ0ZjtcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciAudGl0bGUuY2VudGVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbmZpcm0tYm94IHtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuY29uZmlybS1ib3hfYWN0aW9ucyB7XG4gICAgICAgICAgcGFkZGluZzogMXJlbSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbmZpcm0gLmhlYWRlciAubGVmdCxcbiAgICAgICAgLmNvbmZpcm0gLmhlYWRlciAucmlnaHQsXG4gICAgICAgIC5jb25maXJtIC5mb290ZXIgLmxlZnQsXG4gICAgICAgIC5jb25maXJtIC5mb290ZXIgLnJpZ2h0IHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0nLCBHdlNjaGVtYUZvcm0pO1xuIl19
|
|
619
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS5qcyJdLCJuYW1lcyI6WyJMaXRFbGVtZW50IiwiaHRtbCIsImNzcyIsImdldCIsInNldCIsImRlbCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJkZWVwQ2xvbmUiLCJkZWVwRXF1YWwiLCJjbGFzc01hcCIsInJlcGVhdCIsIlZhbGlkYXRvciIsImVtcHR5IiwiR3ZTY2hlbWFGb3JtIiwicHJvcGVydGllcyIsInNjaGVtYSIsInR5cGUiLCJPYmplY3QiLCJlcnJvcnMiLCJ2YWx1ZXMiLCJzdWJtaXRMYWJlbCIsIlN0cmluZyIsImhhc0Zvb3RlciIsIkJvb2xlYW4iLCJhdHRyaWJ1dGUiLCJoYXNIZWFkZXIiLCJfY29uZmlybSIsIl92YWx1ZXMiLCJkaXJ0eSIsInJlZmxlY3QiLCJoaWRlRGVwcmVjYXRlZCIsInZhbGlkYXRlT25SZW5kZXIiLCJfdmFsaWRhdG9yUmVzdWx0cyIsInNrZWxldG9uIiwiX3RvdWNoIiwicmVhZG9ubHkiLCJzY3JvbGxhYmxlIiwiY29uc3RydWN0b3IiLCJfdmFsaWRhdG9yIiwiX2lnbm9yZVByb3BlcnRpZXMiLCJfZHluYW1pY0NvbnRyb2xzIiwiX2R5bmFtaWNBdHRyaWJ1dGVzIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9vbkRlZmF1bHRWYWx1ZSIsImJpbmQiLCJfb25DaGFuZ2UiLCJfb25Db250cm9sUmVhZHkiLCJfaW5pdGlhbFZhbHVlcyIsInJlc2V0IiwiX3NldERpcnR5IiwiZ2V0Q29udHJvbHMiLCJmb3JFYWNoIiwicyIsInJlcXVlc3RVcGRhdGUiLCJfb25SZXNldCIsInJlcXVlc3RWYWxpZGF0aW9uIiwiY2xlYXJUaW1lb3V0IiwiX3ZhbGlkYXRlVGltZW91dCIsInNldFRpbWVvdXQiLCJ2YWxpZGF0ZSIsIl91cGRhdGVBY3Rpb25zIiwic3VibWl0IiwiX29uU3VibWl0IiwidmFsaWRhdG9yUmVzdWx0cyIsImlzVmFsaWQiLCJfc2V0VG91Y2giLCJ0b3VjaCIsImNvbmZpcm0iLCJpc1RvdWNoIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiX29uQ29uZmlybVJlc2V0IiwidGhlbiIsIl9vbkNvbmZpcm1FZGl0IiwiX3VwZGF0ZUNoaWxkcmVuIiwiX2dldFN1Ym1pdEJ0biIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwiX2dldFJlc2V0QnRuIiwiX2Rpc3BhdGNoQ2hhbmdlIiwiX2NoYW5nZVRpbWVvdXQiLCJ0YXJnZXQiLCJ2YWxpZGF0aW9uIiwiZGV0YWlsIiwiY3VycmVudFRhcmdldCIsInZhbHVlIiwiY29udHJvbCIsInRyaW0iLCJsZW5ndGgiLCJwYXJzZUludCIsImlkIiwiaW50VmFsdWUiLCJOdW1iZXIiLCJ2YWx1ZU9mIiwiaXNOYU4iLCJlbnVtIiwia2V5cyIsIl91cGRhdGVEeW5hbWljQ29udHJvbHMiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJjb250cm9sRWxlbWVudCIsImV2ZW50IiwibmFtZSIsIl9oYXNDb25kaXRpb24iLCJwdXNoIiwiX3VwZGF0ZUR5bmFtaWNDb250cm9sIiwiaXMiLCJfZXZhbHVhdGVDb25kaXRpb24iLCJzZXRBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJwZXJmb3JtVXBkYXRlIiwiX3JlbmRlckNvbnRyb2wiLCJrZXkiLCJpc1JlcXVpcmVkIiwicmVxdWlyZWQiLCJpbmNsdWRlcyIsImlzRGlzYWJsZWQiLCJkaXNhYmxlZCIsImlzSGlkZGVuIiwiaXNSZWFkb25seSIsInJlYWRPbmx5IiwiaXNXcml0ZU9ubHkiLCJ3cml0ZU9ubHkiLCJmaW5kIiwiY29uZGl0aW9uIiwiY29uZGl0aW9uS2V5IiwiQXJyYXkiLCJpc0FycmF5IiwiY29uc29sZSIsIndhcm4iLCJyZXN1bHQiLCJvcGVyYXRpb24iLCJvcGVyYXRvciIsIl9ldmFsdWF0ZU5vdEVxdWFsc0NvbmRpdGlvbiIsIl9ldmFsdWF0ZUVxdWFsc0NvbmRpdGlvbiIsIl9ldmFsdWF0ZU5vdERlZkNvbmRpdGlvbiIsIl9ldmFsdWF0ZURlZkNvbmRpdGlvbiIsIm9wZXJhbmRzIiwibW9kZWxBdHRyaWJ1dGVzIiwibWFwIiwibW9kZWxBdHRyaWJ1dGUiLCJ0ZXN0VmFsdWUiLCJyZWR1Y2UiLCJhY2MiLCJjdXJyZW50IiwidW5kZWZpbmVkIiwiX3JlbmRlclBhcnQiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsImdldENvbnRyb2wiLCJfZ2V0RXJyb3JzIiwiZmlsdGVyIiwiZXJyb3IiLCJwcm9wZXJ0eSIsInJlcGxhY2UiLCJhcmd1bWVudCIsImVycm9yS2V5IiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwidmFsaWQiLCJjYW5TdWJtaXQiLCJzdWJtaXRCdG4iLCJyZXNldEJ0biIsIndpdGhWYWxpZGF0aW9uIiwiX3VwZGF0ZUFjdGlvbnNUaW1lb3V0IiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwiZ2V0VXBkYXRlQ29tcGxldGUiLCJhbGwiLCJ1cGRhdGVDb21wbGV0ZSIsInJlbmRlciIsImNvbnRhaW5lciIsInRpdGxlIiwiY2VudGVyIiwic3R5bGVzIiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFVBQVQsRUFBcUJDLElBQXJCLEVBQTJCQyxHQUEzQixRQUFzQyxLQUF0QztBQUNBLFNBQVNDLEdBQVQsRUFBY0MsR0FBZCxFQUFtQkMsR0FBbkIsUUFBOEIsYUFBOUI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUNBLFNBQVNDLFNBQVQsRUFBb0JDLFNBQXBCLFFBQXFDLGNBQXJDO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QiwwQkFBekI7QUFDQSxTQUFTQyxNQUFULFFBQXVCLHVC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MDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTGl0RWxlbWVudCwgaHRtbCwgY3NzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGdldCwgc2V0LCBkZWwgfSBmcm9tICdvYmplY3QtcGF0aCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBkZWVwQ2xvbmUsIGRlZXBFcXVhbCB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyByZXBlYXQgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZXBlYXQnO1xuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSAnanNvbnNjaGVtYSc7XG5pbXBvcnQgeyBlbXB0eSB9IGZyb20gJy4uL3N0eWxlcy9lbXB0eSc7XG5pbXBvcnQgJy4vZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCc7XG5cbi8qKlxuICogU2NoZW1hIGZvcm0gY29tcG9uZW50XG4gKlxuICogQGZpcmVzIGd2LXNjaGVtYS1mb3JtOnN1Ym1pdCAtIGV2ZW50IHdoZW4gdXNlciBzdWJtaXQgdmFsaWQgZm9ybVxuICogQGZpcmVzIGd2LXNjaGVtYS1mb3JtOmVycm9yIC0gZXZlbnQgd2hlbiB1c2VyIHN1Ym1pdCBpbnZhbGlkIGZvcm1cbiAqIEBmaXJlcyBndi1zY2hlbWEtZm9ybTpjaGFuZ2UgLSBldmVudCB3aGVuIHdoZW4gZm9ybSBjaGFuZ2VcbiAqIEBmaXJlcyBndi1zY2hlbWEtZm9ybTpjYW5jZWwgLSBldmVudCB3aGVuIHVzZXIgY2FuY2VsIGZvcm1cbiAqXG4gKiBAYXR0ciB7T2JqZWN0fSBzY2hlbWEgLSB0aGUgc2NoZW1hIGZvcm0gY29uZmlndXJhdGlvblxuICogQGF0dHIge09iamVjdH0gdmFsdWVzIC0gdGhlIHZhbHVlcyBvZiBmaWVsZHNcbiAqIEBhdHRyIHtPYmplY3R9IGVycm9ycyAtIHRoZSBtYXAgb2YgZXJyb3JzIGJ5IGlucHV0IGtleVxuICogQGF0dHIge0Jvb2xlYW59IHZhbGlkYXRlIC0gdG8gZm9yY2UgdmFsaWRhdGlvbiBvbiBmaXJzdCByZW5kZXJcbiAqIEBhdHRyIHtCb29sZWFufSByZWFkb25seSAtIHRydWUgaWYgcmVhZG9ubHlcbiAqIEBhdHRyIHtCb29sZWFufSBzY3JvbGxhYmxlIC0gdXNlZnVsIGZvciBtYWtpbmcgY29udGVudCBzY3JvbGxhYmxlIHdpdGggZml4ZWQgaGVhZGVycyAvIGZvb3RlcnNcbiAqXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LXNjaGVtYS1mb3JtLS1iZ2M9I2ZmZmZmZl0gLSBCYWNrZ3JvdW5kIGNvbG9yXG4gKiBAY3NzcHJvcCB7TGVuZ3RofSBbLS1ndi1zY2hlbWEtZm9ybS1jb250cm9sLS1tPTAuNHJlbV0gLSBDb250cm9sIG1hcmdpblxuICovXG5leHBvcnQgY2xhc3MgR3ZTY2hlbWFGb3JtIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1hOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgZXJyb3JzOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgdmFsdWVzOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgc3VibWl0TGFiZWw6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBoYXNGb290ZXI6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnaGFzLWZvb3RlcicgfSxcbiAgICAgIGhhc0hlYWRlcjogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICdoYXMtaGVhZGVyJyB9LFxuICAgICAgX2NvbmZpcm06IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBfdmFsdWVzOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgZGlydHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgaGlkZURlcHJlY2F0ZWQ6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnaGlkZS1kZXByZWNhdGVkJyB9LFxuICAgICAgdmFsaWRhdGVPblJlbmRlcjogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICd2YWxpZGF0ZS1vbi1yZW5kZXInIH0sXG4gICAgICBfdmFsaWRhdG9yUmVzdWx0czogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIHNrZWxldG9uOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIF90b3VjaDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICByZWFkb25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBzY3JvbGxhYmxlOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmhpZGVEZXByZWNhdGVkID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsdWVzID0ge307XG4gICAgdGhpcy5zdWJtaXRMYWJlbCA9ICdPayc7XG4gICAgdGhpcy5oYXNIZWFkZXIgPSBmYWxzZTtcbiAgICB0aGlzLmhhc0Zvb3RlciA9IGZhbHNlO1xuICAgIHRoaXMuX3RvdWNoID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsaWRhdG9yID0gbmV3IFZhbGlkYXRvcigpO1xuICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB7fTtcbiAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzID0gW107XG4gICAgdGhpcy5fZHluYW1pY0NvbnRyb2xzID0gW107XG4gICAgdGhpcy5fZHluYW1pY0F0dHJpYnV0ZXMgPSBbJ2Rpc2FibGVkJywgJ3JlcXVpcmVkJywgJ2hpZGRlbiddO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZ3Ytc2NoZW1hLWZvcm0tY29udHJvbDpkZWZhdWx0LXZhbHVlJywgdGhpcy5fb25EZWZhdWx0VmFsdWUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdndi1zY2hlbWEtZm9ybS1jb250cm9sOmNoYW5nZScsIHRoaXMuX29uQ2hhbmdlLmJpbmQodGhpcykpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZ3Ytc2NoZW1hLWZvcm0tY29udHJvbDpjb250cm9sLXJlYWR5JywgdGhpcy5fb25Db250cm9sUmVhZHkuYmluZCh0aGlzKSk7XG4gIH1cblxuICBzZXQgdmFsdWVzKHZhbHVlcykge1xuICAgIGlmICghZGVlcEVxdWFsKHRoaXMuX3ZhbHVlcywgdmFsdWVzKSkge1xuICAgICAgaWYgKHZhbHVlcykge1xuICAgICAgICB0aGlzLl9pbml0aWFsVmFsdWVzID0geyAuLi52YWx1ZXMgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxWYWx1ZXMgPSB7fTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3ZhbHVlcyA9IGRlZXBDbG9uZSh0aGlzLl9pbml0aWFsVmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZXM7XG4gIH1cblxuICByZXNldCh2YWx1ZXMgPSBudWxsKSB7XG4gICAgdGhpcy5fdmFsdWVzID0gZGVlcENsb25lKHZhbHVlcyB8fCB0aGlzLl9pbml0aWFsVmFsdWVzKTtcbiAgICB0aGlzLl90b3VjaCA9IGZhbHNlO1xuICAgIHRoaXMuX3NldERpcnR5KGZhbHNlKTtcbiAgICB0aGlzLmdldENvbnRyb2xzKCkuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcy5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBfb25SZXNldCgpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAncmVzZXQnKTtcbiAgfVxuXG4gIHJlcXVlc3RWYWxpZGF0aW9uKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl92YWxpZGF0ZVRpbWVvdXQpO1xuICAgIHRoaXMuX3ZhbGlkYXRlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgdGhpcy5fdXBkYXRlQWN0aW9ucygpO1xuICAgIH0sIDM1MCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5fb25TdWJtaXQoKTtcbiAgfVxuXG4gIF9vblN1Ym1pdCgpIHtcbiAgICBjb25zdCB2YWxpZGF0b3JSZXN1bHRzID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgdGhpcy5faW5pdGlhbFZhbHVlcyA9IGRlZXBDbG9uZSh0aGlzLl92YWx1ZXMpO1xuICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgICAgdGhpcy5fdG91Y2ggPSBmYWxzZTtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3N1Ym1pdCcsIHsgdmFsdWVzOiB0aGlzLl92YWx1ZXMsIHZhbGlkYXRvclJlc3VsdHMgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2Vycm9yJywgeyB2YWx1ZXM6IHRoaXMuX3ZhbHVlcywgdmFsaWRhdG9yUmVzdWx0cyB9KTtcbiAgICB9XG4gIH1cblxuICBfc2V0RGlydHkoZGlydHkgPSB0cnVlKSB7XG4gICAgdGhpcy5kaXJ0eSA9ICEhZGlydHk7XG4gIH1cblxuICBfc2V0VG91Y2godG91Y2ggPSB0cnVlKSB7XG4gICAgdGhpcy5fdG91Y2ggPSAhIXRvdWNoO1xuICB9XG5cbiAgY29uZmlybSgpIHtcbiAgICBpZiAodGhpcy5pc1RvdWNoKCkpIHtcbiAgICAgIGlmICh0aGlzLl9jb25maXJtICYmIHRoaXMuX2NvbmZpcm0ucHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlybS5wcm9taXNlO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+ICh0aGlzLl9jb25maXJtID0geyByZXNvbHZlLCByZWplY3QgfSkpO1xuICAgICAgdGhpcy5fY29uZmlybS5wcm9taXNlID0gcHJvbWlzZTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICBfb25Db25maXJtUmVzZXQoKSB7XG4gICAgY29uc3QgeyByZXNvbHZlIH0gPSB0aGlzLl9jb25maXJtO1xuICAgIHRoaXMuX2NvbmZpcm0gPSBudWxsO1xuICAgIHRoaXMuX29uUmVzZXQoKTtcbiAgICB0aGlzLnJlcXVlc3RVcGRhdGUoKS50aGVuKCgpID0+IHtcbiAgICAgIHJlc29sdmUodGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICBfb25Db25maXJtRWRpdCgpIHtcbiAgICB0aGlzLl9jb25maXJtLnJlamVjdCh0aGlzKTtcbiAgICB0aGlzLl9jb25maXJtID0gbnVsbDtcbiAgICB0aGlzLl91cGRhdGVDaGlsZHJlbih0aGlzLnZhbGlkYXRlT25SZW5kZXIpO1xuICB9XG5cbiAgX2dldFN1Ym1pdEJ0bigpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJyNzdWJtaXQnKTtcbiAgfVxuXG4gIF9nZXRSZXNldEJ0bigpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJyNyZXNldCcpO1xuICB9XG5cbiAgX2Rpc3BhdGNoQ2hhbmdlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9jaGFuZ2VUaW1lb3V0KTtcbiAgICB0aGlzLl9jaGFuZ2VUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2UnLCB7IHRhcmdldDogdGhpcywgdmFsdWVzOiB0aGlzLl92YWx1ZXMsIHZhbGlkYXRpb246IHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgfSk7XG4gICAgfSwgNTApO1xuICB9XG5cbiAgX29uRGVmYXVsdFZhbHVlKHsgZGV0YWlsOiB7IGN1cnJlbnRUYXJnZXQsIHZhbHVlLCBjb250cm9sIH0gfSkge1xuICAgIGlmIChjb250cm9sLnR5cGUgPT09ICdpbnRlZ2VyJyAmJiB2YWx1ZSAhPSBudWxsICYmICgodmFsdWUudHJpbSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB8fCB2YWx1ZS5sZW5ndGggPiAwKSkge1xuICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgIH1cbiAgICBzZXQodGhpcy5fdmFsdWVzLCBjdXJyZW50VGFyZ2V0LmlkLCB2YWx1ZSk7XG4gIH1cblxuICBfb25DaGFuZ2UoeyBkZXRhaWw6IHsgY3VycmVudFRhcmdldCwgdmFsdWUsIGNvbnRyb2wgfSB9KSB7XG4gICAgdGhpcy5fc2V0VG91Y2godHJ1ZSk7XG4gICAgaWYgKGNvbnRyb2wudHlwZSA9PT0gJ2ludGVnZXInKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGludFZhbHVlID0gTnVtYmVyKHZhbHVlKS52YWx1ZU9mKCk7XG4gICAgICAgIGlmICghaXNOYU4oaW50VmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUgPSBpbnRWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wudHlwZSA9PT0gJ2FycmF5JyAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHZhbHVlID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wudHlwZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCAmJiAhY29udHJvbC5lbnVtKSB7XG4gICAgICB2YWx1ZSA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChjb250cm9sLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBkZWwodGhpcy5fdmFsdWVzLCBjdXJyZW50VGFyZ2V0LmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0KHRoaXMuX3ZhbHVlcywgY3VycmVudFRhcmdldC5pZCwgdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUR5bmFtaWNDb250cm9scygpO1xuICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5fdXBkYXRlQWN0aW9ucygpO1xuICAgIHRoaXMuX2Rpc3BhdGNoQ2hhbmdlKCk7XG4gIH1cblxuICBfb25Db250cm9sUmVhZHkoZSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGNvbnRyb2xFbGVtZW50ID0gZS5kZXRhaWwuY29udHJvbDtcbiAgICBjb25zdCBjb250cm9sID0gY29udHJvbEVsZW1lbnQuY29udHJvbDtcbiAgICBpZiAoY29udHJvbFsneC1zY2hlbWEtZm9ybSddKSB7XG4gICAgICBpZiAoY29udHJvbFsneC1zY2hlbWEtZm9ybSddLmV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gY29udHJvbFsneC1zY2hlbWEtZm9ybSddLmV2ZW50O1xuICAgICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsIGV2ZW50Lm5hbWUsIHsgLi4uZXZlbnQsIC4uLmUuZGV0YWlsIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl9oYXNDb25kaXRpb24oY29udHJvbCkpIHtcbiAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRyb2xzLnB1c2goY29udHJvbEVsZW1lbnQpO1xuICAgICAgICB0aGlzLl91cGRhdGVEeW5hbWljQ29udHJvbChjb250cm9sRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX3VwZGF0ZUR5bmFtaWNDb250cm9scygpIHtcbiAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzID0gW107XG4gICAgdGhpcy5fZHluYW1pY0NvbnRyb2xzLmZvckVhY2goKGNvbnRyb2xFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLl91cGRhdGVEeW5hbWljQ29udHJvbChjb250cm9sRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBfdXBkYXRlRHluYW1pY0NvbnRyb2woY29udHJvbEVsZW1lbnQpIHtcbiAgICBjb25zdCBjb250cm9sID0gY29udHJvbEVsZW1lbnQuY29udHJvbDtcbiAgICBpZiAoY29udHJvbFsneC1zY2hlbWEtZm9ybSddKSB7XG4gICAgICB0aGlzLl9keW5hbWljQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgY29uc3QgaXMgPSB0aGlzLl9ldmFsdWF0ZUNvbmRpdGlvbihjb250cm9sLCBhdHRyaWJ1dGUpO1xuICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICBjb250cm9sRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCAnJyk7XG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAgICAgICAgIHRoaXMuX2lnbm9yZVByb3BlcnRpZXMucHVzaChjb250cm9sRWxlbWVudC5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2xFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBwZXJmb3JtVXBkYXRlKCkge1xuICAgIHRoaXMuZ2V0Q29udHJvbHMoKS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBzLnJlcXVlc3RVcGRhdGUoKTtcbiAgICB9KTtcbiAgICBzdXBlci5wZXJmb3JtVXBkYXRlKCk7XG4gIH1cblxuICBfcmVuZGVyQ29udHJvbChrZXkpIHtcbiAgICAvLyBUaGlzIGlzIHJlcXVpcmUgdG8gY2xlYW4gY2FjaGUgb2YgPGd2LXNjaGVtYS1mb3JtLWNvbnRyb2w+XG4gICAgY29uc3QgY29udHJvbCA9IHsgLi4udGhpcy5zY2hlbWEucHJvcGVydGllc1trZXldIH07XG4gICAgY29uc3QgaXNSZXF1aXJlZCA9ICh0aGlzLnNjaGVtYS5yZXF1aXJlZCAmJiB0aGlzLnNjaGVtYS5yZXF1aXJlZC5pbmNsdWRlcyhrZXkpKSB8fCB0aGlzLl9ldmFsdWF0ZUNvbmRpdGlvbihjb250cm9sLCAncmVxdWlyZWQnKTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gKHRoaXMuc2NoZW1hLmRpc2FibGVkICYmIHRoaXMuc2NoZW1hLmRpc2FibGVkLmluY2x1ZGVzKGtleSkpIHx8IHRoaXMuX2V2YWx1YXRlQ29uZGl0aW9uKGNvbnRyb2wsICdkaXNhYmxlZCcpO1xuICAgIGNvbnN0IGlzSGlkZGVuID0gdGhpcy5fZXZhbHVhdGVDb25kaXRpb24oY29udHJvbCwgJ2hpZGRlbicpO1xuICAgIGlmIChpc0hpZGRlbikge1xuICAgICAgdGhpcy5faWdub3JlUHJvcGVydGllcy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGNvbnN0IGlzUmVhZG9ubHkgPSB0aGlzLnJlYWRvbmx5IHx8IGNvbnRyb2wucmVhZE9ubHkgPT09IHRydWU7XG4gICAgY29uc3QgaXNXcml0ZU9ubHkgPSBjb250cm9sLndyaXRlT25seSA9PT0gdHJ1ZTtcbiAgICBjb25zdCB2YWx1ZSA9IGdldCh0aGlzLl92YWx1ZXMsIGtleSk7XG4gICAgcmV0dXJuIGh0bWxgPGd2LXNjaGVtYS1mb3JtLWNvbnRyb2xcbiAgICAgIGRhdGEtYT1cImRkXCJcbiAgICAgIC5pZD1cIiR7a2V5fVwiXG4gICAgICAuZXJyb3JzPVwiJHt0aGlzLmVycm9yc31cIlxuICAgICAgLmNvbnRyb2w9XCIke2NvbnRyb2x9XCJcbiAgICAgIC5za2VsZXRvbj1cIiR7dGhpcy5za2VsZXRvbn1cIlxuICAgICAgLnZhbHVlPVwiJHt2YWx1ZX1cIlxuICAgICAgP3JlYWRvbmx5PVwiJHtpc1JlYWRvbmx5fVwiXG4gICAgICA/d3JpdGVvbmx5PVwiJHtpc1dyaXRlT25seX1cIlxuICAgICAgP3JlcXVpcmVkPVwiJHtpc1JlcXVpcmVkfVwiXG4gICAgICA/ZGlzYWJsZWQ9XCIke2lzRGlzYWJsZWR9XCJcbiAgICAgID9oaWRkZW49XCIke2lzSGlkZGVufVwiXG4gICAgPjwvZ3Ytc2NoZW1hLWZvcm0tY29udHJvbD5gO1xuICB9XG5cbiAgX2hhc0NvbmRpdGlvbihjb250cm9sKSB7XG4gICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2R5bmFtaWNBdHRyaWJ1dGVzLmZpbmQoKGNvbmRpdGlvbikgPT4gY29udHJvbFsneC1zY2hlbWEtZm9ybSddW2NvbmRpdGlvbl0gIT0gbnVsbCkgIT0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgX2V2YWx1YXRlQ29uZGl0aW9uKGNvbnRyb2wsIGNvbmRpdGlvbktleSkge1xuICAgIGlmIChjb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gPT0gbnVsbCB8fCBjb250cm9sWyd4LXNjaGVtYS1mb3JtJ11bY29uZGl0aW9uS2V5XSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNvbmRpdGlvbiA9IGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVtjb25kaXRpb25LZXldO1xuICAgIGlmICh0eXBlb2YgY29uZGl0aW9uID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBjb25kaXRpb247XG4gICAgfVxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb25kaXRpb24pKSB7XG4gICAgICAvLyBjb25kaXRpb24gaXNuJ3QgYW4gYXJyYXksIGlnbm9yZSB0aGUgY29uZGl0aW9uXG4gICAgICBjb25zb2xlLndhcm4oYCcke2NvbmRpdGlvbktleX0nIGF0dHJpYnV0ZSBvZiAneC1zY2hlbWEtZm9ybScgc2hvdWxkIGJlIGFuIGFycmF5YCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgZm9yIChjb25zdCBvcGVyYXRpb24gb2YgY29uZGl0aW9uKSB7XG4gICAgICAvLyBvcGVyYXRpb24gb25seSBoYXZlIG9uZSBvcGVyYXRvciB3aXRoIGEgc2luZ2xlIG9iamVjdCBjb250YWluaW5nIG9wZXJhbmQgdmFsdWVzXG4gICAgICBjb25zdCBvcGVyYXRvciA9IE9iamVjdC5rZXlzKG9wZXJhdGlvbilbMF07XG5cbiAgICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICAgICAgY2FzZSAnJG5lcSc6XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHRoaXMuX2V2YWx1YXRlTm90RXF1YWxzQ29uZGl0aW9uKGNvbnRyb2wsIG9wZXJhdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJyRlcSc6XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHRoaXMuX2V2YWx1YXRlRXF1YWxzQ29uZGl0aW9uKGNvbnRyb2wsIG9wZXJhdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJyRub2RlZic6XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHRoaXMuX2V2YWx1YXRlTm90RGVmQ29uZGl0aW9uKGNvbnRyb2wsIG9wZXJhdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJyRkZWYnOlxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB0aGlzLl9ldmFsdWF0ZURlZkNvbmRpdGlvbihjb250cm9sLCBvcGVyYXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgb3BlcmF0b3IgJyR7b3BlcmF0b3J9JyBvbiBkaXNhYmxlIGNvbmRpdGlvbmApO1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBfZXZhbHVhdGVOb3RFcXVhbHNDb25kaXRpb24oY29udHJvbCwgY29uZGl0aW9uKSB7XG4gICAgcmV0dXJuICF0aGlzLl9ldmFsdWF0ZUVxdWFsc0NvbmRpdGlvbihjb250cm9sLCBjb25kaXRpb24pO1xuICB9XG5cbiAgX2V2YWx1YXRlRXF1YWxzQ29uZGl0aW9uKGNvbnRyb2wsIGNvbmRpdGlvbikge1xuICAgIGNvbnN0IG9wZXJhdG9yID0gT2JqZWN0LmtleXMoY29uZGl0aW9uKVswXTtcbiAgICBjb25zdCBvcGVyYW5kcyA9IGNvbmRpdGlvbltvcGVyYXRvcl07XG4gICAgY29uc3QgbW9kZWxBdHRyaWJ1dGVzID0gT2JqZWN0LmtleXMob3BlcmFuZHMpO1xuICAgIHJldHVybiBtb2RlbEF0dHJpYnV0ZXNcbiAgICAgIC5tYXAoKG1vZGVsQXR0cmlidXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlc3RWYWx1ZSA9IG9wZXJhbmRzW21vZGVsQXR0cmlidXRlXTtcbiAgICAgICAgbGV0IHZhbHVlID0gZ2V0KHRoaXMuX3ZhbHVlcywgbW9kZWxBdHRyaWJ1dGUpO1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCAmJiBjb250cm9sLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0ZXN0VmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRlc3RWYWx1ZS5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0ZXN0VmFsdWU7XG4gICAgICB9KVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyZW50KSA9PiBhY2MgfHwgY3VycmVudCk7XG4gIH1cblxuICBfZXZhbHVhdGVOb3REZWZDb25kaXRpb24oY29udHJvbCwgY29uZGl0aW9uKSB7XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBPYmplY3Qua2V5cyhjb25kaXRpb24pWzBdO1xuICAgIGNvbnN0IG1vZGVsQXR0cmlidXRlID0gY29uZGl0aW9uW29wZXJhdG9yXTtcbiAgICByZXR1cm4gZ2V0KHRoaXMuX3ZhbHVlcywgbW9kZWxBdHRyaWJ1dGUpID09PSB1bmRlZmluZWQgfHwgZ2V0KHRoaXMuX3ZhbHVlcywgbW9kZWxBdHRyaWJ1dGUpID09PSBudWxsO1xuICB9XG5cbiAgX2V2YWx1YXRlRGVmQ29uZGl0aW9uKGNvbnRyb2wsIGNvbmRpdGlvbikge1xuICAgIHJldHVybiAhdGhpcy5fZXZhbHVhdGVOb3REZWZDb25kaXRpb24oY29udHJvbCwgY29uZGl0aW9uKTtcbiAgfVxuXG4gIF9yZW5kZXJQYXJ0KCkge1xuICAgIGlmICh0aGlzLl9jb25maXJtKSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiY29uZmlybS1ib3hcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCI+VGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IHZhbGlkIGFuZCBjYW5ub3QgYmUgc2F2ZWQuPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtLWJveF9hY3Rpb25zXCI+XG4gICAgICAgICAgPGd2LWJ1dHRvbiBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkNvbmZpcm1SZXNldH1cIiBvdXRsaW5lZCBpY29uPVwiZ2VuZXJhbDp1cGRhdGVcIiBkYW5nZXI+TG9zZSBjaGFuZ2VzPC9ndi1idXR0b24+XG4gICAgICAgICAgPGd2LWJ1dHRvbiBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkNvbmZpcm1FZGl0fVwiIGljb249XCJkZXNpZ246ZWRpdFwiPkVkaXQ8L2d2LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gdGhpcy5zY2hlbWEucHJvcGVydGllcyA/IE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hLnByb3BlcnRpZXMpIDogW107XG4gICAgdGhpcy5faWdub3JlUHJvcGVydGllcyA9IFtdO1xuICAgIHJldHVybiByZXBlYXQoa2V5cywgKGtleSkgPT4gdGhpcy5fcmVuZGVyQ29udHJvbChrZXkpKTtcbiAgfVxuXG4gIGdldENvbnRyb2xzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sJykpO1xuICB9XG5cbiAgZ2V0Q29udHJvbChpZCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgfVxuXG4gIF9nZXRFcnJvcnMoKSB7XG4gICAgcmV0dXJuICh0aGlzLl92YWxpZGF0b3JSZXN1bHRzLmVycm9ycyB8fCBbXSkuZmlsdGVyKChlcnJvcikgPT4ge1xuICAgICAgbGV0IGlkID0gYCR7ZXJyb3IucHJvcGVydHkucmVwbGFjZSgnaW5zdGFuY2UuJywgJycpfWA7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXJyb3IuYXJndW1lbnQpKSB7XG4gICAgICAgIGlkID0gYCR7aWR9LiR7ZXJyb3IuYXJndW1lbnR9YDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXJyb3JLZXkgPSBgeC1zY2hlbWEtZm9ybS5lcnJvcnMuJHtpZH0uJHtlcnJvci5uYW1lfWA7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBnZXQodGhpcy5zY2hlbWEsIGVycm9yS2V5KTtcbiAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhdGhpcy5faWdub3JlUHJvcGVydGllcy5pbmNsdWRlcyhpZCk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5zY2hlbWEpIHtcbiAgICAgIC8vIEFkZGl0aW9uYWwgcHJvcGVydGllcyBzaG91bGQgbm90IGJsb2NrIHRoZSB2YWxpZGF0aW9uIG9mIHRoZSBmb3JtXG4gICAgICB0aGlzLl92YWxpZGF0b3JSZXN1bHRzID0gdGhpcy5fdmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMuX3ZhbHVlcywgeyAuLi50aGlzLnNjaGVtYSwgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9ycyA9IHRoaXMuX2dldEVycm9ycygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yUmVzdWx0cztcbiAgfVxuXG4gIGlzVmFsaWQoKSB7XG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMudmFsaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZ2V0RXJyb3JzKCkgPT09IDA7XG4gIH1cblxuICBpc1RvdWNoKCkge1xuICAgIHJldHVybiB0aGlzLl90b3VjaCB8fCAodGhpcy5kaXJ0eSAmJiB0aGlzLnZhbGlkYXRlT25SZW5kZXIpO1xuICB9XG5cbiAgY2FuU3VibWl0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVG91Y2goKSAmJiB0aGlzLmlzVmFsaWQoKTtcbiAgfVxuXG4gIF91cGRhdGVBY3Rpb25zKCkge1xuICAgIGNvbnN0IHN1Ym1pdEJ0biA9IHRoaXMuX2dldFN1Ym1pdEJ0bigpO1xuICAgIGlmIChzdWJtaXRCdG4gIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuY2FuU3VibWl0KCkpIHtcbiAgICAgICAgdGhpcy5fZ2V0U3VibWl0QnRuKCkucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZ2V0U3VibWl0QnRuKCkuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXNldEJ0biA9IHRoaXMuX2dldFJlc2V0QnRuKCk7XG4gICAgaWYgKHJlc2V0QnRuICE9IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICAgIHJlc2V0QnRuLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2V0QnRuLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfdXBkYXRlQ2hpbGRyZW4od2l0aFZhbGlkYXRpb24pIHtcbiAgICBpZiAod2l0aFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB7fTtcbiAgICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICAgIHRoaXMucmVxdWVzdFZhbGlkYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlQWN0aW9uc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3VwZGF0ZUFjdGlvbnMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVBY3Rpb25zVGltZW91dCk7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnX3ZhbHVlcycpKSB7XG4gICAgICB0aGlzLmdldENvbnRyb2xzKCkuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICBjb250cm9sLnZhbHVlID0gZ2V0KHRoaXMuX3ZhbHVlcywgY29udHJvbC5pZCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4odGhpcy52YWxpZGF0ZU9uUmVuZGVyICYmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ192YWx1ZXMnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NjaGVtYScpKSk7XG4gIH1cblxuICBhc3luYyBnZXRVcGRhdGVDb21wbGV0ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5nZXRVcGRhdGVDb21wbGV0ZSgpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZ2V0Q29udHJvbHMoKS5tYXAoKGUpID0+IGUudXBkYXRlQ29tcGxldGUpKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gaHRtbGA8Zm9ybSBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBzY3JvbGxhYmxlOiB0aGlzLnNjcm9sbGFibGUgfSl9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiJHtjbGFzc01hcCh7IGNvbnRhaW5lcjogdHJ1ZSwgY29uZmlybTogdGhpcy5fY29uZmlybSB9KX1cIj5cbiAgICAgICAgJHt0aGlzLmhhc0hlYWRlciA9PT0gdHJ1ZVxuICAgICAgICAgID8gaHRtbGBcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgdGl0bGU6IHRydWUsIGNlbnRlcjogdGhpcy5oYXNIZWFkZXIgJiYgIXRoaXMuaGFzRm9vdGVyIH0pfVwiPlxuICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInRpdGxlXCI+PC9zbG90PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLWxlZnRcIj48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgJHt0aGlzLnJlYWRvbmx5ID09PSB0cnVlIHx8IHRoaXMuaGFzRm9vdGVyID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICA6IGh0bWxgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGd2LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uUmVzZXR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJnZW5lcmFsOnVwZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlJlc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9ndi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGd2LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uU3VibWl0fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY29kZTpjaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAudGl0bGU9XCIke3RoaXMuc3VibWl0TGFiZWx9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9ndi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiBgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGBcbiAgICAgICAgICA6ICcnfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPiR7dGhpcy5zY2hlbWEgIT0gbnVsbCA/IHRoaXMuX3JlbmRlclBhcnQoKSA6IGh0bWxgYH08L2Rpdj5cbiAgICAgICAgJHt0aGlzLmhhc0Zvb3RlciA9PT0gdHJ1ZSAmJiB0aGlzLnJlYWRvbmx5ICE9PSB0cnVlXG4gICAgICAgICAgPyBodG1sYFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxndi1idXR0b24gaWQ9XCJyZXNldFwiIG91dGxpbmVkIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uUmVzZXR9XCIgaWNvbj1cImdlbmVyYWw6dXBkYXRlXCIgdGl0bGU9XCJSZXNldFwiPlJlc2V0PC9ndi1idXR0b24+XG4gICAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uIGlkPVwic3VibWl0XCIgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25TdWJtaXR9XCIgaWNvbj1cImNvZGU6Y2hlY2tcIiAudGl0bGU9XCIke3RoaXMuc3VibWl0TGFiZWx9XCJcbiAgICAgICAgICAgICAgICAgICAgPiR7dGhpcy5zdWJtaXRMYWJlbH08L2d2LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGBcbiAgICAgICAgICA6ICcnfVxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPmA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgZW1wdHksXG4gICAgICAvLyBsYW5ndWFnZT1DU1NcbiAgICAgIGNzc2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgbWFyZ2luOiAwLjJyZW07XG4gICAgICAgICAgLS1iZ2M6IHZhcigtLWd2LXNjaGVtYS1mb3JtLS1iZ2MsICNmZmZmZmYpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybS5zY3JvbGxhYmxlIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgZmxleC1ncm93OiAxO1xuXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmdjKTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAvKiBmb3IgRmlyZWZveCAqL1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyLFxuICAgICAgICAuZm9vdGVyLFxuICAgICAgICAuY29udGVudCB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmdjKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgIC8qIGZvciBGaXJlZm94ICovXG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250ZW50ID4gZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybS5zY3JvbGxhYmxlIC5jb250ZW50IHtcbiAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm0uc2Nyb2xsYWJsZSAuY29udGVudCA+IGd2LXNjaGVtYS1mb3JtLWNvbnRyb2wge1xuICAgICAgICAgIG1heC13aWR0aDogNzc1cHg7XG4gICAgICAgICAgd2lkdGg6IDk1JTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIsXG4gICAgICAgIC5mb290ZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0NXB4O1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMjZweDtcbiAgICAgICAgICAtLWd2LWljb24tLWM6ICNiZmJmYmY7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb290ZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtLnNjcm9sbGFibGUgLmZvb3RlciB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9vdGVyIC5sZWZ0LFxuICAgICAgICAuZm9vdGVyIC5yaWdodCB7XG4gICAgICAgICAgbWF4LXdpZHRoOiA0MDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIgLmxlZnQsXG4gICAgICAgIC5mb290ZXIgLmxlZnQsXG4gICAgICAgIC5oZWFkZXIgLnJpZ2h0LFxuICAgICAgICAuZm9vdGVyIC5yaWdodCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC5yaWdodCxcbiAgICAgICAgLmZvb3RlciAucmlnaHQge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC50aXRsZSB7XG4gICAgICAgICAgY29sb3I6ICMyODQ0NGY7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIgLnRpdGxlLmNlbnRlciB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb25maXJtLWJveCB7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbmZpcm0tYm94X2FjdGlvbnMge1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb25maXJtIC5oZWFkZXIgLmxlZnQsXG4gICAgICAgIC5jb25maXJtIC5oZWFkZXIgLnJpZ2h0LFxuICAgICAgICAuY29uZmlybSAuZm9vdGVyIC5sZWZ0LFxuICAgICAgICAuY29uZmlybSAuZm9vdGVyIC5yaWdodCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXNjaGVtYS1mb3JtJywgR3ZTY2hlbWFGb3JtKTtcbiJdfQ==
|
package/src/organisms/gv-tabs.js
CHANGED
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { css, LitElement } from 'lit
|
|
17
|
-
import { html } from 'lit-html';
|
|
16
|
+
import { css, LitElement, html } from 'lit';
|
|
18
17
|
import '../molecules/gv-option';
|
|
19
18
|
import { dispatchCustomEvent } from '../lib/events';
|
|
20
19
|
/**
|
|
@@ -176,4 +175,4 @@ export class GvTabs extends LitElement {
|
|
|
176
175
|
|
|
177
176
|
}
|
|
178
177
|
window.customElements.define('gv-tabs', GvTabs);
|
|
179
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi10YWJzLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsIkd2VGFicyIsInByb3BlcnRpZXMiLCJvcHRpb25zIiwidHlwZSIsIkFycmF5IiwiX29wdGlvbnMiLCJhdHRyaWJ1dGUiLCJ2YWx1ZSIsIlN0cmluZyIsInJlZmxlY3QiLCJ2YWxpZGF0b3IiLCJGdW5jdGlvbiIsImRpc2FibGVkIiwiQm9vbGVhbiIsInNtYWxsIiwidHJ1bmNhdGUiLCJzdHlsZXMiLCJfZ2V0Q29udGVudCIsImNvbnRlbnQiLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvciIsImFzc2lnbmVkTm9kZXMiLCJmaXJzdFVwZGF0ZWQiLCJsZW5ndGgiLCJpZCIsImlzQXJyYXkiLCJtYXAiLCJvcHRpb24iLCJ0aXRsZSIsInVwZGF0ZWQiLCJmb3JFYWNoIiwiYyIsImNsYXNzTGlzdCIsInJlbW92ZSIsInRhcmdldCIsImFkZCIsIl9jaGFuZ2VUYWIiLCJmcm9tIiwidG8iLCJfb25DbGljayIsImRldGFpbCIsImZpbmQiLCJlIiwiY29udGFpbnMiLCJ0aGVuIiwiY2F0Y2giLCJfY29udGV4dHVhbE9wdGlvbnMiLCJsYWJlbCIsInN1YnN0cmluZyIsInJlbmRlciIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLFVBQWQsUUFBZ0MsYUFBaEM7QUFDQSxTQUFTQyxJQUFULFFBQXFCLFVBQXJCO0FBQ0EsT0FBTyx3QkFBUDtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QixFQUF3Q3BELE1BQXhDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgTGl0RWxlbWVudCB9IGZyb20gJ2xpdC1lbGVtZW50JztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQtaHRtbCc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1vcHRpb24nO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuXG4vKipcbiAqIFRhYnMgY29tcG9uZW50XG4gKlxuICogKiAjIyBEZXRhaWxzXG4gKiAqIFRoaXMgY29tcG9uZW50IHVzZSBndi1vcHRpb24gY29tcG9uZW50IHRvIGdlbmVyYXRlIHRhYnMuXG4gKlxuICogQGF0dHIge0FycmF5PGlkOiBzdHJpbmcgfCB7aWQsIHRpdGxlPywgaWNvbj8sIGFjdGl2ZT8sIGRlc2NyaXB0aW9uPywgbGFiZWw/fT59IG9wdGlvbnMgLSBBbiBhcnJheSBvZiBvcHRpb25zIGZvciBndi1vcHRpb24gc3ViIGNvbXBvbmVudFxuICogQHNsb3QgY29udGVudCAtIExpc3Qgb2YgZWxlbWVudHMgZm9yIHRhYnMgY29udGVudC4gU2hvdWxkIGhhdmUgYW4gaWQgcmVsYXRlZCB0byBvcHRpb25zLlxuICpcbiAqIEBhdHRyIHtTdHJpbmd9IHZhbHVlIC0gdGhlIG9wZW5lZCB0YWIgaWRcbiAqIEBhdHRyIHtCb29sZWFufSBkaXNhYmxlZCAtIHRydWUgaWYgZGlzYWJsZWRcbiAqIEBhdHRyIHtCb29sZWFufSBzbWFsbCAtIHRydWUgaWYgeW91IHdhbnQgZGlzcGxheSB0YWJzIGJlbG93IG9mIHRpdGxlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gdHJ1bmNhdGUgLSB0cnVlIGlmIHlvdSB3YW50IHRydW5jYXRlIHRhYnMgdGl0bGVcbiAqIEBhdHRyIHtGdW5jdGlvbn0gdmFsaWRhdG9yIC0gYSBmdW5jdGlvbiB0aGF0J3MgY2FsbHMgd2hlbiB1c2VyIGNoYW5nZSB0YWIsIHRoaXMgaXMgdXNlZnVsIHRvIHZhbGlkYXRlIHRhYiBjaGFuZ2UuXG4gKlxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtdGFicy1vcHRpb25zLS1tPTBdIC0gVGFicyBvcHRpb25zIG1hcmdpblxuICovXG5leHBvcnQgY2xhc3MgR3ZUYWJzIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3B0aW9uczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgX29wdGlvbnM6IHsgdHlwZTogQXJyYXksIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIHZhbHVlOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgdmFsaWRhdG9yOiB7IHR5cGU6IEZ1bmN0aW9uIH0sXG4gICAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBzbWFsbDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICB0cnVuY2F0ZTogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAvLyBsYW5ndWFnZT1jc3NcbiAgICAgIGNzc2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cblxuICAgICAgICA6OnNsb3R0ZWQoW3Nsb3Q9J2NvbnRlbnQnXSkge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDM1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgbGVmdDogLTk5OTlweDtcbiAgICAgICAgICB0b3A6IC05OTk5cHg7XG4gICAgICAgIH1cblxuICAgICAgICA6OnNsb3R0ZWQoW3Nsb3Q9J2NvbnRlbnQnXS5jdXJyZW50KSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9ucyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYnMge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgIC0tZ3Ytb3B0aW9uLS1iZHJzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3NtYWxsXSkgLnRhYnMge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbc21hbGxdKSBndi1vcHRpb24ge1xuICAgICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3Ytb3B0aW9uIHtcbiAgICAgICAgICBtYXJnaW46IHZhcigtLWd2LXRhYnMtb3B0aW9ucy0tbSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICA6OnNsb3R0ZWQoZ3YtYnV0dG9uKSB7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgX2dldENvbnRlbnQoKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdzbG90W25hbWU9XCJjb250ZW50XCJdJyk7XG4gICAgcmV0dXJuIGNvbnRlbnQuYXNzaWduZWROb2RlcygpO1xuICB9XG5cbiAgZmlyc3RVcGRhdGVkKCkge1xuICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgJiYgdGhpcy5vcHRpb25zICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm9wdGlvbnNbMF0uaWQ7XG4gICAgfVxuICB9XG5cbiAgc2V0IG9wdGlvbnMob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zICYmIEFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB7IGlkOiBvcHRpb24sIHRpdGxlOiBvcHRpb24gfTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24udGl0bGUgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB7IGlkOiBvcHRpb24uaWQsIHRpdGxlOiBvcHRpb24uaWQgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICB1cGRhdGVkKCkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLl9nZXRDb250ZW50KCk7XG4gICAgY29udGVudC5mb3JFYWNoKChjKSA9PiBjLmNsYXNzTGlzdC5yZW1vdmUoJ2N1cnJlbnQnKSk7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMucXVlcnlTZWxlY3RvcihgIyR7dGhpcy52YWx1ZX1gKTtcbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2N1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudFswXS5jbGFzc0xpc3QuYWRkKCdjdXJyZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgX2NoYW5nZVRhYihmcm9tLCBjb250ZW50LCB2YWx1ZSkge1xuICAgIGZyb20uY2xhc3NMaXN0LnJlbW92ZSgnY3VycmVudCcpO1xuICAgIGNvbnRlbnQuY2xhc3NMaXN0LmFkZCgnY3VycmVudCcpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2UnLCB7IHZhbHVlLCBmcm9tOiBmcm9tLmlkLCB0bzogY29udGVudC5pZCB9KTtcbiAgfVxuXG4gIF9vbkNsaWNrKHsgZGV0YWlsIH0pIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGZyb20gPSB0aGlzLl9nZXRDb250ZW50KCkuZmluZCgoZSkgPT4gZS5jbGFzc0xpc3QuY29udGFpbnMoJ2N1cnJlbnQnKSk7XG4gICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yKGAjJHtkZXRhaWwuaWR9YCk7XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3Ytb3B0aW9uJykudmFsdWUgPSBmcm9tLmlkO1xuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdG9yKHsgZnJvbTogZnJvbS5pZCwgdG86IGNvbnRlbnQuaWQgfSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VUYWIoZnJvbSwgY29udGVudCwgZGV0YWlsLmlkKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoKSA9PiB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jaGFuZ2VUYWIoZnJvbSwgY29udGVudCwgZGV0YWlsLmlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgX2NvbnRleHR1YWxPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLnRydW5jYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlICE9PSBvcHRpb24uaWQpIHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IG9wdGlvbi5sYWJlbCB8fCBvcHRpb24udGl0bGU7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ub3B0aW9uLCBsYWJlbDogbGFiZWwuc3Vic3RyaW5nKDAsIDEpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBodG1sYDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInRpdGxlXCIgY2xhc3M9XCJ0aXRsZVwiPjwvc2xvdD5cbiAgICAgICAgICA8Z3Ytb3B0aW9uIHNtYWxsIC5vcHRpb25zPVwiJHt0aGlzLl9jb250ZXh0dWFsT3B0aW9uc31cIiBAZ3Ytb3B0aW9uOnNlbGVjdD1cIiR7dGhpcy5fb25DbGlja31cIiAudmFsdWU9XCIke3RoaXMudmFsdWV9XCI+PC9ndi1vcHRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c2xvdCBuYW1lPVwiY29udGVudFwiPjwvc2xvdD5cbiAgICA8L2Rpdj5gO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXRhYnMnLCBHdlRhYnMpO1xuIl19
|
|
178
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi10YWJzLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsIkd2VGFicyIsInByb3BlcnRpZXMiLCJvcHRpb25zIiwidHlwZSIsIkFycmF5IiwiX29wdGlvbnMiLCJhdHRyaWJ1dGUiLCJ2YWx1ZSIsIlN0cmluZyIsInJlZmxlY3QiLCJ2YWxpZGF0b3IiLCJGdW5jdGlvbiIsImRpc2FibGVkIiwiQm9vbGVhbiIsInNtYWxsIiwidHJ1bmNhdGUiLCJzdHlsZXMiLCJfZ2V0Q29udGVudCIsImNvbnRlbnQiLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvciIsImFzc2lnbmVkTm9kZXMiLCJmaXJzdFVwZGF0ZWQiLCJsZW5ndGgiLCJpZCIsImlzQXJyYXkiLCJtYXAiLCJvcHRpb24iLCJ0aXRsZSIsInVwZGF0ZWQiLCJmb3JFYWNoIiwiYyIsImNsYXNzTGlzdCIsInJlbW92ZSIsInRhcmdldCIsImFkZCIsIl9jaGFuZ2VUYWIiLCJmcm9tIiwidG8iLCJfb25DbGljayIsImRldGFpbCIsImZpbmQiLCJlIiwiY29udGFpbnMiLCJ0aGVuIiwiY2F0Y2giLCJfY29udGV4dHVhbE9wdGlvbnMiLCJsYWJlbCIsInN1YnN0cmluZyIsInJlbmRlciIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLFVBQWQsRUFBMEJDLElBQTFCLFFBQXNDLEtBQXRDO0FBQ0EsT0FBTyx3QkFBUDtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Iiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgTGl0RWxlbWVudCwgaHRtbCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1vcHRpb24nO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuXG4vKipcbiAqIFRhYnMgY29tcG9uZW50XG4gKlxuICogKiAjIyBEZXRhaWxzXG4gKiAqIFRoaXMgY29tcG9uZW50IHVzZSBndi1vcHRpb24gY29tcG9uZW50IHRvIGdlbmVyYXRlIHRhYnMuXG4gKlxuICogQGF0dHIge0FycmF5PGlkOiBzdHJpbmcgfCB7aWQsIHRpdGxlPywgaWNvbj8sIGFjdGl2ZT8sIGRlc2NyaXB0aW9uPywgbGFiZWw/fT59IG9wdGlvbnMgLSBBbiBhcnJheSBvZiBvcHRpb25zIGZvciBndi1vcHRpb24gc3ViIGNvbXBvbmVudFxuICogQHNsb3QgY29udGVudCAtIExpc3Qgb2YgZWxlbWVudHMgZm9yIHRhYnMgY29udGVudC4gU2hvdWxkIGhhdmUgYW4gaWQgcmVsYXRlZCB0byBvcHRpb25zLlxuICpcbiAqIEBhdHRyIHtTdHJpbmd9IHZhbHVlIC0gdGhlIG9wZW5lZCB0YWIgaWRcbiAqIEBhdHRyIHtCb29sZWFufSBkaXNhYmxlZCAtIHRydWUgaWYgZGlzYWJsZWRcbiAqIEBhdHRyIHtCb29sZWFufSBzbWFsbCAtIHRydWUgaWYgeW91IHdhbnQgZGlzcGxheSB0YWJzIGJlbG93IG9mIHRpdGxlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gdHJ1bmNhdGUgLSB0cnVlIGlmIHlvdSB3YW50IHRydW5jYXRlIHRhYnMgdGl0bGVcbiAqIEBhdHRyIHtGdW5jdGlvbn0gdmFsaWRhdG9yIC0gYSBmdW5jdGlvbiB0aGF0J3MgY2FsbHMgd2hlbiB1c2VyIGNoYW5nZSB0YWIsIHRoaXMgaXMgdXNlZnVsIHRvIHZhbGlkYXRlIHRhYiBjaGFuZ2UuXG4gKlxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtdGFicy1vcHRpb25zLS1tPTBdIC0gVGFicyBvcHRpb25zIG1hcmdpblxuICovXG5leHBvcnQgY2xhc3MgR3ZUYWJzIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3B0aW9uczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgX29wdGlvbnM6IHsgdHlwZTogQXJyYXksIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIHZhbHVlOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgdmFsaWRhdG9yOiB7IHR5cGU6IEZ1bmN0aW9uIH0sXG4gICAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBzbWFsbDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICB0cnVuY2F0ZTogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAvLyBsYW5ndWFnZT1jc3NcbiAgICAgIGNzc2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cblxuICAgICAgICA6OnNsb3R0ZWQoW3Nsb3Q9J2NvbnRlbnQnXSkge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDM1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgbGVmdDogLTk5OTlweDtcbiAgICAgICAgICB0b3A6IC05OTk5cHg7XG4gICAgICAgIH1cblxuICAgICAgICA6OnNsb3R0ZWQoW3Nsb3Q9J2NvbnRlbnQnXS5jdXJyZW50KSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9ucyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYnMge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgIC0tZ3Ytb3B0aW9uLS1iZHJzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3NtYWxsXSkgLnRhYnMge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbc21hbGxdKSBndi1vcHRpb24ge1xuICAgICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3Ytb3B0aW9uIHtcbiAgICAgICAgICBtYXJnaW46IHZhcigtLWd2LXRhYnMtb3B0aW9ucy0tbSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICA6OnNsb3R0ZWQoZ3YtYnV0dG9uKSB7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgX2dldENvbnRlbnQoKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdzbG90W25hbWU9XCJjb250ZW50XCJdJyk7XG4gICAgcmV0dXJuIGNvbnRlbnQuYXNzaWduZWROb2RlcygpO1xuICB9XG5cbiAgZmlyc3RVcGRhdGVkKCkge1xuICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgJiYgdGhpcy5vcHRpb25zICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm9wdGlvbnNbMF0uaWQ7XG4gICAgfVxuICB9XG5cbiAgc2V0IG9wdGlvbnMob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zICYmIEFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB7IGlkOiBvcHRpb24sIHRpdGxlOiBvcHRpb24gfTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24udGl0bGUgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB7IGlkOiBvcHRpb24uaWQsIHRpdGxlOiBvcHRpb24uaWQgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICB1cGRhdGVkKCkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLl9nZXRDb250ZW50KCk7XG4gICAgY29udGVudC5mb3JFYWNoKChjKSA9PiBjLmNsYXNzTGlzdC5yZW1vdmUoJ2N1cnJlbnQnKSk7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMucXVlcnlTZWxlY3RvcihgIyR7dGhpcy52YWx1ZX1gKTtcbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2N1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudFswXS5jbGFzc0xpc3QuYWRkKCdjdXJyZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgX2NoYW5nZVRhYihmcm9tLCBjb250ZW50LCB2YWx1ZSkge1xuICAgIGZyb20uY2xhc3NMaXN0LnJlbW92ZSgnY3VycmVudCcpO1xuICAgIGNvbnRlbnQuY2xhc3NMaXN0LmFkZCgnY3VycmVudCcpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2UnLCB7IHZhbHVlLCBmcm9tOiBmcm9tLmlkLCB0bzogY29udGVudC5pZCB9KTtcbiAgfVxuXG4gIF9vbkNsaWNrKHsgZGV0YWlsIH0pIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGZyb20gPSB0aGlzLl9nZXRDb250ZW50KCkuZmluZCgoZSkgPT4gZS5jbGFzc0xpc3QuY29udGFpbnMoJ2N1cnJlbnQnKSk7XG4gICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yKGAjJHtkZXRhaWwuaWR9YCk7XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3Ytb3B0aW9uJykudmFsdWUgPSBmcm9tLmlkO1xuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdG9yKHsgZnJvbTogZnJvbS5pZCwgdG86IGNvbnRlbnQuaWQgfSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VUYWIoZnJvbSwgY29udGVudCwgZGV0YWlsLmlkKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoKSA9PiB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jaGFuZ2VUYWIoZnJvbSwgY29udGVudCwgZGV0YWlsLmlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgX2NvbnRleHR1YWxPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLnRydW5jYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlICE9PSBvcHRpb24uaWQpIHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IG9wdGlvbi5sYWJlbCB8fCBvcHRpb24udGl0bGU7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ub3B0aW9uLCBsYWJlbDogbGFiZWwuc3Vic3RyaW5nKDAsIDEpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBodG1sYDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInRpdGxlXCIgY2xhc3M9XCJ0aXRsZVwiPjwvc2xvdD5cbiAgICAgICAgICA8Z3Ytb3B0aW9uIHNtYWxsIC5vcHRpb25zPVwiJHt0aGlzLl9jb250ZXh0dWFsT3B0aW9uc31cIiBAZ3Ytb3B0aW9uOnNlbGVjdD1cIiR7dGhpcy5fb25DbGlja31cIiAudmFsdWU9XCIke3RoaXMudmFsdWV9XCI+PC9ndi1vcHRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c2xvdCBuYW1lPVwiY29udGVudFwiPjwvc2xvdD5cbiAgICA8L2Rpdj5gO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXRhYnMnLCBHdlRhYnMpO1xuIl19
|