@copilotkitnext/angular 0.0.7 → 0.0.9-alpha.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/README.md +172 -0
- package/dist/README.md +172 -0
- package/dist/components/chat/copilot-chat.component.d.ts +3 -2
- package/dist/esm2022/components/chat/copilot-chat-input.component.mjs +2 -2
- package/dist/esm2022/components/chat/copilot-chat.component.mjs +9 -3
- package/dist/esm2022/core/copilotkit.service.mjs +18 -21
- package/dist/esm2022/directives/copilotkit-agent.directive.mjs +8 -4
- package/dist/esm2022/directives/copilotkit-config.directive.mjs +1 -1
- package/dist/esm2022/utils/agent.utils.mjs +10 -10
- package/dist/fesm2022/copilotkitnext-angular.mjs +40 -36
- package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -5,6 +5,7 @@ import { CopilotChatConfigurationService } from "../../core/chat-configuration/c
|
|
|
5
5
|
import { COPILOT_CHAT_INITIAL_CONFIG, } from "../../core/chat-configuration/chat-configuration.types";
|
|
6
6
|
import { watchAgentWith } from "../../utils/agent.utils";
|
|
7
7
|
import { DEFAULT_AGENT_ID, randomUUID } from "@copilotkitnext/shared";
|
|
8
|
+
import { ProxiedCopilotRuntimeAgent } from "@copilotkitnext/core";
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "../../core/chat-configuration/chat-configuration.service";
|
|
10
11
|
/**
|
|
@@ -22,6 +23,7 @@ export class CopilotChatComponent {
|
|
|
22
23
|
injector;
|
|
23
24
|
agentId;
|
|
24
25
|
threadId;
|
|
26
|
+
inputComponent;
|
|
25
27
|
constructor(chatConfig, cdr, injector) {
|
|
26
28
|
this.chatConfig = chatConfig;
|
|
27
29
|
this.cdr = cdr;
|
|
@@ -38,7 +40,7 @@ export class CopilotChatComponent {
|
|
|
38
40
|
a.threadId = this.threadId || this.generatedThreadId;
|
|
39
41
|
if (!this.hasConnectedOnce) {
|
|
40
42
|
this.hasConnectedOnce = true;
|
|
41
|
-
if (
|
|
43
|
+
if (a instanceof ProxiedCopilotRuntimeAgent) {
|
|
42
44
|
this.connectToAgent(a);
|
|
43
45
|
}
|
|
44
46
|
else {
|
|
@@ -157,7 +159,7 @@ export class CopilotChatComponent {
|
|
|
157
159
|
this.hasConnectedOnce = false;
|
|
158
160
|
}
|
|
159
161
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatComponent, deps: [{ token: i1.CopilotChatConfigurationService, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
160
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatComponent, isStandalone: true, selector: "copilot-chat", inputs: { agentId: "agentId", threadId: "threadId" }, providers: [
|
|
162
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatComponent, isStandalone: true, selector: "copilot-chat", inputs: { agentId: "agentId", threadId: "threadId", inputComponent: "inputComponent" }, providers: [
|
|
161
163
|
{
|
|
162
164
|
provide: CopilotChatConfigurationService,
|
|
163
165
|
deps: [
|
|
@@ -172,6 +174,7 @@ export class CopilotChatComponent {
|
|
|
172
174
|
[autoScroll]="true"
|
|
173
175
|
[messageViewClass]="'w-full'"
|
|
174
176
|
[showCursor]="showCursor()"
|
|
177
|
+
[inputComponent]="inputComponent"
|
|
175
178
|
>
|
|
176
179
|
</copilot-chat-view>
|
|
177
180
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CopilotChatViewComponent, selector: "copilot-chat-view", inputs: ["messages", "autoScroll", "showCursor", "messageViewComponent", "messageViewTemplate", "messageViewClass", "scrollViewComponent", "scrollViewTemplate", "scrollViewClass", "scrollToBottomButtonComponent", "scrollToBottomButtonTemplate", "scrollToBottomButtonClass", "inputComponent", "inputTemplate", "inputContainerComponent", "inputContainerTemplate", "inputContainerClass", "featherComponent", "featherTemplate", "featherClass", "disclaimerComponent", "disclaimerTemplate", "disclaimerClass", "disclaimerText"], outputs: ["assistantMessageThumbsUp", "assistantMessageThumbsDown", "assistantMessageReadAloud", "assistantMessageRegenerate", "userMessageCopy", "userMessageEdit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
@@ -200,6 +203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
200
203
|
[autoScroll]="true"
|
|
201
204
|
[messageViewClass]="'w-full'"
|
|
202
205
|
[showCursor]="showCursor()"
|
|
206
|
+
[inputComponent]="inputComponent"
|
|
203
207
|
>
|
|
204
208
|
</copilot-chat-view>
|
|
205
209
|
`,
|
|
@@ -210,5 +214,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
210
214
|
type: Input
|
|
211
215
|
}], threadId: [{
|
|
212
216
|
type: Input
|
|
217
|
+
}], inputComponent: [{
|
|
218
|
+
type: Input
|
|
213
219
|
}] } });
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFJTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEVBSU4sUUFBUSxFQUNSLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDM0csT0FBTyxFQUNMLDJCQUEyQixHQUU1QixNQUFNLHdEQUF3RCxDQUFDO0FBQ2hFLE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUd0RTs7Ozs7Ozs7R0FRRztBQThCSCxNQUFNLE9BQU8sb0JBQW9CO0lBS1Q7SUFDWjtJQUNBO0lBTkQsT0FBTyxDQUFVO0lBQ2pCLFFBQVEsQ0FBVTtJQUUzQixZQUNzQixVQUFrRCxFQUM5RCxHQUFzQixFQUN0QixRQUFrQjtRQUZOLGVBQVUsR0FBVixVQUFVLENBQXdDO1FBQzlELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFMUIsd0VBQXdFO1FBQ3hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUM7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU5Qiw0Q0FBNEM7UUFDNUMsTUFBTSxDQUNKLEdB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QUN4QyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksK0JBQStCLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQzt5QkFDcEU7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7OztHQVFUO2lCQUNGOzswQkFNSSxRQUFRO2dHQUpGLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgc2lnbmFsLFxuICBlZmZlY3QsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBTaWduYWwsXG4gIEluamVjdG9yLFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtdmlldy5jb21wb25lbnRcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9jaGF0LWNvbmZpZ3VyYXRpb24vY2hhdC1jb25maWd1cmF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7XG4gIENPUElMT1RfQ0hBVF9JTklUSUFMX0NPTkZJRyxcbiAgQ29waWxvdENoYXRDb25maWd1cmF0aW9uLFxufSBmcm9tIFwiLi4vLi4vY29yZS9jaGF0LWNvbmZpZ3VyYXRpb24vY2hhdC1jb25maWd1cmF0aW9uLnR5cGVzXCI7XG5pbXBvcnQgeyB3YXRjaEFnZW50LCB3YXRjaEFnZW50V2l0aCB9IGZyb20gXCIuLi8uLi91dGlscy9hZ2VudC51dGlsc1wiO1xuaW1wb3J0IHsgREVGQVVMVF9BR0VOVF9JRCwgcmFuZG9tVVVJRCB9IGZyb20gXCJAY29waWxvdGtpdG5leHQvc2hhcmVkXCI7XG5pbXBvcnQgeyBNZXNzYWdlLCBBYnN0cmFjdEFnZW50IH0gZnJvbSBcIkBhZy11aS9jbGllbnRcIjtcblxuLyoqXG4gKiBDb3BpbG90Q2hhdCBjb21wb25lbnQgLSBBbmd1bGFyIGVxdWl2YWxlbnQgb2YgUmVhY3QncyA8Q29waWxvdENoYXQ+XG4gKiBQcm92aWRlcyBhIGNvbXBsZXRlIGNoYXQgaW50ZXJmYWNlIHRoYXQgd2lyZXMgYW4gYWdlbnQgdG8gdGhlIGNoYXQgdmlld1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8Y29waWxvdC1jaGF0IFthZ2VudElkXT1cIidkZWZhdWx0J1wiIFt0aHJlYWRJZF09XCInYWJjMTIzJ1wiPjwvY29waWxvdC1jaGF0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXRcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ29waWxvdENoYXRWaWV3Q29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICBkZXBzOiBbXG4gICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2VdLFxuICAgICAgICBbbmV3IE9wdGlvbmFsKCksIENPUElMT1RfQ0hBVF9JTklUSUFMX0NPTkZJR10sXG4gICAgICBdLFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBwYXJlbnQ6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UgfCBudWxsLFxuICAgICAgICBpbml0aWFsOiBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24gfCBudWxsXG4gICAgICApID0+IHBhcmVudCA/PyBuZXcgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZShpbml0aWFsID8/IG51bGwpLFxuICAgIH0sXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGNvcGlsb3QtY2hhdC12aWV3XG4gICAgICBbbWVzc2FnZXNdPVwibWVzc2FnZXMoKVwiXG4gICAgICBbYXV0b1Njcm9sbF09XCJ0cnVlXCJcbiAgICAgIFttZXNzYWdlVmlld0NsYXNzXT1cIid3LWZ1bGwnXCJcbiAgICAgIFtzaG93Q3Vyc29yXT1cInNob3dDdXJzb3IoKVwiXG4gICAgPlxuICAgIDwvY29waWxvdC1jaGF0LXZpZXc+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBhZ2VudElkPzogc3RyaW5nO1xuICBASW5wdXQoKSB0aHJlYWRJZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNoYXRDb25maWc6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UgfCBudWxsLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICAvLyBDcmVhdGUgaW5pdGlhbCB3YXRjaGVyIG9uY2UgKGNvbnN0cnVjdG9yIGlzIGEgc2FmZSBpbmplY3Rpb24gY29udGV4dClcbiAgICBjb25zdCBpbml0aWFsSWQgPSB0aGlzLmFnZW50SWQgPz8gREVGQVVMVF9BR0VOVF9JRDtcbiAgICB0aGlzLmNyZWF0ZVdhdGNoZXIoaW5pdGlhbElkKTtcblxuICAgIC8vIENvbm5lY3Qgb25jZSB3aGVuIGFnZW50IGJlY29tZXMgYXZhaWxhYmxlXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBhID0gdGhpcy5hZ2VudCgpO1xuICAgICAgICBpZiAoIWEpIHJldHVybjtcbiAgICAgICAgLy8gQXBwbHkgdGhyZWFkIGlkIHdoZW4gYWdlbnQgaXMgYXZhaWxhYmxlXG4gICAgICAgIGEudGhyZWFkSWQgPSB0aGlzLnRocmVhZElkIHx8IHRoaXMuZ2VuZXJhdGVkVGhyZWFkSWQ7XG4gICAgICAgIGlmICghdGhpcy5oYXNDb25uZWN0ZWRPbmNlKSB7XG4gICAgICAgICAgdGhpcy5oYXNDb25uZWN0ZWRPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoJ2lzQ29waWxvdEtpdEFnZW50JyBpbiAoYSBhcyBhbnkpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbm5lY3RUb0FnZW50KGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOb3QgYSBDb3BpbG90S2l0IGFnZW50OiBlbnN1cmUgVUkgbm90IHNob3dpbmcgbG9hZGluZyBjdXJzb3JcbiAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIFNpZ25hbHMgZnJvbSB3YXRjaEFnZW50IC0gZGVzdHJ1Y3R1cmVkIGZyb20gd2F0Y2hlclxuICBwcm90ZWN0ZWQgYWdlbnQhOiBTaWduYWw8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD47XG4gIHByb3RlY3RlZCBtZXNzYWdlcyE6IFNpZ25hbDxNZXNzYWdlW10+O1xuICBwcm90ZWN0ZWQgaXNSdW5uaW5nITogU2lnbmFsPGJvb2xlYW4+O1xuICBwcm90ZWN0ZWQgc2hvd0N1cnNvciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZWRUaHJlYWRJZDogc3RyaW5nID0gcmFuZG9tVVVJRCgpO1xuICBwcml2YXRlIHdhdGNoZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiB3YXRjaEFnZW50PjtcbiAgcHJpdmF0ZSBoYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cENoYXRIYW5kbGVycygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wiYWdlbnRJZFwiXSAmJiAhY2hhbmdlc1tcImFnZW50SWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IG5ld0lkID0gdGhpcy5hZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gICAgICB0aGlzLmNyZWF0ZVdhdGNoZXIobmV3SWQpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1tcInRocmVhZElkXCJdICYmICFjaGFuZ2VzW1widGhyZWFkSWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmFnZW50KCk7XG4gICAgICBpZiAoYSkge1xuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCB8fCB0aGlzLmdlbmVyYXRlZFRocmVhZElkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvQWdlbnQoYWdlbnQ6IEFic3RyYWN0QWdlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWFnZW50KSByZXR1cm47XG5cbiAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KHRydWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFnZW50LnJ1bkFnZW50KFxuICAgICAgICB7IGZvcndhcmRlZFByb3BzOiB7IF9fY29waWxvdGtpdENvbm5lY3Q6IHRydWUgfSB9LFxuICAgICAgICB7XG4gICAgICAgICAgb25UZXh0TWVzc2FnZVN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ub29sQ2FsbFN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvbm5lY3QgdG8gYWdlbnQ6XCIsIGVycm9yKTtcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENoYXRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hhdENvbmZpZykgcmV0dXJuO1xuXG4gICAgLy8gSGFuZGxlIGlucHV0IHN1Ym1pc3Npb25cbiAgICB0aGlzLmNoYXRDb25maWcuc2V0U3VibWl0SGFuZGxlcihhc3luYyAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgYWdlbnQgPSB0aGlzLmFnZW50KCk7XG4gICAgICBpZiAoIWFnZW50IHx8ICF2YWx1ZS50cmltKCkpIHJldHVybjtcblxuICAgICAgLy8gQWRkIHVzZXIgbWVzc2FnZVxuICAgICAgY29uc3QgdXNlck1lc3NhZ2U6IE1lc3NhZ2UgPSB7XG4gICAgICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgICAgIHJvbGU6IFwidXNlclwiLFxuICAgICAgICBjb250ZW50OiB2YWx1ZSxcbiAgICAgIH07XG4gICAgICBhZ2VudC5hZGRNZXNzYWdlKHVzZXJNZXNzYWdlKTtcblxuICAgICAgLy8gQ2xlYXIgdGhlIGlucHV0XG4gICAgICB0aGlzLmNoYXRDb25maWchLnNldElucHV0VmFsdWUoXCJcIik7XG5cbiAgICAgIC8vIFNob3cgY3Vyc29yIHdoaWxlIHByb2Nlc3NpbmdcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgLy8gUnVuIHRoZSBhZ2VudCB3aXRoIG5hbWVkIHN1YnNjcmliZXIgY2FsbGJhY2tzXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhZ2VudC5ydW5BZ2VudChcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvblRleHRNZXNzYWdlU3RhcnRFdmVudDogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVG9vbENhbGxTdGFydEV2ZW50OiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBZ2VudCBydW4gZXJyb3I6XCIsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEhhbmRsZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzIChvcHRpb25hbClcbiAgICB0aGlzLmNoYXRDb25maWcuc2V0Q2hhbmdlSGFuZGxlcigoKSA9PiB7XG4gICAgICAvLyBLZWVwIGlucHV0IHN0YXRlIGlmIG5lZWRlZFxuICAgIH0pO1xuICB9XG5cblxuICBwcml2YXRlIGNyZWF0ZVdhdGNoZXIoZGVzaXJlZEFnZW50SWQ6IHN0cmluZykge1xuICAgIC8vIFRlYXIgZG93biBwcmV2aW91cyB3YXRjaGVyIGlmIGl0IGV4aXN0cyB0byBwcmV2ZW50IHBhcmFsbGVsIHN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLndhdGNoZXI/LnVuc3Vic2NyaWJlKCk7XG4gICAgXG4gICAgLy8gQ3JlYXRlIG5ldyB3YXRjaGVyIHVzaW5nIHRoZSBlcmdvbm9taWMgaGVscGVyXG4gICAgY29uc3QgdyA9IHdhdGNoQWdlbnRXaXRoKHRoaXMuaW5qZWN0b3IsIHsgYWdlbnRJZDogZGVzaXJlZEFnZW50SWQgfSk7XG4gICAgXG4gICAgLy8gRGVzdHJ1Y3R1cmUgc2lnbmFscyBkaXJlY3RseSB0byBjbGFzcyBmaWVsZHNcbiAgICB0aGlzLmFnZW50ID0gdy5hZ2VudDtcbiAgICB0aGlzLm1lc3NhZ2VzID0gdy5tZXNzYWdlcztcbiAgICB0aGlzLmlzUnVubmluZyA9IHcuaXNSdW5uaW5nO1xuICAgIHRoaXMud2F0Y2hlciA9IHc7XG4gICAgXG4gICAgLy8gUmVzZXQgY29ubmVjdGlvbiBzdGF0ZSBmb3IgbmV3IGFnZW50XG4gICAgdGhpcy5oYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFJTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEVBSU4sUUFBUSxFQUNSLFFBQVEsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDM0csT0FBTyxFQUNMLDJCQUEyQixHQUU1QixNQUFNLHdEQUF3RCxDQUFDO0FBQ2hFLE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUVsRTs7Ozs7Ozs7R0FRRztBQStCSCxNQUFNLE9BQU8sb0JBQW9CO0lBTVQ7SUFDWjtJQUNBO0lBUEQsT0FBTyxDQUFVO0lBQ2pCLFFBQVEsQ0FBVTtJQUNsQixjQUFjLENBQWE7SUFFcEMsWUFDc0IsVUFBa0QsRUFDOUQsR0FBc0IsRUFDdEIsUUFBa0I7UUFGTixlQUFVLEdBQVYsVUFBVSxDQUF3QztRQUM5RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRTFCLHdFQUF3RTtRQUN4RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUIsNENBQTRDO1FBQzVDLE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUM7Z0JBQUUsT0FBTztZQUNmLDBDQUEwQztZQUMxQyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFlBQVksMEJBQTBCLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLCtEQUErRDtvQkFDL0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsc0RBQXNEO0lBQzVDLEtBQUssQ0FBcUM7SUFDMUMsUUFBUSxDQUFxQjtJQUM3QixTQUFTLENBQW1CO0lBQzVCLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFdEMsaUJBQWlCLEdBQVcsVUFBVSxFQUFFLENBQUM7SUFDekMsT0FBTyxDQUFpQztJQUN4QyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFakMsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQztZQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1RCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDTixDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBb0I7UUFDL0MsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRW5CLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUNsQixFQUFFLGNBQWMsRUFBRSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQ2pEO2dCQUNFLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzNCLENBQUM7Z0JBQ0Qsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO29CQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQzthQUNGLENBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUU3QiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUFFLE9BQU87WUFFcEMsbUJBQW1CO1lBQ25CLE1BQU0sV0FBVyxHQUFZO2dCQUMzQixFQUFFLEVBQUUsVUFBVSxFQUFFO2dCQUNoQixJQUFJLEVBQUUsTUFBTTtnQkFDWixPQUFPLEVBQUUsS0FBSzthQUNmLENBQUM7WUFDRixLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTlCLGtCQUFrQjtZQUNsQixJQUFJLENBQUMsVUFBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVuQywrQkFBK0I7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV4QixnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDO2dCQUNILE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FDbEIsRUFBRSxFQUNGO29CQUNFLHVCQUF1QixFQUFFLEdBQUcsRUFBRTt3QkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQzNCLENBQUM7b0JBQ0Qsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO3dCQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDM0IsQ0FBQztpQkFDRixDQUNGLENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNDLENBQUM7b0JBQVMsQ0FBQztnQkFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsNkJBQTZCO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGFBQWEsQ0FBQyxjQUFzQjtRQUMxQyw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUU1QixnREFBZ0Q7UUFDaEQsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUVyRSwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFFakIsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQzt3R0EvSlUsb0JBQW9COzRGQUFwQixvQkFBb0IsbUpBeEJwQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSwrQkFBK0I7Z0JBQ3hDLElBQUksRUFBRTtvQkFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSwrQkFBK0IsQ0FBQztvQkFDakUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDJCQUEyQixDQUFDO2lCQUM5QztnQkFDRCxVQUFVLEVBQUUsQ0FDVixNQUE4QyxFQUM5QyxPQUF3QyxFQUN4QyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksK0JBQStCLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQzthQUNwRTtTQUNGLCtDQUNTOzs7Ozs7Ozs7R0FTVCwyREF6QlMsWUFBWSwrQkFBRSx3QkFBd0I7OzRGQTJCckMsb0JBQW9CO2tCQTlCaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSx3QkFBd0IsQ0FBQztvQkFDakQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLCtCQUErQjs0QkFDeEMsSUFBSSxFQUFFO2dDQUNKLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLCtCQUErQixDQUFDO2dDQUNqRSxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsMkJBQTJCLENBQUM7NkJBQzlDOzRCQUNELFVBQVUsRUFBRSxDQUNWLE1BQThDLEVBQzlDLE9BQXdDLEVBQ3hDLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSwrQkFBK0IsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO3lCQUNwRTtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO2lCQUNGOzswQkFPSSxRQUFRO2dHQUxGLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBzaWduYWwsXG4gIGVmZmVjdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFNpZ25hbCxcbiAgSW5qZWN0b3IsXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbiAgVHlwZSxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Vmlld0NvbXBvbmVudCB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC12aWV3LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHLFxuICBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24sXG59IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24udHlwZXNcIjtcbmltcG9ydCB7IHdhdGNoQWdlbnQsIHdhdGNoQWdlbnRXaXRoIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2FnZW50LnV0aWxzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0FHRU5UX0lELCByYW5kb21VVUlEIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9zaGFyZWRcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuaW1wb3J0IHsgUHJveGllZENvcGlsb3RSdW50aW1lQWdlbnQgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcblxuLyoqXG4gKiBDb3BpbG90Q2hhdCBjb21wb25lbnQgLSBBbmd1bGFyIGVxdWl2YWxlbnQgb2YgUmVhY3QncyA8Q29waWxvdENoYXQ+XG4gKiBQcm92aWRlcyBhIGNvbXBsZXRlIGNoYXQgaW50ZXJmYWNlIHRoYXQgd2lyZXMgYW4gYWdlbnQgdG8gdGhlIGNoYXQgdmlld1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8Y29waWxvdC1jaGF0IFthZ2VudElkXT1cIidkZWZhdWx0J1wiIFt0aHJlYWRJZF09XCInYWJjMTIzJ1wiPjwvY29waWxvdC1jaGF0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXRcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ29waWxvdENoYXRWaWV3Q29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICBkZXBzOiBbXG4gICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2VdLFxuICAgICAgICBbbmV3IE9wdGlvbmFsKCksIENPUElMT1RfQ0hBVF9JTklUSUFMX0NPTkZJR10sXG4gICAgICBdLFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBwYXJlbnQ6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UgfCBudWxsLFxuICAgICAgICBpbml0aWFsOiBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24gfCBudWxsXG4gICAgICApID0+IHBhcmVudCA/PyBuZXcgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZShpbml0aWFsID8/IG51bGwpLFxuICAgIH0sXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGNvcGlsb3QtY2hhdC12aWV3XG4gICAgICBbbWVzc2FnZXNdPVwibWVzc2FnZXMoKVwiXG4gICAgICBbYXV0b1Njcm9sbF09XCJ0cnVlXCJcbiAgICAgIFttZXNzYWdlVmlld0NsYXNzXT1cIid3LWZ1bGwnXCJcbiAgICAgIFtzaG93Q3Vyc29yXT1cInNob3dDdXJzb3IoKVwiXG4gICAgICBbaW5wdXRDb21wb25lbnRdPVwiaW5wdXRDb21wb25lbnRcIlxuICAgID5cbiAgICA8L2NvcGlsb3QtY2hhdC12aWV3PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgYWdlbnRJZD86IHN0cmluZztcbiAgQElucHV0KCkgdGhyZWFkSWQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlucHV0Q29tcG9uZW50PzogVHlwZTxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY2hhdENvbmZpZzogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB8IG51bGwsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIC8vIENyZWF0ZSBpbml0aWFsIHdhdGNoZXIgb25jZSAoY29uc3RydWN0b3IgaXMgYSBzYWZlIGluamVjdGlvbiBjb250ZXh0KVxuICAgIGNvbnN0IGluaXRpYWxJZCA9IHRoaXMuYWdlbnRJZCA/PyBERUZBVUxUX0FHRU5UX0lEO1xuICAgIHRoaXMuY3JlYXRlV2F0Y2hlcihpbml0aWFsSWQpO1xuXG4gICAgLy8gQ29ubmVjdCBvbmNlIHdoZW4gYWdlbnQgYmVjb21lcyBhdmFpbGFibGVcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLmFnZW50KCk7XG4gICAgICAgIGlmICghYSkgcmV0dXJuO1xuICAgICAgICAvLyBBcHBseSB0aHJlYWQgaWQgd2hlbiBhZ2VudCBpcyBhdmFpbGFibGVcbiAgICAgICAgYS50aHJlYWRJZCA9IHRoaXMudGhyZWFkSWQgfHwgdGhpcy5nZW5lcmF0ZWRUaHJlYWRJZDtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0Nvbm5lY3RlZE9uY2UpIHtcbiAgICAgICAgICB0aGlzLmhhc0Nvbm5lY3RlZE9uY2UgPSB0cnVlO1xuICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgUHJveGllZENvcGlsb3RSdW50aW1lQWdlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdFRvQWdlbnQoYSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vdCBhIENvcGlsb3RLaXQgYWdlbnQ6IGVuc3VyZSBVSSBub3Qgc2hvd2luZyBsb2FkaW5nIGN1cnNvclxuICAgICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgLy8gU2lnbmFscyBmcm9tIHdhdGNoQWdlbnQgLSBkZXN0cnVjdHVyZWQgZnJvbSB3YXRjaGVyXG4gIHByb3RlY3RlZCBhZ2VudCE6IFNpZ25hbDxBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkPjtcbiAgcHJvdGVjdGVkIG1lc3NhZ2VzITogU2lnbmFsPE1lc3NhZ2VbXT47XG4gIHByb3RlY3RlZCBpc1J1bm5pbmchOiBTaWduYWw8Ym9vbGVhbj47XG4gIHByb3RlY3RlZCBzaG93Q3Vyc29yID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIGdlbmVyYXRlZFRocmVhZElkOiBzdHJpbmcgPSByYW5kb21VVUlEKCk7XG4gIHByaXZhdGUgd2F0Y2hlcj86IFJldHVyblR5cGU8dHlwZW9mIHdhdGNoQWdlbnQ+O1xuICBwcml2YXRlIGhhc0Nvbm5lY3RlZE9uY2UgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwQ2hhdEhhbmRsZXJzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbXCJhZ2VudElkXCJdICYmICFjaGFuZ2VzW1wiYWdlbnRJZFwiXS5maXJzdENoYW5nZSkge1xuICAgICAgY29uc3QgbmV3SWQgPSB0aGlzLmFnZW50SWQgPz8gREVGQVVMVF9BR0VOVF9JRDtcbiAgICAgIHRoaXMuY3JlYXRlV2F0Y2hlcihuZXdJZCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzW1widGhyZWFkSWRcIl0gJiYgIWNoYW5nZXNbXCJ0aHJlYWRJZFwiXS5maXJzdENoYW5nZSkge1xuICAgICAgY29uc3QgYSA9IHRoaXMuYWdlbnQoKTtcbiAgICAgIGlmIChhKSB7XG4gICAgICAgIGEudGhyZWFkSWQgPSB0aGlzLnRocmVhZElkIHx8IHRoaXMuZ2VuZXJhdGVkVGhyZWFkSWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0VG9BZ2VudChhZ2VudDogQWJzdHJhY3RBZ2VudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghYWdlbnQpIHJldHVybjtcblxuICAgIHRoaXMuc2hvd0N1cnNvci5zZXQodHJ1ZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgYWdlbnQucnVuQWdlbnQoXG4gICAgICAgIHsgZm9yd2FyZGVkUHJvcHM6IHsgX19jb3BpbG90a2l0Q29ubmVjdDogdHJ1ZSB9IH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvblRleHRNZXNzYWdlU3RhcnRFdmVudDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvblRvb2xDYWxsU3RhcnRFdmVudDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29ubmVjdCB0byBhZ2VudDpcIiwgZXJyb3IpO1xuICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ2hhdEhhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaGF0Q29uZmlnKSByZXR1cm47XG5cbiAgICAvLyBIYW5kbGUgaW5wdXQgc3VibWlzc2lvblxuICAgIHRoaXMuY2hhdENvbmZpZy5zZXRTdWJtaXRIYW5kbGVyKGFzeW5jICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBhZ2VudCA9IHRoaXMuYWdlbnQoKTtcbiAgICAgIGlmICghYWdlbnQgfHwgIXZhbHVlLnRyaW0oKSkgcmV0dXJuO1xuXG4gICAgICAvLyBBZGQgdXNlciBtZXNzYWdlXG4gICAgICBjb25zdCB1c2VyTWVzc2FnZTogTWVzc2FnZSA9IHtcbiAgICAgICAgaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgICAgcm9sZTogXCJ1c2VyXCIsXG4gICAgICAgIGNvbnRlbnQ6IHZhbHVlLFxuICAgICAgfTtcbiAgICAgIGFnZW50LmFkZE1lc3NhZ2UodXNlck1lc3NhZ2UpO1xuXG4gICAgICAvLyBDbGVhciB0aGUgaW5wdXRcbiAgICAgIHRoaXMuY2hhdENvbmZpZyEuc2V0SW5wdXRWYWx1ZShcIlwiKTtcblxuICAgICAgLy8gU2hvdyBjdXJzb3Igd2hpbGUgcHJvY2Vzc2luZ1xuICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAvLyBSdW4gdGhlIGFnZW50IHdpdGggbmFtZWQgc3Vic2NyaWJlciBjYWxsYmFja3NcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFnZW50LnJ1bkFnZW50KFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9uVGV4dE1lc3NhZ2VTdGFydEV2ZW50OiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Ub29sQ2FsbFN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkFnZW50IHJ1biBlcnJvcjpcIiwgZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gSGFuZGxlIGlucHV0IHZhbHVlIGNoYW5nZXMgKG9wdGlvbmFsKVxuICAgIHRoaXMuY2hhdENvbmZpZy5zZXRDaGFuZ2VIYW5kbGVyKCgpID0+IHtcbiAgICAgIC8vIEtlZXAgaW5wdXQgc3RhdGUgaWYgbmVlZGVkXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdhdGNoZXIoZGVzaXJlZEFnZW50SWQ6IHN0cmluZykge1xuICAgIC8vIFRlYXIgZG93biBwcmV2aW91cyB3YXRjaGVyIGlmIGl0IGV4aXN0cyB0byBwcmV2ZW50IHBhcmFsbGVsIHN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLndhdGNoZXI/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAvLyBDcmVhdGUgbmV3IHdhdGNoZXIgdXNpbmcgdGhlIGVyZ29ub21pYyBoZWxwZXJcbiAgICBjb25zdCB3ID0gd2F0Y2hBZ2VudFdpdGgodGhpcy5pbmplY3RvciwgeyBhZ2VudElkOiBkZXNpcmVkQWdlbnRJZCB9KTtcblxuICAgIC8vIERlc3RydWN0dXJlIHNpZ25hbHMgZGlyZWN0bHkgdG8gY2xhc3MgZmllbGRzXG4gICAgdGhpcy5hZ2VudCA9IHcuYWdlbnQ7XG4gICAgdGhpcy5tZXNzYWdlcyA9IHcubWVzc2FnZXM7XG4gICAgdGhpcy5pc1J1bm5pbmcgPSB3LmlzUnVubmluZztcbiAgICB0aGlzLndhdGNoZXIgPSB3O1xuXG4gICAgLy8gUmVzZXQgY29ubmVjdGlvbiBzdGF0ZSBmb3IgbmV3IGFnZW50XG4gICAgdGhpcy5oYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -79,26 +79,24 @@ export class CopilotKitService {
|
|
|
79
79
|
this._runtimeStateVersion = signal(0);
|
|
80
80
|
// Initialize computed signals for processed values
|
|
81
81
|
this._allTools = computed(() => {
|
|
82
|
-
const
|
|
83
|
-
// Add frontend tools
|
|
82
|
+
const toolMap = new Map();
|
|
84
83
|
this._frontendTools().forEach((tool) => {
|
|
85
|
-
|
|
84
|
+
toolMap.set(tool.name, tool);
|
|
86
85
|
});
|
|
87
|
-
// Process human-in-the-loop tools
|
|
88
86
|
this._humanInTheLoop().forEach((tool) => {
|
|
89
87
|
const frontendTool = {
|
|
90
88
|
name: tool.name,
|
|
91
89
|
description: tool.description,
|
|
92
90
|
parameters: tool.parameters,
|
|
93
91
|
followUp: tool.followUp,
|
|
94
|
-
handler: async (
|
|
92
|
+
handler: async () => {
|
|
95
93
|
console.warn(`Human-in-the-loop tool '${tool.name}' called but no interactive handler is set up.`);
|
|
96
94
|
return undefined;
|
|
97
95
|
},
|
|
98
96
|
};
|
|
99
|
-
|
|
97
|
+
toolMap.set(tool.name, frontendTool);
|
|
100
98
|
});
|
|
101
|
-
return
|
|
99
|
+
return Array.from(toolMap.values());
|
|
102
100
|
});
|
|
103
101
|
this._allRenderToolCalls = computed(() => {
|
|
104
102
|
const combined = [...this._renderToolCalls()];
|
|
@@ -165,11 +163,11 @@ export class CopilotKitService {
|
|
|
165
163
|
* Process frontend tools and human-in-the-loop tools
|
|
166
164
|
*/
|
|
167
165
|
processTools(frontendTools, humanInTheLoop, renderToolCalls) {
|
|
168
|
-
const
|
|
166
|
+
const toolMap = new Map();
|
|
169
167
|
const allRenderToolCalls = [...renderToolCalls];
|
|
170
168
|
// Add frontend tools
|
|
171
169
|
frontendTools.forEach((tool) => {
|
|
172
|
-
|
|
170
|
+
toolMap.set(tool.name, tool);
|
|
173
171
|
// Add render component if provided
|
|
174
172
|
if (tool.render) {
|
|
175
173
|
allRenderToolCalls.push({
|
|
@@ -194,7 +192,7 @@ export class CopilotKitService {
|
|
|
194
192
|
return undefined;
|
|
195
193
|
},
|
|
196
194
|
};
|
|
197
|
-
|
|
195
|
+
toolMap.set(tool.name, frontendTool);
|
|
198
196
|
// Add the render component
|
|
199
197
|
if (tool.render) {
|
|
200
198
|
allRenderToolCalls.push({
|
|
@@ -204,7 +202,7 @@ export class CopilotKitService {
|
|
|
204
202
|
});
|
|
205
203
|
}
|
|
206
204
|
});
|
|
207
|
-
return { allTools, allRenderToolCalls };
|
|
205
|
+
return { allTools: Array.from(toolMap.values()), allRenderToolCalls };
|
|
208
206
|
}
|
|
209
207
|
/**
|
|
210
208
|
* Setup stability warning effects
|
|
@@ -239,7 +237,9 @@ export class CopilotKitService {
|
|
|
239
237
|
// Sync runtime URL
|
|
240
238
|
effect(() => {
|
|
241
239
|
const url = this.runtimeUrl();
|
|
242
|
-
untracked(() =>
|
|
240
|
+
untracked(() => {
|
|
241
|
+
this.copilotkit.setRuntimeUrl(url);
|
|
242
|
+
});
|
|
243
243
|
});
|
|
244
244
|
// Sync headers
|
|
245
245
|
effect(() => {
|
|
@@ -259,9 +259,11 @@ export class CopilotKitService {
|
|
|
259
259
|
// Sync tools - computed from frontend tools and human-in-the-loop
|
|
260
260
|
effect(() => {
|
|
261
261
|
const tools = this._allTools();
|
|
262
|
-
// Update copilotkit.tools directly since there's no setTools method
|
|
263
262
|
untracked(() => {
|
|
264
|
-
this.copilotkit
|
|
263
|
+
const setTools = this.copilotkit?.setTools;
|
|
264
|
+
if (typeof setTools === "function") {
|
|
265
|
+
setTools.call(this.copilotkit, tools);
|
|
266
|
+
}
|
|
265
267
|
});
|
|
266
268
|
});
|
|
267
269
|
}
|
|
@@ -270,12 +272,7 @@ export class CopilotKitService {
|
|
|
270
272
|
*/
|
|
271
273
|
setupEventSubscription() {
|
|
272
274
|
const unsubscribe = this.copilotkit.subscribe({
|
|
273
|
-
|
|
274
|
-
// Increment version to notify all consumers that runtime state has changed
|
|
275
|
-
// This triggers re-evaluation of computed signals that depend on runtime state
|
|
276
|
-
this.notifyRuntimeStateChange();
|
|
277
|
-
},
|
|
278
|
-
onRuntimeLoadError: () => {
|
|
275
|
+
onRuntimeConnectionStatusChanged: () => {
|
|
279
276
|
// Increment version to notify all consumers that runtime state has changed
|
|
280
277
|
// This triggers re-evaluation of computed signals that depend on runtime state
|
|
281
278
|
this.notifyRuntimeStateChange();
|
|
@@ -411,4 +408,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
411
408
|
type: Inject,
|
|
412
409
|
args: [COPILOTKIT_HUMAN_IN_THE_LOOP]
|
|
413
410
|
}] }] });
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLDRCQUE0QixHQUs3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxjQUFjLEdBR2YsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHOUI7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUM1Qix3Q0FBd0M7SUFDdkIsb0JBQW9CLENBQTZCO0lBQ2pELHFCQUFxQixDQUErQjtJQUNwRCxzQkFBc0IsQ0FBbUI7SUFFMUQsK0JBQStCO0lBQ3RCLFVBQVUsQ0FBaUI7SUFFcEMsZ0JBQWdCO0lBQ0MsZ0JBQWdCLENBRS9CO0lBQ2UsdUJBQXVCLENBRXRDO0lBQ2UsV0FBVyxDQUFnRDtJQUMzRCxRQUFRLENBQW9EO0lBQzVELFdBQVcsQ0FFMUI7SUFDZSxPQUFPLENBRXRCO0lBQ2UsY0FBYyxDQUU3QjtJQUNlLGVBQWUsQ0FFOUI7SUFFRiwyQ0FBMkM7SUFDMUIsb0JBQW9CLENBQW9DO0lBRXpFLHdDQUF3QztJQUN2QixTQUFTLENBRXhCO0lBQ2UsbUJBQW1CLENBRWxDO0lBRUYsK0RBQStEO0lBQ3RELGVBQWUsQ0FBTTtJQUNyQixzQkFBc0IsQ0FBTTtJQUM1QixVQUFVLENBQU07SUFDaEIsT0FBTyxDQUFNO0lBQ2IsVUFBVSxDQUFNO0lBQ2hCLE1B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QkFBc0I7OzBCQUM3QixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMscUJBQXFCOzswQkFDNUIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLDRCQUE0Qjs7MEJBRW5DLE1BQU07MkJBQUMseUJBQXlCOzswQkFFaEMsTUFBTTsyQkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBJbmplY3QsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgdW50cmFja2VkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQge1xuICBDT1BJTE9US0lUX1JVTlRJTUVfVVJMLFxuICBDT1BJTE9US0lUX0hFQURFUlMsXG4gIENPUElMT1RLSVRfUFJPUEVSVElFUyxcbiAgQ09QSUxPVEtJVF9BR0VOVFMsXG4gIENPUElMT1RLSVRfUkVOREVSX1RPT0xfQ0FMTFMsXG4gIENPUElMT1RLSVRfRlJPTlRFTkRfVE9PTFMsXG4gIENPUElMT1RLSVRfSFVNQU5fSU5fVEhFX0xPT1AsXG4gIENvcGlsb3RLaXRDb250ZXh0VmFsdWUsXG4gIFRvb2xDYWxsUmVuZGVyLFxuICBBbmd1bGFyRnJvbnRlbmRUb29sLFxuICBBbmd1bGFySHVtYW5JblRoZUxvb3AsXG59IGZyb20gXCIuL2NvcGlsb3RraXQudHlwZXNcIjtcbmltcG9ydCB7XG4gIENvcGlsb3RLaXRDb3JlLFxuICBDb3BpbG90S2l0Q29yZUNvbmZpZyxcbiAgRnJvbnRlbmRUb29sLFxufSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcbmltcG9ydCB7IEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuXG4vKipcbiAqIEFuZ3VsYXIgc2VydmljZSBmb3IgbWFuYWdpbmcgQ29waWxvdEtpdCBzdGF0ZSBhbmQgaW50ZXJhY3Rpb25zLlxuICogUHJvdmlkZXMgcmVhY3RpdmUgc3RhdGUgbWFuYWdlbWVudCB1c2luZyBBbmd1bGFyIHNpZ25hbHMgYW5kIG9ic2VydmFibGVzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgQ29waWxvdEtpdFNlcnZpY2Uge1xuICAvLyBJbml0aWFsIHZhbHVlcyBmb3Igc3RhYmlsaXR5IHRyYWNraW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbEZyb250ZW5kVG9vbHM6IEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdO1xuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxIdW1hbkluVGhlTG9vcDogQW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsUmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcltdO1xuXG4gIC8vIENvcmUgaW5zdGFuY2UgLSBjcmVhdGVkIG9uY2VcbiAgcmVhZG9ubHkgY29waWxvdGtpdDogQ29waWxvdEtpdENvcmU7XG5cbiAgLy8gU3RhdGUgc2lnbmFsc1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJUb29sQ2FsbHM6IFJldHVyblR5cGU8XG4gICAgdHlwZW9mIHNpZ25hbDxUb29sQ2FsbFJlbmRlcltdPlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UmVuZGVyVG9vbENhbGxzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8VG9vbENhbGxSZW5kZXJbXT5cbiAgPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnVudGltZVVybDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9oZWFkZXJzOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcm9wZXJ0aWVzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+XG4gID47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FnZW50czogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2Ygc2lnbmFsPFJlY29yZDxzdHJpbmcsIEFic3RyYWN0QWdlbnQ+PlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcm9udGVuZFRvb2xzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8QW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10+XG4gID47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2h1bWFuSW5UaGVMb29wOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8QW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXT5cbiAgPjtcblxuICAvLyBSdW50aW1lIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb24gc2lnbmFsXG4gIHByaXZhdGUgcmVhZG9ubHkgX3J1bnRpbWVTdGF0ZVZlcnNpb246IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxudW1iZXI+PjtcblxuICAvLyBDb21wdXRlZCBzaWduYWxzIGZvciBwcm9jZXNzZWQgdmFsdWVzXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FsbFRvb2xzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBjb21wdXRlZDxSZWNvcmQ8c3RyaW5nLCBGcm9udGVuZFRvb2w8YW55Pj4+XG4gID47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FsbFJlbmRlclRvb2xDYWxsczogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2YgY29tcHV0ZWQ8VG9vbENhbGxSZW5kZXJbXT5cbiAgPjtcblxuICAvLyBQdWJsaWMgcmVhZG9ubHkgc2lnbmFscyAtIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW4gY29uc3RydWN0b3JcbiAgcmVhZG9ubHkgcmVuZGVyVG9vbENhbGxzOiBhbnk7XG4gIHJlYWRvbmx5IGN1cnJlbnRSZW5kZXJUb29sQ2FsbHM6IGFueTtcbiAgcmVhZG9ubHkgcnVudGltZVVybDogYW55O1xuICByZWFkb25seSBoZWFkZXJzOiBhbnk7XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IGFueTtcbiAgcmVhZG9ubHkgYWdlbnRzOiBhbnk7XG4gIHJlYWRvbmx5IGZyb250ZW5kVG9vbHM6IGFueTtcbiAgcmVhZG9ubHkgaHVtYW5JblRoZUxvb3A6IGFueTtcbiAgcmVhZG9ubHkgcnVudGltZVN0YXRlVmVyc2lvbjogYW55O1xuXG4gIC8vIE9ic2VydmFibGUgQVBJcyBmb3IgUnhKUyB1c2VycyAtIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW4gY29uc3RydWN0b3JcbiAgcmVhZG9ubHkgcmVuZGVyVG9vbENhbGxzJDogYW55O1xuICByZWFkb25seSBjdXJyZW50UmVuZGVyVG9vbENhbGxzJDogYW55O1xuICByZWFkb25seSBydW50aW1lVXJsJDogYW55O1xuICByZWFkb25seSBoZWFkZXJzJDogYW55O1xuICByZWFkb25seSBwcm9wZXJ0aWVzJDogYW55O1xuICByZWFkb25seSBhZ2VudHMkOiBhbnk7XG4gIHJlYWRvbmx5IGZyb250ZW5kVG9vbHMkOiBhbnk7XG4gIHJlYWRvbmx5IGh1bWFuSW5UaGVMb29wJDogYW55O1xuXG4gIC8vIENvbnRleHQgdmFsdWUgYXMgY29tcHV0ZWQgc2lnbmFsIC0gd2lsbCBiZSBpbml0aWFsaXplZCBpbiBjb25zdHJ1Y3RvclxuICByZWFkb25seSBjb250ZXh0OiBhbnk7XG4gIHJlYWRvbmx5IGNvbnRleHQkOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDT1BJTE9US0lUX1JVTlRJTUVfVVJMKSBydW50aW1lVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgQEluamVjdChDT1BJTE9US0lUX0hFQURFUlMpIGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgQEluamVjdChDT1BJTE9US0lUX1BST1BFUlRJRVMpIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9BR0VOVFMpIGFnZW50czogUmVjb3JkPHN0cmluZywgQWJzdHJhY3RBZ2VudD4sXG4gICAgQEluamVjdChDT1BJTE9US0lUX1JFTkRFUl9UT09MX0NBTExTKVxuICAgIHJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXSxcbiAgICBASW5qZWN0KENPUElMT1RLSVRfRlJPTlRFTkRfVE9PTFMpXG4gICAgZnJvbnRlbmRUb29sczogQW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10sXG4gICAgQEluamVjdChDT1BJTE9US0lUX0hVTUFOX0lOX1RIRV9MT09QKVxuICAgIGh1bWFuSW5UaGVMb29wOiBBbmd1bGFySHVtYW5JblRoZUxvb3A8YW55PltdXG4gICkge1xuICAgIC8vIFN0b3JlIGluaXRpYWwgdmFsdWVzIGZvciBzdGFiaWxpdHkgY2hlY2tpbmdcbiAgICB0aGlzLmluaXRpYWxGcm9udGVuZFRvb2xzID0gZnJvbnRlbmRUb29scztcbiAgICB0aGlzLmluaXRpYWxIdW1hbkluVGhlTG9vcCA9IGh1bWFuSW5UaGVMb29wO1xuICAgIHRoaXMuaW5pdGlhbFJlbmRlclRvb2xDYWxscyA9IHJlbmRlclRvb2xDYWxscztcblxuICAgIC8vIFByb2Nlc3MgdG9vbHMgYW5kIGh1bWFuSW5UaGVMb29wXG4gICAgY29uc3QgeyBhbGxUb29scywgYWxsUmVuZGVyVG9vbENhbGxzIH0gPSB0aGlzLnByb2Nlc3NUb29scyhcbiAgICAgIGZyb250ZW5kVG9vbHMsXG4gICAgICBodW1hbkluVGhlTG9vcCxcbiAgICAgIHJlbmRlclRvb2xDYWxsc1xuICAgICk7XG5cbiAgICAvLyBJbml0aWFsaXplIGNvcmUgaW5zdGFuY2Ugd2l0aCBwcm9jZXNzZWQgdG9vbHNcbiAgICB0aGlzLmNvcGlsb3RraXQgPSBuZXcgQ29waWxvdEtpdENvcmUoe1xuICAgICAgcnVudGltZVVybDogdW5kZWZpbmVkLCAvLyBQcmV2ZW50IHNlcnZlci1zaWRlIGZldGNoaW5nXG4gICAgICBoZWFkZXJzLFxuICAgICAgcHJvcGVydGllcyxcbiAgICAgIGFnZW50cyxcbiAgICAgIHRvb2xzOiBhbGxUb29scyxcbiAgICB9IGFzIENvcGlsb3RLaXRDb3JlQ29uZmlnKTtcblxuICAgIC8vIEluaXRpYWxpemUgc3RhdGUgc2lnbmFsc1xuICAgIHRoaXMuX3JlbmRlclRvb2xDYWxscyA9XG4gICAgICBzaWduYWw8VG9vbENhbGxSZW5kZXJbXT4oYWxsUmVuZGVyVG9vbENhbGxzKTtcbiAgICB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzID1cbiAgICAgIHNpZ25hbDxUb29sQ2FsbFJlbmRlcltdPihhbGxSZW5kZXJUb29sQ2FsbHMpO1xuICAgIHRoaXMuX3J1bnRpbWVVcmwgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPihydW50aW1lVXJsKTtcbiAgICB0aGlzLl9oZWFkZXJzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KGhlYWRlcnMpO1xuICAgIHRoaXMuX3Byb3BlcnRpZXMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHByb3BlcnRpZXMpO1xuICAgIHRoaXMuX2FnZW50cyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdEFnZW50Pj4oYWdlbnRzKTtcbiAgICB0aGlzLl9mcm9udGVuZFRvb2xzID0gc2lnbmFsPEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdPihmcm9udGVuZFRvb2xzKTtcbiAgICB0aGlzLl9odW1hbkluVGhlTG9vcCA9IHNpZ25hbDxBbmd1bGFySHVtYW5JblRoZUxvb3A8YW55PltdPihodW1hbkluVGhlTG9vcCk7XG4gICAgdGhpcy5fcnVudGltZVN0YXRlVmVyc2lvbiA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBjb21wdXRlZCBzaWduYWxzIGZvciBwcm9jZXNzZWQgdmFsdWVzXG4gICAgdGhpcy5fYWxsVG9vbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCB0b29sczogUmVjb3JkPHN0cmluZywgRnJvbnRlbmRUb29sPGFueT4+ID0ge307XG5cbiAgICAgIC8vIEFkZCBmcm9udGVuZCB0b29sc1xuICAgICAgdGhpcy5fZnJvbnRlbmRUb29scygpLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgICAgdG9vbHNbdG9vbC5uYW1lXSA9IHRvb2wgYXMgRnJvbnRlbmRUb29sPGFueT47XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvY2VzcyBodW1hbi1pbi10aGUtbG9vcCB0b29sc1xuICAgICAgdGhpcy5faHVtYW5JblRoZUxvb3AoKS5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICAgIGNvbnN0IGZyb250ZW5kVG9vbDogRnJvbnRlbmRUb29sPGFueT4gPSB7XG4gICAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0b29sLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHRvb2wucGFyYW1ldGVycyxcbiAgICAgICAgICBmb2xsb3dVcDogdG9vbC5mb2xsb3dVcCxcbiAgICAgICAgICBoYW5kbGVyOiBhc3luYyAoYXJnczogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgIGBIdW1hbi1pbi10aGUtbG9vcCB0b29sICcke3Rvb2wubmFtZX0nIGNhbGxlZCBidXQgbm8gaW50ZXJhY3RpdmUgaGFuZGxlciBpcyBzZXQgdXAuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgdG9vbHNbdG9vbC5uYW1lXSA9IGZyb250ZW5kVG9vbDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdG9vbHM7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hbGxSZW5kZXJUb29sQ2FsbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBjb21iaW5lZDogVG9vbENhbGxSZW5kZXJbXSA9IFsuLi50aGlzLl9yZW5kZXJUb29sQ2FsbHMoKV07XG5cbiAgICAgIC8vIEFkZCByZW5kZXIgY29tcG9uZW50cyBmcm9tIGZyb250ZW5kIHRvb2xzXG4gICAgICB0aGlzLl9mcm9udGVuZFRvb2xzKCkuZm9yRWFjaCgodG9vbCkgPT4ge1xuICAgICAgICBpZiAodG9vbC5yZW5kZXIpIHtcbiAgICAgICAgICBjb21iaW5lZC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgICAuLi4odG9vbC5hZ2VudElkICYmIHsgYWdlbnRJZDogdG9vbC5hZ2VudElkIH0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIHJlbmRlciBjb21wb25lbnRzIGZyb20gaHVtYW4taW4tdGhlLWxvb3AgdG9vbHNcbiAgICAgIHRoaXMuX2h1bWFuSW5UaGVMb29wKCkuZm9yRWFjaCgodG9vbCkgPT4ge1xuICAgICAgICBpZiAodG9vbC5yZW5kZXIpIHtcbiAgICAgICAgICBjb21iaW5lZC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgICAuLi4odG9vbC5hZ2VudElkICYmIHsgYWdlbnRJZDogdG9vbC5hZ2VudElkIH0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbWJpbmVkO1xuICAgIH0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBwdWJsaWMgcmVhZG9ubHkgc2lnbmFsc1xuICAgIHRoaXMucmVuZGVyVG9vbENhbGxzID0gdGhpcy5fYWxsUmVuZGVyVG9vbENhbGxzO1xuICAgIHRoaXMuY3VycmVudFJlbmRlclRvb2xDYWxscyA9IHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucnVudGltZVVybCA9IHRoaXMuX3J1bnRpbWVVcmwuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuX2hlYWRlcnMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHRoaXMuX3Byb3BlcnRpZXMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuYWdlbnRzID0gdGhpcy5fYWdlbnRzLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLmZyb250ZW5kVG9vbHMgPSB0aGlzLl9mcm9udGVuZFRvb2xzLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLmh1bWFuSW5UaGVMb29wID0gdGhpcy5faHVtYW5JblRoZUxvb3AuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucnVudGltZVN0YXRlVmVyc2lvbiA9IHRoaXMuX3J1bnRpbWVTdGF0ZVZlcnNpb24uYXNSZWFkb25seSgpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBPYnNlcnZhYmxlIEFQSXNcbiAgICB0aGlzLnJlbmRlclRvb2xDYWxscyQgPSB0b09ic2VydmFibGUodGhpcy5yZW5kZXJUb29sQ2FsbHMpO1xuICAgIHRoaXMuY3VycmVudFJlbmRlclRvb2xDYWxscyQgPSB0b09ic2VydmFibGUodGhpcy5jdXJyZW50UmVuZGVyVG9vbENhbGxzKTtcbiAgICB0aGlzLnJ1bnRpbWVVcmwkID0gdG9PYnNlcnZhYmxlKHRoaXMucnVudGltZVVybCk7XG4gICAgdGhpcy5oZWFkZXJzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmhlYWRlcnMpO1xuICAgIHRoaXMucHJvcGVydGllcyQgPSB0b09ic2VydmFibGUodGhpcy5wcm9wZXJ0aWVzKTtcbiAgICB0aGlzLmFnZW50cyQgPSB0b09ic2VydmFibGUodGhpcy5hZ2VudHMpO1xuICAgIHRoaXMuZnJvbnRlbmRUb29scyQgPSB0b09ic2VydmFibGUodGhpcy5mcm9udGVuZFRvb2xzKTtcbiAgICB0aGlzLmh1bWFuSW5UaGVMb29wJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmh1bWFuSW5UaGVMb29wKTtcblxuICAgIC8vIEluaXRpYWxpemUgY29udGV4dCB2YWx1ZSBhcyBjb21wdXRlZCBzaWduYWxcbiAgICB0aGlzLmNvbnRleHQgPSBjb21wdXRlZDxDb3BpbG90S2l0Q29udGV4dFZhbHVlPigoKSA9PiB7XG4gICAgICAvLyBUb3VjaCB0aGUgcnVudGltZSBzdGF0ZSB2ZXJzaW9uIHRvIGVuc3VyZSB0aGlzIGNvbXB1dGVkIHVwZGF0ZXNcbiAgICAgIC8vIHdoZW4gcnVudGltZSBldmVudHMgb2NjdXIgKGxvYWRlZC9lcnJvcilcbiAgICAgIHRoaXMucnVudGltZVN0YXRlVmVyc2lvbigpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3BpbG90a2l0OiB0aGlzLmNvcGlsb3RraXQsXG4gICAgICAgIHJlbmRlclRvb2xDYWxsczogdGhpcy5yZW5kZXJUb29sQ2FsbHMoKSxcbiAgICAgICAgY3VycmVudFJlbmRlclRvb2xDYWxsczogdGhpcy5jdXJyZW50UmVuZGVyVG9vbENhbGxzKCksXG4gICAgICAgIHNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHM6ICh2KSA9PiB0aGlzLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHModiksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb250ZXh0JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRleHQpO1xuXG4gICAgLy8gRWZmZWN0cyBtdXN0IGJlIGNyZWF0ZWQgaW4gaW5qZWN0aW9uIGNvbnRleHQgKGNvbnN0cnVjdG9yKVxuICAgIHRoaXMuc2V0dXBSdW50aW1lU3luY0VmZmVjdHMoKTtcbiAgICB0aGlzLnNldHVwU3RhYmlsaXR5V2FybmluZ3MoKTtcbiAgICB0aGlzLnNldHVwRXZlbnRTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGZyb250ZW5kIHRvb2xzIGFuZCBodW1hbi1pbi10aGUtbG9vcCB0b29sc1xuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzVG9vbHMoXG4gICAgZnJvbnRlbmRUb29sczogQW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10sXG4gICAgaHVtYW5JblRoZUxvb3A6IEFuZ3VsYXJIdW1hbkluVGhlTG9vcDxhbnk+W10sXG4gICAgcmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcltdXG4gICk6IHtcbiAgICBhbGxUb29sczogUmVjb3JkPHN0cmluZywgRnJvbnRlbmRUb29sPGFueT4+O1xuICAgIGFsbFJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXTtcbiAgfSB7XG4gICAgY29uc3QgYWxsVG9vbHM6IFJlY29yZDxzdHJpbmcsIEZyb250ZW5kVG9vbDxhbnk+PiA9IHt9O1xuICAgIGNvbnN0IGFsbFJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXSA9IFsuLi5yZW5kZXJUb29sQ2FsbHNdO1xuXG4gICAgLy8gQWRkIGZyb250ZW5kIHRvb2xzXG4gICAgZnJvbnRlbmRUb29scy5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICBhbGxUb29sc1t0b29sLm5hbWVdID0gdG9vbCBhcyBGcm9udGVuZFRvb2w8YW55PjtcblxuICAgICAgLy8gQWRkIHJlbmRlciBjb21wb25lbnQgaWYgcHJvdmlkZWRcbiAgICAgIGlmICh0b29sLnJlbmRlcikge1xuICAgICAgICBhbGxSZW5kZXJUb29sQ2FsbHMucHVzaCh7XG4gICAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgLi4uKHRvb2wuYWdlbnRJZCAmJiB7IGFnZW50SWQ6IHRvb2wuYWdlbnRJZCB9KSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBQcm9jZXNzIGh1bWFuLWluLXRoZS1sb29wIHRvb2xzXG4gICAgaHVtYW5JblRoZUxvb3AuZm9yRWFjaCgodG9vbCkgPT4ge1xuICAgICAgLy8gQ3JlYXRlIGEgZnJvbnRlbmQgdG9vbCB3aXRoIHBsYWNlaG9sZGVyIGhhbmRsZXJcbiAgICAgIGNvbnN0IGZyb250ZW5kVG9vbDogRnJvbnRlbmRUb29sPGFueT4gPSB7XG4gICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRvb2wuZGVzY3JpcHRpb24sXG4gICAgICAgIHBhcmFtZXRlcnM6IHRvb2wucGFyYW1ldGVycyxcbiAgICAgICAgZm9sbG93VXA6IHRvb2wuZm9sbG93VXAsXG4gICAgICAgIC4uLih0b29sLmFnZW50SWQgJiYgeyBhZ2VudElkOiB0b29sLmFnZW50SWQgfSksXG4gICAgICAgIGhhbmRsZXI6IGFzeW5jIChhcmdzOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBQbGFjZWhvbGRlciBoYW5kbGVyIC0gYWN0dWFsIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUgcmVuZGVyIGNvbXBvbmVudFxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBIdW1hbi1pbi10aGUtbG9vcCB0b29sICcke3Rvb2wubmFtZX0nIGNhbGxlZCBidXQgbm8gaW50ZXJhY3RpdmUgaGFuZGxlciBpcyBzZXQgdXAuYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBhbGxUb29sc1t0b29sLm5hbWVdID0gZnJvbnRlbmRUb29sO1xuXG4gICAgICAvLyBBZGQgdGhlIHJlbmRlciBjb21wb25lbnRcbiAgICAgIGlmICh0b29sLnJlbmRlcikge1xuICAgICAgICBhbGxSZW5kZXJUb29sQ2FsbHMucHVzaCh7XG4gICAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgLi4uKHRvb2wuYWdlbnRJZCAmJiB7IGFnZW50SWQ6IHRvb2wuYWdlbnRJZCB9KSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyBhbGxUb29scywgYWxsUmVuZGVyVG9vbENhbGxzIH07XG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgc3RhYmlsaXR5IHdhcm5pbmcgZWZmZWN0c1xuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cFN0YWJpbGl0eVdhcm5pbmdzKCk6IHZvaWQge1xuICAgIC8vIFdhcm4gaWYgZnJvbnRlbmRUb29scyBjaGFuZ2VzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9mcm9udGVuZFRvb2xzKCk7XG4gICAgICBpZiAoXG4gICAgICAgIGN1cnJlbnQgIT09IHRoaXMuaW5pdGlhbEZyb250ZW5kVG9vbHMgJiZcbiAgICAgICAgdGhpcy5pbml0aWFsRnJvbnRlbmRUb29scy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJmcm9udGVuZFRvb2xzIG11c3QgYmUgYSBzdGFibGUgYXJyYXkuIFRvIGFkZC9yZW1vdmUgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBXYXJuIGlmIGh1bWFuSW5UaGVMb29wIGNoYW5nZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2h1bWFuSW5UaGVMb29wKCk7XG4gICAgICBpZiAoXG4gICAgICAgIGN1cnJlbnQgIT09IHRoaXMuaW5pdGlhbEh1bWFuSW5UaGVMb29wICYmXG4gICAgICAgIHRoaXMuaW5pdGlhbEh1bWFuSW5UaGVMb29wLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcImh1bWFuSW5UaGVMb29wIG11c3QgYmUgYSBzdGFibGUgYXJyYXkuIFRvIGFkZC9yZW1vdmUgaHVtYW4taW4tdGhlLWxvb3AgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBQcmV2aW91c2x5IHdhcm5lZCBpZiByZW5kZXJUb29sQ2FsbHMgcmVmZXJlbmNlIGNoYW5nZWQ7IHJlbW92ZWQgcGVyIFVYIGZlZWRiYWNrXG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgZWZmZWN0cyB0byBzeW5jIHJ1bnRpbWUgY29uZmlndXJhdGlvbiB3aXRoIENvcGlsb3RLaXRDb3JlXG4gICAqL1xuICBwcml2YXRlIHNldHVwUnVudGltZVN5bmNFZmZlY3RzKCk6IHZvaWQge1xuICAgIC8vIFN5bmMgcnVudGltZSBVUkxcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5ydW50aW1lVXJsKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5jb3BpbG90a2l0LnNldFJ1bnRpbWVVcmwodXJsKSk7XG4gICAgfSk7XG5cbiAgICAvLyBTeW5jIGhlYWRlcnNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVycygpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuY29waWxvdGtpdC5zZXRIZWFkZXJzKGhlYWRlcnMpKTtcbiAgICB9KTtcblxuICAgIC8vIFN5bmMgcHJvcGVydGllc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5wcm9wZXJ0aWVzKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5jb3BpbG90a2l0LnNldFByb3BlcnRpZXMocHJvcGVydGllcykpO1xuICAgIH0pO1xuXG4gICAgLy8gU3luYyBhZ2VudHNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgYWdlbnRzID0gdGhpcy5hZ2VudHMoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmNvcGlsb3RraXQuc2V0QWdlbnRzKGFnZW50cykpO1xuICAgIH0pO1xuXG4gICAgLy8gU3luYyB0b29scyAtIGNvbXB1dGVkIGZyb20gZnJvbnRlbmQgdG9vbHMgYW5kIGh1bWFuLWluLXRoZS1sb29wXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRvb2xzID0gdGhpcy5fYWxsVG9vbHMoKTtcbiAgICAgIC8vIFVwZGF0ZSBjb3BpbG90a2l0LnRvb2xzIGRpcmVjdGx5IHNpbmNlIHRoZXJlJ3Mgbm8gc2V0VG9vbHMgbWV0aG9kXG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvcGlsb3RraXQudG9vbHMgPSB0b29scztcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBDb3BpbG90S2l0IHJ1bnRpbWUgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHNldHVwRXZlbnRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSB0aGlzLmNvcGlsb3RraXQuc3Vic2NyaWJlKHtcbiAgICAgIG9uUnVudGltZUxvYWRlZDogKCkgPT4ge1xuICAgICAgICAvLyBJbmNyZW1lbnQgdmVyc2lvbiB0byBub3RpZnkgYWxsIGNvbnN1bWVycyB0aGF0IHJ1bnRpbWUgc3RhdGUgaGFzIGNoYW5nZWRcbiAgICAgICAgLy8gVGhpcyB0cmlnZ2VycyByZS1ldmFsdWF0aW9uIG9mIGNvbXB1dGVkIHNpZ25hbHMgdGhhdCBkZXBlbmQgb24gcnVudGltZSBzdGF0ZVxuICAgICAgICB0aGlzLm5vdGlmeVJ1bnRpbWVTdGF0ZUNoYW5nZSgpO1xuICAgICAgfSxcbiAgICAgIG9uUnVudGltZUxvYWRFcnJvcjogKCkgPT4ge1xuICAgICAgICAvLyBJbmNyZW1lbnQgdmVyc2lvbiB0byBub3RpZnkgYWxsIGNvbnN1bWVycyB0aGF0IHJ1bnRpbWUgc3RhdGUgaGFzIGNoYW5nZWRcbiAgICAgICAgLy8gVGhpcyB0cmlnZ2VycyByZS1ldmFsdWF0aW9uIG9mIGNvbXB1dGVkIHNpZ25hbHMgdGhhdCBkZXBlbmQgb24gcnVudGltZSBzdGF0ZVxuICAgICAgICB0aGlzLm5vdGlmeVJ1bnRpbWVTdGF0ZUNoYW5nZSgpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFJvb3Qgc2VydmljZSBsaXZlcyBmb3IgYXBwIGxpZmV0aW1lOyB1bnN1YnNjcmliZSBub3QgbmVlZGVkLlxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBjb25zdW1lcnMgdGhhdCB0aGUgcnVudGltZSBzdGF0ZSBoYXMgY2hhbmdlZC5cbiAgICogVGhpcyBpcyBzaW1pbGFyIHRvIFJlYWN0J3MgZm9yY2VVcGRhdGUgLSBpdCB0cmlnZ2VycyBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIGZvciBhbnkgY29tcHV0ZWQgc2lnbmFscyBvciBlZmZlY3RzIHRoYXQgZGVwZW5kIG9uIHJ1bnRpbWUgc3RhdGUuXG4gICAqL1xuICBwcml2YXRlIG5vdGlmeVJ1bnRpbWVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9ydW50aW1lU3RhdGVWZXJzaW9uLnVwZGF0ZSgodmVyc2lvbikgPT4gdmVyc2lvbiArIDEpO1xuICB9XG5cbiAgLy8gUHVibGljIG11dGF0aW9uIG1ldGhvZHNcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBydW50aW1lIFVSTFxuICAgKi9cbiAgc2V0UnVudGltZVVybCh1cmw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9ydW50aW1lVXJsLnNldCh1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSByZXF1ZXN0IGhlYWRlcnNcbiAgICovXG4gIHNldEhlYWRlcnMoaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMuX2hlYWRlcnMuc2V0KGhlYWRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBydW50aW1lIHByb3BlcnRpZXNcbiAgICovXG4gIHNldFByb3BlcnRpZXMocHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzLnNldChwcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYWdlbnRzIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHNldEFnZW50cyhhZ2VudHM6IFJlY29yZDxzdHJpbmcsIEFic3RyYWN0QWdlbnQ+KTogdm9pZCB7XG4gICAgdGhpcy5fYWdlbnRzLnNldChhZ2VudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBhZ2VudCBieSBJRFxuICAgKiBAcGFyYW0gYWdlbnRJZCAtIFRoZSBhZ2VudCBJRCB0byByZXRyaWV2ZVxuICAgKiBAcmV0dXJucyBUaGUgYWdlbnQgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0QWdlbnQoYWdlbnRJZDogc3RyaW5nKTogQWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29waWxvdGtpdC5nZXRBZ2VudChhZ2VudElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgcmVuZGVyIHRvb2wgY2FsbHMgKHdhcm5zIGlmIG9iamVjdCByZWZlcmVuY2UgY2hhbmdlcylcbiAgICovXG4gIHNldFJlbmRlclRvb2xDYWxscyhyZW5kZXJUb29sQ2FsbHM6IFRvb2xDYWxsUmVuZGVyW10pOiB2b2lkIHtcbiAgICB0aGlzLl9yZW5kZXJUb29sQ2FsbHMuc2V0KHJlbmRlclRvb2xDYWxscyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGZyb250ZW5kIHRvb2xzIGFycmF5XG4gICAqL1xuICBzZXRGcm9udGVuZFRvb2xzKGZyb250ZW5kVG9vbHM6IEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdKTogdm9pZCB7XG4gICAgaWYgKGZyb250ZW5kVG9vbHMgIT09IHRoaXMuaW5pdGlhbEZyb250ZW5kVG9vbHMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIFwiZnJvbnRlbmRUb29scyBtdXN0IGJlIGEgc3RhYmxlIGFycmF5LiBUbyBhZGQvcmVtb3ZlIHRvb2xzIGR5bmFtaWNhbGx5LCB1c2UgZHluYW1pYyB0b29sIHJlZ2lzdHJhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fZnJvbnRlbmRUb29scy5zZXQoZnJvbnRlbmRUb29scyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGh1bWFuLWluLXRoZS1sb29wIGFycmF5XG4gICAqL1xuICBzZXRIdW1hbkluVGhlTG9vcChodW1hbkluVGhlTG9vcDogQW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXSk6IHZvaWQge1xuICAgIGlmIChodW1hbkluVGhlTG9vcCAhPT0gdGhpcy5pbml0aWFsSHVtYW5JblRoZUxvb3ApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIFwiaHVtYW5JblRoZUxvb3AgbXVzdCBiZSBhIHN0YWJsZSBhcnJheS4gVG8gYWRkL3JlbW92ZSBodW1hbi1pbi10aGUtbG9vcCB0b29scyBkeW5hbWljYWxseSwgdXNlIGR5bmFtaWMgdG9vbCByZWdpc3RyYXRpb24uXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX2h1bWFuSW5UaGVMb29wLnNldChodW1hbkluVGhlTG9vcCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGN1cnJlbnQgcmVuZGVyIHRvb2wgY2FsbHNcbiAgICovXG4gIHNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHMocmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcltdKTogdm9pZCB7XG4gICAgdGhpcy5fY3VycmVudFJlbmRlclRvb2xDYWxscy5zZXQocmVuZGVyVG9vbENhbGxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHRvb2wgcmVuZGVyXG4gICAqL1xuICByZWdpc3RlclRvb2xSZW5kZXIobmFtZTogc3RyaW5nLCByZW5kZXI6IFRvb2xDYWxsUmVuZGVyKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMoKTtcbiAgICBpZiAoY3VycmVudC5maW5kKChyKSA9PiByLm5hbWUgPT09IG5hbWUpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFRvb2wgcmVuZGVyIGZvciAnJHtuYW1lfScgaXMgYmVpbmcgb3ZlcndyaXR0ZW5gKTtcbiAgICB9XG4gICAgdGhpcy5fY3VycmVudFJlbmRlclRvb2xDYWxscy5zZXQoW1xuICAgICAgLi4uY3VycmVudC5maWx0ZXIoKHIpID0+IHIubmFtZSAhPT0gbmFtZSksXG4gICAgICByZW5kZXIsXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlciBhIHRvb2wgcmVuZGVyXG4gICAqL1xuICB1bnJlZ2lzdGVyVG9vbFJlbmRlcihuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fY3VycmVudFJlbmRlclRvb2xDYWxscygpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gY3VycmVudC5maWx0ZXIoKHIpID0+IHIubmFtZSAhPT0gbmFtZSk7XG4gICAgaWYgKGZpbHRlcmVkLmxlbmd0aCAhPT0gY3VycmVudC5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMuc2V0KGZpbHRlcmVkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc3BlY2lmaWMgdG9vbCByZW5kZXJcbiAgICovXG4gIGdldFRvb2xSZW5kZXIobmFtZTogc3RyaW5nKTogVG9vbENhbGxSZW5kZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzKCkuZmluZCgocikgPT4gci5uYW1lID09PSBuYW1lKTtcbiAgfVxufVxuIl19
|
|
411
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLDRCQUE0QixHQUs3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxjQUFjLEdBR2YsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHOUI7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUM1Qix3Q0FBd0M7SUFDdkIsb0JBQW9CLENBQTZCO0lBQ2pELHFCQUFxQixDQUErQjtJQUNwRCxzQkFBc0IsQ0FBbUI7SUFFMUQsK0JBQStCO0lBQ3RCLFVBQVUsQ0FBaUI7SUFFcEMsZ0JBQWdCO0lBQ0MsZ0JBQWdCLENBRS9CO0lBQ2UsdUJBQXVCLENBRXRDO0lBQ2UsV0FBVyxDQUFnRDtJQUMzRCxRQUFRLENBQW9EO0lBQzVELFdBQVcsQ0FFMUI7SUFDZSxPQUFPLENBRXRCO0lBQ2UsY0FBYyxDQUU3QjtJQUNlLGVBQWUsQ0FFOUI7SUFFRiwyQ0FBMkM7SUFDMUIsb0JBQW9CLENBQW9DO0lBRXpFLHdDQUF3QztJQUN2QixTQUFTLENBRXhCO0lBQ2UsbUJBQW1CLENBRWxDO0lBRUYsK0RBQStEO0lBQ3RELGVBQWUsQ0FBTTtJQUNyQixzQkFBc0IsQ0FBTTtJQUM1QixVQUFVLENBQU07SUFDaEIsT0FBTyxDQUFNO0lBQ2IsVUFBVSxDQUFNO0lBQ2hCLE1B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Q2pCLDRCQUE0QixhQUU1Qix5QkFBeUIsYUFFekIsNEJBQTRCOzRHQTVFM0IsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQXFFN0IsTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUM3QixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMscUJBQXFCOzswQkFDNUIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLDRCQUE0Qjs7MEJBRW5DLE1BQU07MkJBQUMseUJBQXlCOzswQkFFaEMsTUFBTTsyQkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBJbmplY3QsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgdW50cmFja2VkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQge1xuICBDT1BJTE9US0lUX1JVTlRJTUVfVVJMLFxuICBDT1BJTE9US0lUX0hFQURFUlMsXG4gIENPUElMT1RLSVRfUFJPUEVSVElFUyxcbiAgQ09QSUxPVEtJVF9BR0VOVFMsXG4gIENPUElMT1RLSVRfUkVOREVSX1RPT0xfQ0FMTFMsXG4gIENPUElMT1RLSVRfRlJPTlRFTkRfVE9PTFMsXG4gIENPUElMT1RLSVRfSFVNQU5fSU5fVEhFX0xPT1AsXG4gIENvcGlsb3RLaXRDb250ZXh0VmFsdWUsXG4gIFRvb2xDYWxsUmVuZGVyLFxuICBBbmd1bGFyRnJvbnRlbmRUb29sLFxuICBBbmd1bGFySHVtYW5JblRoZUxvb3AsXG59IGZyb20gXCIuL2NvcGlsb3RraXQudHlwZXNcIjtcbmltcG9ydCB7XG4gIENvcGlsb3RLaXRDb3JlLFxuICBDb3BpbG90S2l0Q29yZUNvbmZpZyxcbiAgRnJvbnRlbmRUb29sLFxufSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcbmltcG9ydCB7IEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuXG4vKipcbiAqIEFuZ3VsYXIgc2VydmljZSBmb3IgbWFuYWdpbmcgQ29waWxvdEtpdCBzdGF0ZSBhbmQgaW50ZXJhY3Rpb25zLlxuICogUHJvdmlkZXMgcmVhY3RpdmUgc3RhdGUgbWFuYWdlbWVudCB1c2luZyBBbmd1bGFyIHNpZ25hbHMgYW5kIG9ic2VydmFibGVzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgQ29waWxvdEtpdFNlcnZpY2Uge1xuICAvLyBJbml0aWFsIHZhbHVlcyBmb3Igc3RhYmlsaXR5IHRyYWNraW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbEZyb250ZW5kVG9vbHM6IEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdO1xuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxIdW1hbkluVGhlTG9vcDogQW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsUmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcltdO1xuXG4gIC8vIENvcmUgaW5zdGFuY2UgLSBjcmVhdGVkIG9uY2VcbiAgcmVhZG9ubHkgY29waWxvdGtpdDogQ29waWxvdEtpdENvcmU7XG5cbiAgLy8gU3RhdGUgc2lnbmFsc1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJUb29sQ2FsbHM6IFJldHVyblR5cGU8XG4gICAgdHlwZW9mIHNpZ25hbDxUb29sQ2FsbFJlbmRlcltdPlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UmVuZGVyVG9vbENhbGxzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8VG9vbENhbGxSZW5kZXJbXT5cbiAgPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnVudGltZVVybDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9oZWFkZXJzOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcm9wZXJ0aWVzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+XG4gID47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FnZW50czogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2Ygc2lnbmFsPFJlY29yZDxzdHJpbmcsIEFic3RyYWN0QWdlbnQ+PlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcm9udGVuZFRvb2xzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8QW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10+XG4gID47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2h1bWFuSW5UaGVMb29wOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8QW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXT5cbiAgPjtcblxuICAvLyBSdW50aW1lIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb24gc2lnbmFsXG4gIHByaXZhdGUgcmVhZG9ubHkgX3J1bnRpbWVTdGF0ZVZlcnNpb246IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxudW1iZXI+PjtcblxuICAvLyBDb21wdXRlZCBzaWduYWxzIGZvciBwcm9jZXNzZWQgdmFsdWVzXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FsbFRvb2xzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBjb21wdXRlZDxGcm9udGVuZFRvb2w8YW55PltdPlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbGxSZW5kZXJUb29sQ2FsbHM6IFJldHVyblR5cGU8XG4gICAgdHlwZW9mIGNvbXB1dGVkPFRvb2xDYWxsUmVuZGVyW10+XG4gID47XG5cbiAgLy8gUHVibGljIHJlYWRvbmx5IHNpZ25hbHMgLSB3aWxsIGJlIGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9yXG4gIHJlYWRvbmx5IHJlbmRlclRvb2xDYWxsczogYW55O1xuICByZWFkb25seSBjdXJyZW50UmVuZGVyVG9vbENhbGxzOiBhbnk7XG4gIHJlYWRvbmx5IHJ1bnRpbWVVcmw6IGFueTtcbiAgcmVhZG9ubHkgaGVhZGVyczogYW55O1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBhbnk7XG4gIHJlYWRvbmx5IGFnZW50czogYW55O1xuICByZWFkb25seSBmcm9udGVuZFRvb2xzOiBhbnk7XG4gIHJlYWRvbmx5IGh1bWFuSW5UaGVMb29wOiBhbnk7XG4gIHJlYWRvbmx5IHJ1bnRpbWVTdGF0ZVZlcnNpb246IGFueTtcblxuICAvLyBPYnNlcnZhYmxlIEFQSXMgZm9yIFJ4SlMgdXNlcnMgLSB3aWxsIGJlIGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9yXG4gIHJlYWRvbmx5IHJlbmRlclRvb2xDYWxscyQ6IGFueTtcbiAgcmVhZG9ubHkgY3VycmVudFJlbmRlclRvb2xDYWxscyQ6IGFueTtcbiAgcmVhZG9ubHkgcnVudGltZVVybCQ6IGFueTtcbiAgcmVhZG9ubHkgaGVhZGVycyQ6IGFueTtcbiAgcmVhZG9ubHkgcHJvcGVydGllcyQ6IGFueTtcbiAgcmVhZG9ubHkgYWdlbnRzJDogYW55O1xuICByZWFkb25seSBmcm9udGVuZFRvb2xzJDogYW55O1xuICByZWFkb25seSBodW1hbkluVGhlTG9vcCQ6IGFueTtcblxuICAvLyBDb250ZXh0IHZhbHVlIGFzIGNvbXB1dGVkIHNpZ25hbCAtIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW4gY29uc3RydWN0b3JcbiAgcmVhZG9ubHkgY29udGV4dDogYW55O1xuICByZWFkb25seSBjb250ZXh0JDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9SVU5USU1FX1VSTCkgcnVudGltZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9IRUFERVJTKSBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9QUk9QRVJUSUVTKSBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBASW5qZWN0KENPUElMT1RLSVRfQUdFTlRTKSBhZ2VudHM6IFJlY29yZDxzdHJpbmcsIEFic3RyYWN0QWdlbnQ+LFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9SRU5ERVJfVE9PTF9DQUxMUylcbiAgICByZW5kZXJUb29sQ2FsbHM6IFRvb2xDYWxsUmVuZGVyW10sXG4gICAgQEluamVjdChDT1BJTE9US0lUX0ZST05URU5EX1RPT0xTKVxuICAgIGZyb250ZW5kVG9vbHM6IEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdLFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9IVU1BTl9JTl9USEVfTE9PUClcbiAgICBodW1hbkluVGhlTG9vcDogQW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXVxuICApIHtcbiAgICAvLyBTdG9yZSBpbml0aWFsIHZhbHVlcyBmb3Igc3RhYmlsaXR5IGNoZWNraW5nXG4gICAgdGhpcy5pbml0aWFsRnJvbnRlbmRUb29scyA9IGZyb250ZW5kVG9vbHM7XG4gICAgdGhpcy5pbml0aWFsSHVtYW5JblRoZUxvb3AgPSBodW1hbkluVGhlTG9vcDtcbiAgICB0aGlzLmluaXRpYWxSZW5kZXJUb29sQ2FsbHMgPSByZW5kZXJUb29sQ2FsbHM7XG5cbiAgICAvLyBQcm9jZXNzIHRvb2xzIGFuZCBodW1hbkluVGhlTG9vcFxuICAgIGNvbnN0IHsgYWxsVG9vbHMsIGFsbFJlbmRlclRvb2xDYWxscyB9ID0gdGhpcy5wcm9jZXNzVG9vbHMoXG4gICAgICBmcm9udGVuZFRvb2xzLFxuICAgICAgaHVtYW5JblRoZUxvb3AsXG4gICAgICByZW5kZXJUb29sQ2FsbHNcbiAgICApO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBjb3JlIGluc3RhbmNlIHdpdGggcHJvY2Vzc2VkIHRvb2xzXG4gICAgdGhpcy5jb3BpbG90a2l0ID0gbmV3IENvcGlsb3RLaXRDb3JlKHtcbiAgICAgIHJ1bnRpbWVVcmw6IHVuZGVmaW5lZCwgLy8gUHJldmVudCBzZXJ2ZXItc2lkZSBmZXRjaGluZ1xuICAgICAgaGVhZGVycyxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgICBhZ2VudHMsXG4gICAgICB0b29sczogYWxsVG9vbHMsXG4gICAgfSBhcyBDb3BpbG90S2l0Q29yZUNvbmZpZyk7XG5cbiAgICAvLyBJbml0aWFsaXplIHN0YXRlIHNpZ25hbHNcbiAgICB0aGlzLl9yZW5kZXJUb29sQ2FsbHMgPVxuICAgICAgc2lnbmFsPFRvb2xDYWxsUmVuZGVyW10+KGFsbFJlbmRlclRvb2xDYWxscyk7XG4gICAgdGhpcy5fY3VycmVudFJlbmRlclRvb2xDYWxscyA9XG4gICAgICBzaWduYWw8VG9vbENhbGxSZW5kZXJbXT4oYWxsUmVuZGVyVG9vbENhbGxzKTtcbiAgICB0aGlzLl9ydW50aW1lVXJsID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4ocnVudGltZVVybCk7XG4gICAgdGhpcy5faGVhZGVycyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihoZWFkZXJzKTtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pihwcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9hZ2VudHMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgQWJzdHJhY3RBZ2VudD4+KGFnZW50cyk7XG4gICAgdGhpcy5fZnJvbnRlbmRUb29scyA9IHNpZ25hbDxBbmd1bGFyRnJvbnRlbmRUb29sPGFueT5bXT4oZnJvbnRlbmRUb29scyk7XG4gICAgdGhpcy5faHVtYW5JblRoZUxvb3AgPSBzaWduYWw8QW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXT4oaHVtYW5JblRoZUxvb3ApO1xuICAgIHRoaXMuX3J1bnRpbWVTdGF0ZVZlcnNpb24gPSBzaWduYWw8bnVtYmVyPigwKTtcblxuICAgIC8vIEluaXRpYWxpemUgY29tcHV0ZWQgc2lnbmFscyBmb3IgcHJvY2Vzc2VkIHZhbHVlc1xuICAgIHRoaXMuX2FsbFRvb2xzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgdG9vbE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBGcm9udGVuZFRvb2w8YW55Pj4oKTtcblxuICAgICAgdGhpcy5fZnJvbnRlbmRUb29scygpLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgICAgdG9vbE1hcC5zZXQodG9vbC5uYW1lLCB0b29sIGFzIEZyb250ZW5kVG9vbDxhbnk+KTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9odW1hbkluVGhlTG9vcCgpLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgICAgY29uc3QgZnJvbnRlbmRUb29sOiBGcm9udGVuZFRvb2w8YW55PiA9IHtcbiAgICAgICAgICBuYW1lOiB0b29sLm5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRvb2wuZGVzY3JpcHRpb24sXG4gICAgICAgICAgcGFyYW1ldGVyczogdG9vbC5wYXJhbWV0ZXJzLFxuICAgICAgICAgIGZvbGxvd1VwOiB0b29sLmZvbGxvd1VwLFxuICAgICAgICAgIGhhbmRsZXI6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgYEh1bWFuLWluLXRoZS1sb29wIHRvb2wgJyR7dG9vbC5uYW1lfScgY2FsbGVkIGJ1dCBubyBpbnRlcmFjdGl2ZSBoYW5kbGVyIGlzIHNldCB1cC5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICB0b29sTWFwLnNldCh0b29sLm5hbWUsIGZyb250ZW5kVG9vbCk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIEFycmF5LmZyb20odG9vbE1hcC52YWx1ZXMoKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hbGxSZW5kZXJUb29sQ2FsbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBjb21iaW5lZDogVG9vbENhbGxSZW5kZXJbXSA9IFsuLi50aGlzLl9yZW5kZXJUb29sQ2FsbHMoKV07XG5cbiAgICAgIC8vIEFkZCByZW5kZXIgY29tcG9uZW50cyBmcm9tIGZyb250ZW5kIHRvb2xzXG4gICAgICB0aGlzLl9mcm9udGVuZFRvb2xzKCkuZm9yRWFjaCgodG9vbCkgPT4ge1xuICAgICAgICBpZiAodG9vbC5yZW5kZXIpIHtcbiAgICAgICAgICBjb21iaW5lZC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgICAuLi4odG9vbC5hZ2VudElkICYmIHsgYWdlbnRJZDogdG9vbC5hZ2VudElkIH0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIHJlbmRlciBjb21wb25lbnRzIGZyb20gaHVtYW4taW4tdGhlLWxvb3AgdG9vbHNcbiAgICAgIHRoaXMuX2h1bWFuSW5UaGVMb29wKCkuZm9yRWFjaCgodG9vbCkgPT4ge1xuICAgICAgICBpZiAodG9vbC5yZW5kZXIpIHtcbiAgICAgICAgICBjb21iaW5lZC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgICAuLi4odG9vbC5hZ2VudElkICYmIHsgYWdlbnRJZDogdG9vbC5hZ2VudElkIH0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbWJpbmVkO1xuICAgIH0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBwdWJsaWMgcmVhZG9ubHkgc2lnbmFsc1xuICAgIHRoaXMucmVuZGVyVG9vbENhbGxzID0gdGhpcy5fYWxsUmVuZGVyVG9vbENhbGxzO1xuICAgIHRoaXMuY3VycmVudFJlbmRlclRvb2xDYWxscyA9IHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucnVudGltZVVybCA9IHRoaXMuX3J1bnRpbWVVcmwuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuX2hlYWRlcnMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHRoaXMuX3Byb3BlcnRpZXMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuYWdlbnRzID0gdGhpcy5fYWdlbnRzLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLmZyb250ZW5kVG9vbHMgPSB0aGlzLl9mcm9udGVuZFRvb2xzLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLmh1bWFuSW5UaGVMb29wID0gdGhpcy5faHVtYW5JblRoZUxvb3AuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucnVudGltZVN0YXRlVmVyc2lvbiA9IHRoaXMuX3J1bnRpbWVTdGF0ZVZlcnNpb24uYXNSZWFkb25seSgpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBPYnNlcnZhYmxlIEFQSXNcbiAgICB0aGlzLnJlbmRlclRvb2xDYWxscyQgPSB0b09ic2VydmFibGUodGhpcy5yZW5kZXJUb29sQ2FsbHMpO1xuICAgIHRoaXMuY3VycmVudFJlbmRlclRvb2xDYWxscyQgPSB0b09ic2VydmFibGUodGhpcy5jdXJyZW50UmVuZGVyVG9vbENhbGxzKTtcbiAgICB0aGlzLnJ1bnRpbWVVcmwkID0gdG9PYnNlcnZhYmxlKHRoaXMucnVudGltZVVybCk7XG4gICAgdGhpcy5oZWFkZXJzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmhlYWRlcnMpO1xuICAgIHRoaXMucHJvcGVydGllcyQgPSB0b09ic2VydmFibGUodGhpcy5wcm9wZXJ0aWVzKTtcbiAgICB0aGlzLmFnZW50cyQgPSB0b09ic2VydmFibGUodGhpcy5hZ2VudHMpO1xuICAgIHRoaXMuZnJvbnRlbmRUb29scyQgPSB0b09ic2VydmFibGUodGhpcy5mcm9udGVuZFRvb2xzKTtcbiAgICB0aGlzLmh1bWFuSW5UaGVMb29wJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmh1bWFuSW5UaGVMb29wKTtcblxuICAgIC8vIEluaXRpYWxpemUgY29udGV4dCB2YWx1ZSBhcyBjb21wdXRlZCBzaWduYWxcbiAgICB0aGlzLmNvbnRleHQgPSBjb21wdXRlZDxDb3BpbG90S2l0Q29udGV4dFZhbHVlPigoKSA9PiB7XG4gICAgICAvLyBUb3VjaCB0aGUgcnVudGltZSBzdGF0ZSB2ZXJzaW9uIHRvIGVuc3VyZSB0aGlzIGNvbXB1dGVkIHVwZGF0ZXNcbiAgICAgIC8vIHdoZW4gcnVudGltZSBldmVudHMgb2NjdXIgKGxvYWRlZC9lcnJvcilcbiAgICAgIHRoaXMucnVudGltZVN0YXRlVmVyc2lvbigpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3BpbG90a2l0OiB0aGlzLmNvcGlsb3RraXQsXG4gICAgICAgIHJlbmRlclRvb2xDYWxsczogdGhpcy5yZW5kZXJUb29sQ2FsbHMoKSxcbiAgICAgICAgY3VycmVudFJlbmRlclRvb2xDYWxsczogdGhpcy5jdXJyZW50UmVuZGVyVG9vbENhbGxzKCksXG4gICAgICAgIHNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHM6ICh2KSA9PiB0aGlzLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHModiksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb250ZXh0JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRleHQpO1xuXG4gICAgLy8gRWZmZWN0cyBtdXN0IGJlIGNyZWF0ZWQgaW4gaW5qZWN0aW9uIGNvbnRleHQgKGNvbnN0cnVjdG9yKVxuICAgIHRoaXMuc2V0dXBSdW50aW1lU3luY0VmZmVjdHMoKTtcbiAgICB0aGlzLnNldHVwU3RhYmlsaXR5V2FybmluZ3MoKTtcbiAgICB0aGlzLnNldHVwRXZlbnRTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGZyb250ZW5kIHRvb2xzIGFuZCBodW1hbi1pbi10aGUtbG9vcCB0b29sc1xuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzVG9vbHMoXG4gICAgZnJvbnRlbmRUb29sczogQW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10sXG4gICAgaHVtYW5JblRoZUxvb3A6IEFuZ3VsYXJIdW1hbkluVGhlTG9vcDxhbnk+W10sXG4gICAgcmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcltdXG4gICk6IHtcbiAgICBhbGxUb29sczogRnJvbnRlbmRUb29sPGFueT5bXTtcbiAgICBhbGxSZW5kZXJUb29sQ2FsbHM6IFRvb2xDYWxsUmVuZGVyW107XG4gIH0ge1xuICAgIGNvbnN0IHRvb2xNYXAgPSBuZXcgTWFwPHN0cmluZywgRnJvbnRlbmRUb29sPGFueT4+KCk7XG4gICAgY29uc3QgYWxsUmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcltdID0gWy4uLnJlbmRlclRvb2xDYWxsc107XG5cbiAgICAvLyBBZGQgZnJvbnRlbmQgdG9vbHNcbiAgICBmcm9udGVuZFRvb2xzLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgIHRvb2xNYXAuc2V0KHRvb2wubmFtZSwgdG9vbCBhcyBGcm9udGVuZFRvb2w8YW55Pik7XG5cbiAgICAgIC8vIEFkZCByZW5kZXIgY29tcG9uZW50IGlmIHByb3ZpZGVkXG4gICAgICBpZiAodG9vbC5yZW5kZXIpIHtcbiAgICAgICAgYWxsUmVuZGVyVG9vbENhbGxzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICByZW5kZXI6IHRvb2wucmVuZGVyLFxuICAgICAgICAgIC4uLih0b29sLmFnZW50SWQgJiYgeyBhZ2VudElkOiB0b29sLmFnZW50SWQgfSksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gUHJvY2VzcyBodW1hbi1pbi10aGUtbG9vcCB0b29sc1xuICAgIGh1bWFuSW5UaGVMb29wLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgIC8vIENyZWF0ZSBhIGZyb250ZW5kIHRvb2wgd2l0aCBwbGFjZWhvbGRlciBoYW5kbGVyXG4gICAgICBjb25zdCBmcm9udGVuZFRvb2w6IEZyb250ZW5kVG9vbDxhbnk+ID0ge1xuICAgICAgICBuYW1lOiB0b29sLm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0b29sLmRlc2NyaXB0aW9uLFxuICAgICAgICBwYXJhbWV0ZXJzOiB0b29sLnBhcmFtZXRlcnMsXG4gICAgICAgIGZvbGxvd1VwOiB0b29sLmZvbGxvd1VwLFxuICAgICAgICAuLi4odG9vbC5hZ2VudElkICYmIHsgYWdlbnRJZDogdG9vbC5hZ2VudElkIH0pLFxuICAgICAgICBoYW5kbGVyOiBhc3luYyAoYXJnczogYW55KSA9PiB7XG4gICAgICAgICAgLy8gUGxhY2Vob2xkZXIgaGFuZGxlciAtIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIHJlbmRlciBjb21wb25lbnRcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgSHVtYW4taW4tdGhlLWxvb3AgdG9vbCAnJHt0b29sLm5hbWV9JyBjYWxsZWQgYnV0IG5vIGludGVyYWN0aXZlIGhhbmRsZXIgaXMgc2V0IHVwLmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgdG9vbE1hcC5zZXQodG9vbC5uYW1lLCBmcm9udGVuZFRvb2wpO1xuXG4gICAgICAvLyBBZGQgdGhlIHJlbmRlciBjb21wb25lbnRcbiAgICAgIGlmICh0b29sLnJlbmRlcikge1xuICAgICAgICBhbGxSZW5kZXJUb29sQ2FsbHMucHVzaCh7XG4gICAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgLi4uKHRvb2wuYWdlbnRJZCAmJiB7IGFnZW50SWQ6IHRvb2wuYWdlbnRJZCB9KSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyBhbGxUb29sczogQXJyYXkuZnJvbSh0b29sTWFwLnZhbHVlcygpKSwgYWxsUmVuZGVyVG9vbENhbGxzIH07XG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgc3RhYmlsaXR5IHdhcm5pbmcgZWZmZWN0c1xuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cFN0YWJpbGl0eVdhcm5pbmdzKCk6IHZvaWQge1xuICAgIC8vIFdhcm4gaWYgZnJvbnRlbmRUb29scyBjaGFuZ2VzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9mcm9udGVuZFRvb2xzKCk7XG4gICAgICBpZiAoXG4gICAgICAgIGN1cnJlbnQgIT09IHRoaXMuaW5pdGlhbEZyb250ZW5kVG9vbHMgJiZcbiAgICAgICAgdGhpcy5pbml0aWFsRnJvbnRlbmRUb29scy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJmcm9udGVuZFRvb2xzIG11c3QgYmUgYSBzdGFibGUgYXJyYXkuIFRvIGFkZC9yZW1vdmUgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBXYXJuIGlmIGh1bWFuSW5UaGVMb29wIGNoYW5nZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2h1bWFuSW5UaGVMb29wKCk7XG4gICAgICBpZiAoXG4gICAgICAgIGN1cnJlbnQgIT09IHRoaXMuaW5pdGlhbEh1bWFuSW5UaGVMb29wICYmXG4gICAgICAgIHRoaXMuaW5pdGlhbEh1bWFuSW5UaGVMb29wLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcImh1bWFuSW5UaGVMb29wIG11c3QgYmUgYSBzdGFibGUgYXJyYXkuIFRvIGFkZC9yZW1vdmUgaHVtYW4taW4tdGhlLWxvb3AgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBQcmV2aW91c2x5IHdhcm5lZCBpZiByZW5kZXJUb29sQ2FsbHMgcmVmZXJlbmNlIGNoYW5nZWQ7IHJlbW92ZWQgcGVyIFVYIGZlZWRiYWNrXG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgZWZmZWN0cyB0byBzeW5jIHJ1bnRpbWUgY29uZmlndXJhdGlvbiB3aXRoIENvcGlsb3RLaXRDb3JlXG4gICAqL1xuICBwcml2YXRlIHNldHVwUnVudGltZVN5bmNFZmZlY3RzKCk6IHZvaWQge1xuICAgIC8vIFN5bmMgcnVudGltZSBVUkxcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5ydW50aW1lVXJsKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvcGlsb3RraXQuc2V0UnVudGltZVVybCh1cmwpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBTeW5jIGhlYWRlcnNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVycygpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuY29waWxvdGtpdC5zZXRIZWFkZXJzKGhlYWRlcnMpKTtcbiAgICB9KTtcblxuICAgIC8vIFN5bmMgcHJvcGVydGllc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5wcm9wZXJ0aWVzKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5jb3BpbG90a2l0LnNldFByb3BlcnRpZXMocHJvcGVydGllcykpO1xuICAgIH0pO1xuXG4gICAgLy8gU3luYyBhZ2VudHNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgYWdlbnRzID0gdGhpcy5hZ2VudHMoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmNvcGlsb3RraXQuc2V0QWdlbnRzKGFnZW50cykpO1xuICAgIH0pO1xuXG4gICAgLy8gU3luYyB0b29scyAtIGNvbXB1dGVkIGZyb20gZnJvbnRlbmQgdG9vbHMgYW5kIGh1bWFuLWluLXRoZS1sb29wXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRvb2xzID0gdGhpcy5fYWxsVG9vbHMoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNldFRvb2xzID0gKHRoaXMuY29waWxvdGtpdCBhcyBhbnkpPy5zZXRUb29scztcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUb29scyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgc2V0VG9vbHMuY2FsbCh0aGlzLmNvcGlsb3RraXQsIHRvb2xzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIENvcGlsb3RLaXQgcnVudGltZSBldmVudHNcbiAgICovXG4gIHByaXZhdGUgc2V0dXBFdmVudFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHRoaXMuY29waWxvdGtpdC5zdWJzY3JpYmUoe1xuICAgICAgb25SdW50aW1lQ29ubmVjdGlvblN0YXR1c0NoYW5nZWQ6ICgpID0+IHtcbiAgICAgICAgLy8gSW5jcmVtZW50IHZlcnNpb24gdG8gbm90aWZ5IGFsbCBjb25zdW1lcnMgdGhhdCBydW50aW1lIHN0YXRlIGhhcyBjaGFuZ2VkXG4gICAgICAgIC8vIFRoaXMgdHJpZ2dlcnMgcmUtZXZhbHVhdGlvbiBvZiBjb21wdXRlZCBzaWduYWxzIHRoYXQgZGVwZW5kIG9uIHJ1bnRpbWUgc3RhdGVcbiAgICAgICAgdGhpcy5ub3RpZnlSdW50aW1lU3RhdGVDaGFuZ2UoKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBSb290IHNlcnZpY2UgbGl2ZXMgZm9yIGFwcCBsaWZldGltZTsgdW5zdWJzY3JpYmUgbm90IG5lZWRlZC5cbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RpZnkgY29uc3VtZXJzIHRoYXQgdGhlIHJ1bnRpbWUgc3RhdGUgaGFzIGNoYW5nZWQuXG4gICAqIFRoaXMgaXMgc2ltaWxhciB0byBSZWFjdCdzIGZvcmNlVXBkYXRlIC0gaXQgdHJpZ2dlcnMgY2hhbmdlIGRldGVjdGlvblxuICAgKiBmb3IgYW55IGNvbXB1dGVkIHNpZ25hbHMgb3IgZWZmZWN0cyB0aGF0IGRlcGVuZCBvbiBydW50aW1lIHN0YXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBub3RpZnlSdW50aW1lU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcnVudGltZVN0YXRlVmVyc2lvbi51cGRhdGUoKHZlcnNpb24pID0+IHZlcnNpb24gKyAxKTtcbiAgfVxuXG4gIC8vIFB1YmxpYyBtdXRhdGlvbiBtZXRob2RzXG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcnVudGltZSBVUkxcbiAgICovXG4gIHNldFJ1bnRpbWVVcmwodXJsPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fcnVudGltZVVybC5zZXQodXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgcmVxdWVzdCBoZWFkZXJzXG4gICAqL1xuICBzZXRIZWFkZXJzKGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJzLnNldChoZWFkZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgcnVudGltZSBwcm9wZXJ0aWVzXG4gICAqL1xuICBzZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdGhpcy5fcHJvcGVydGllcy5zZXQocHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFnZW50cyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzZXRBZ2VudHMoYWdlbnRzOiBSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdEFnZW50Pik6IHZvaWQge1xuICAgIHRoaXMuX2FnZW50cy5zZXQoYWdlbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gYWdlbnQgYnkgSURcbiAgICogQHBhcmFtIGFnZW50SWQgLSBUaGUgYWdlbnQgSUQgdG8gcmV0cmlldmVcbiAgICogQHJldHVybnMgVGhlIGFnZW50IG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAgICovXG4gIGdldEFnZW50KGFnZW50SWQ6IHN0cmluZyk6IEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvcGlsb3RraXQuZ2V0QWdlbnQoYWdlbnRJZCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHJlbmRlciB0b29sIGNhbGxzICh3YXJucyBpZiBvYmplY3QgcmVmZXJlbmNlIGNoYW5nZXMpXG4gICAqL1xuICBzZXRSZW5kZXJUb29sQ2FsbHMocmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcltdKTogdm9pZCB7XG4gICAgdGhpcy5fcmVuZGVyVG9vbENhbGxzLnNldChyZW5kZXJUb29sQ2FsbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBmcm9udGVuZCB0b29scyBhcnJheVxuICAgKi9cbiAgc2V0RnJvbnRlbmRUb29scyhmcm9udGVuZFRvb2xzOiBBbmd1bGFyRnJvbnRlbmRUb29sPGFueT5bXSk6IHZvaWQge1xuICAgIGlmIChmcm9udGVuZFRvb2xzICE9PSB0aGlzLmluaXRpYWxGcm9udGVuZFRvb2xzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBcImZyb250ZW5kVG9vbHMgbXVzdCBiZSBhIHN0YWJsZSBhcnJheS4gVG8gYWRkL3JlbW92ZSB0b29scyBkeW5hbWljYWxseSwgdXNlIGR5bmFtaWMgdG9vbCByZWdpc3RyYXRpb24uXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX2Zyb250ZW5kVG9vbHMuc2V0KGZyb250ZW5kVG9vbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBodW1hbi1pbi10aGUtbG9vcCBhcnJheVxuICAgKi9cbiAgc2V0SHVtYW5JblRoZUxvb3AoaHVtYW5JblRoZUxvb3A6IEFuZ3VsYXJIdW1hbkluVGhlTG9vcDxhbnk+W10pOiB2b2lkIHtcbiAgICBpZiAoaHVtYW5JblRoZUxvb3AgIT09IHRoaXMuaW5pdGlhbEh1bWFuSW5UaGVMb29wKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBcImh1bWFuSW5UaGVMb29wIG11c3QgYmUgYSBzdGFibGUgYXJyYXkuIFRvIGFkZC9yZW1vdmUgaHVtYW4taW4tdGhlLWxvb3AgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9odW1hbkluVGhlTG9vcC5zZXQoaHVtYW5JblRoZUxvb3ApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjdXJyZW50IHJlbmRlciB0b29sIGNhbGxzXG4gICAqL1xuICBzZXRDdXJyZW50UmVuZGVyVG9vbENhbGxzKHJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXSk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMuc2V0KHJlbmRlclRvb2xDYWxscyk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSB0b29sIHJlbmRlclxuICAgKi9cbiAgcmVnaXN0ZXJUb29sUmVuZGVyKG5hbWU6IHN0cmluZywgcmVuZGVyOiBUb29sQ2FsbFJlbmRlcik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzKCk7XG4gICAgaWYgKGN1cnJlbnQuZmluZCgocikgPT4gci5uYW1lID09PSBuYW1lKSkge1xuICAgICAgY29uc29sZS53YXJuKGBUb29sIHJlbmRlciBmb3IgJyR7bmFtZX0nIGlzIGJlaW5nIG92ZXJ3cml0dGVuYCk7XG4gICAgfVxuICAgIHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMuc2V0KFtcbiAgICAgIC4uLmN1cnJlbnQuZmlsdGVyKChyKSA9PiByLm5hbWUgIT09IG5hbWUpLFxuICAgICAgcmVuZGVyLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXIgYSB0b29sIHJlbmRlclxuICAgKi9cbiAgdW5yZWdpc3RlclRvb2xSZW5kZXIobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMoKTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IGN1cnJlbnQuZmlsdGVyKChyKSA9PiByLm5hbWUgIT09IG5hbWUpO1xuICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggIT09IGN1cnJlbnQubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzLnNldChmaWx0ZXJlZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNwZWNpZmljIHRvb2wgcmVuZGVyXG4gICAqL1xuICBnZXRUb29sUmVuZGVyKG5hbWU6IHN0cmluZyk6IFRvb2xDYWxsUmVuZGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJlbmRlclRvb2xDYWxscygpLmZpbmQoKHIpID0+IHIubmFtZSA9PT0gbmFtZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,6 +2,7 @@ import { Directive, Input, Output, EventEmitter, signal, Inject, } from "@angula
|
|
|
2
2
|
import { toObservable } from "@angular/core/rxjs-interop";
|
|
3
3
|
import { CopilotKitService } from "../core/copilotkit.service";
|
|
4
4
|
import { DEFAULT_AGENT_ID } from "@copilotkitnext/shared";
|
|
5
|
+
import { CopilotKitCoreRuntimeConnectionStatus } from "@copilotkitnext/core";
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "../core/copilotkit.service";
|
|
7
8
|
/**
|
|
@@ -166,9 +167,12 @@ export class CopilotKitAgentDirective {
|
|
|
166
167
|
subscribeToCore() {
|
|
167
168
|
// Subscribe to CopilotKit changes to detect agent updates
|
|
168
169
|
this.coreUnsubscribe = this.copilotkit.copilotkit.subscribe({
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
onRuntimeConnectionStatusChanged: ({ status }) => {
|
|
171
|
+
if (status === CopilotKitCoreRuntimeConnectionStatus.Connected ||
|
|
172
|
+
status === CopilotKitCoreRuntimeConnectionStatus.Disconnected) {
|
|
173
|
+
// Re-check agent when runtime connection changes state
|
|
174
|
+
this.setupAgent();
|
|
175
|
+
}
|
|
172
176
|
},
|
|
173
177
|
});
|
|
174
178
|
}
|
|
@@ -214,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
214
218
|
}], runFailed: [{
|
|
215
219
|
type: Output
|
|
216
220
|
}] } });
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1hZ2VudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlyZWN0aXZlcy9jb3BpbG90a2l0LWFnZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFFMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQVNXO0lBUnRDLEtBQUssQ0FBaUI7SUFDdEIsaUJBQWlCLENBQStCO0lBQ2hELGVBQWUsQ0FBYyxDQUFDLHNDQUFzQztJQUNwRSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLGFBQWEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDdkMsV0FBVyxHQUFHLE1BQU0sQ0FBNEIsU0FBUyxDQUFDLENBQUM7SUFFbkUsWUFDOEMsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFDeEUsQ0FBQztJQUVKOzs7T0FHRztJQUNNLE9BQU8sQ0FBVTtJQUUxQjs7O09BR0c7SUFDSCxJQUNJLGdCQUFnQixDQUFDLEtBQXlCO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7SUFFdEU7O09BRUc7SUFDTyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUV0RDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFjO1FBQ3hCLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVuRDs7T0FFRztJQUNPLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWhEOztPQUVHO0lBQ08sY0FBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFbkQ7O09BRUc7SUFDTyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVqRDs7T0FFRztJQUNPLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRTlDLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUQsNkJBQTZCO1lBQzdCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXhELGlCQUFpQjtRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakMscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsQyw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDNUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25DLENBQUM7Z0JBQ0QsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO2dCQUNELGdCQUFnQixFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELGNBQWMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDakMsQ0FBQztnQkFDRCxXQUFXLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsMERBQTBEO1FBQzFELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQzFELGVBQWUsRUFBRSxHQUFHLEVBQUU7Z0JBQ3BCLG9DQUFvQztnQkFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQzt3R0EzS1Usd0JBQXdCLGtCQVN6QixpQkFBaUI7NEZBVGhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQVVJLE1BQU07MkJBQUMsaUJBQWlCO3lDQU9sQixPQUFPO3NCQUFmLEtBQUs7Z0JBT0YsZ0JBQWdCO3NCQURuQixLQUFLO3VCQUFDLGlCQUFpQjtnQkFRZCxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLGFBQWE7c0JBQXRCLE1BQU07Z0JBb0JILE9BQU87c0JBRFYsS0FBSztnQkFZSSxjQUFjO3NCQUF2QixNQUFNO2dCQUtHLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csY0FBYztzQkFBdkIsTUFBTTtnQkFLRyxZQUFZO3NCQUFyQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgc2lnbmFsLFxuICBJbmplY3QsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29waWxvdEtpdFNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnNlcnZpY2VcIjtcbmltcG9ydCB7IEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuaW1wb3J0IHsgREVGQVVMVF9BR0VOVF9JRCB9IGZyb20gXCJAY29waWxvdGtpdG5leHQvc2hhcmVkXCI7XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIHdhdGNoIGFuZCBpbnRlcmFjdCB3aXRoIENvcGlsb3RLaXQgYWdlbnRzLlxuICogUHJvdmlkZXMgcmVhY3RpdmUgb3V0cHV0cyBmb3IgYWdlbnQgc3RhdGUgY2hhbmdlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPCEtLSBCYXNpYyB1c2FnZSB3aXRoIGRlZmF1bHQgYWdlbnQgLS0+XG4gKiA8ZGl2IGNvcGlsb3RraXRBZ2VudFxuICogICAgICAoYWdlbnRDaGFuZ2UpPVwib25BZ2VudENoYW5nZSgkZXZlbnQpXCJcbiAqICAgICAgKHJ1bm5pbmdDaGFuZ2UpPVwiaXNQcm9jZXNzaW5nID0gJGV2ZW50XCI+XG4gKiAgIENvbnRlbnQgaGVyZVxuICogPC9kaXY+XG4gKlxuICogPCEtLSBXaXRoIHNwZWNpZmljIGFnZW50IElEIC0tPlxuICogPGRpdiBjb3BpbG90a2l0QWdlbnRcbiAqICAgICAgW2FnZW50SWRdPVwiJ215LWFnZW50LWlkJ1wiXG4gKiAgICAgIChhZ2VudENoYW5nZSk9XCJjdXJyZW50QWdlbnQgPSAkZXZlbnRcIlxuICogICAgICAocnVubmluZ0NoYW5nZSk9XCJvblJ1bm5pbmdTdGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAqICAgICAgKG1lc3NhZ2VzQ2hhbmdlKT1cIm9uTWVzc2FnZXNVcGRhdGUoJGV2ZW50KVwiXG4gKiAgICAgIChzdGF0ZUNoYW5nZSk9XCJvblN0YXRlVXBkYXRlKCRldmVudClcIj5cbiAqICAgQ29udGVudCBoZXJlXG4gKiA8L2Rpdj5cbiAqXG4gKiA8IS0tIFR3by13YXkgYmluZGluZyBmb3IgcnVubmluZyBzdGF0ZSAtLT5cbiAqIDxkaXYgY29waWxvdGtpdEFnZW50XG4gKiAgICAgIFsocnVubmluZyldPVwiaXNBZ2VudFJ1bm5pbmdcIj5cbiAqICAgPHNwYW4gKm5nSWY9XCJpc0FnZW50UnVubmluZ1wiPlByb2Nlc3NpbmcuLi48L3NwYW4+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2NvcGlsb3RraXRBZ2VudF1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdEtpdEFnZW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgYWdlbnQ/OiBBYnN0cmFjdEFnZW50O1xuICBwcml2YXRlIGFnZW50U3Vic2NyaXB0aW9uPzogeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9O1xuICBwcml2YXRlIGNvcmVVbnN1YnNjcmliZT86ICgpID0+IHZvaWQ7IC8vIHN1YnNjcmliZSByZXR1cm5zIGZ1bmN0aW9uIGRpcmVjdGx5XG4gIHByaXZhdGUgX2lzUnVubmluZyA9IGZhbHNlO1xuICBwcml2YXRlIHJ1bm5pbmdTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGFnZW50U2lnbmFsID0gc2lnbmFsPEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDb3BpbG90S2l0U2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBjb3BpbG90a2l0OiBDb3BpbG90S2l0U2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYWdlbnQgdG8gd2F0Y2guXG4gICAqIElmIG5vdCBwcm92aWRlZCwgdXNlcyB0aGUgZGVmYXVsdCBhZ2VudCBJRC5cbiAgICovXG4gIEBJbnB1dCgpIGFnZW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsdGVybmF0aXZlIGlucHV0IHVzaW5nIHRoZSBkaXJlY3RpdmUgc2VsZWN0b3IuXG4gICAqIEFsbG93czogW2NvcGlsb3RraXRBZ2VudF09XCInYWdlbnQtaWQnXCJcbiAgICovXG4gIEBJbnB1dChcImNvcGlsb3RraXRBZ2VudFwiKVxuICBzZXQgZGlyZWN0aXZlQWdlbnRJZCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5hZ2VudElkID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGFnZW50IGluc3RhbmNlIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgYWdlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHJ1bm5pbmcgc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBydW5uaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBydW5uaW5nIHN0YXRlLlxuICAgKi9cbiAgZ2V0IHJ1bm5pbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0b09ic2VydmFibGUodGhpcy5ydW5uaW5nU2lnbmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBhZ2VudCBpbnN0YW5jZS5cbiAgICovXG4gIGdldCBhZ2VudCQoKTogT2JzZXJ2YWJsZTxBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRvT2JzZXJ2YWJsZSh0aGlzLmFnZW50U2lnbmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUd28td2F5IGJpbmRpbmcgZm9yIHJ1bm5pbmcgc3RhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgcnVubmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNSdW5uaW5nO1xuICB9XG4gIHNldCBydW5uaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgLy8gSW5wdXQgc2V0dGVyIGZvciB0d28td2F5IGJpbmRpbmcgKHRob3VnaCB0eXBpY2FsbHkgcmVhZC1vbmx5IGZyb20gYWdlbnQpXG4gICAgdGhpcy5faXNSdW5uaW5nID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhZ2VudCBtZXNzYWdlcyBjaGFuZ2UuXG4gICAqL1xuICBAT3V0cHV0KCkgbWVzc2FnZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhZ2VudCBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIHN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBydW4gaXMgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcnVuSW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIHJ1biBpcyBmaW5hbGl6ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcnVuRmluYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBydW4gZmFpbHMuXG4gICAqL1xuICBAT3V0cHV0KCkgcnVuRmFpbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cEFnZW50KCk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0NvcmUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcImFnZW50SWRcIl0gJiYgIWNoYW5nZXNbXCJhZ2VudElkXCJdLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAvLyBBZ2VudCBJRCBjaGFuZ2VkLCByZS1zZXR1cFxuICAgICAgdGhpcy5jbGVhbnVwQWdlbnRTdWJzY3JpcHRpb24oKTtcbiAgICAgIHRoaXMuc2V0dXBBZ2VudCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cEFnZW50U3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5jbGVhbnVwQ29yZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEFnZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGVmZmVjdGl2ZUFnZW50SWQgPSB0aGlzLmFnZW50SWQgPz8gREVGQVVMVF9BR0VOVF9JRDtcbiAgICB0aGlzLmFnZW50ID0gdGhpcy5jb3BpbG90a2l0LmdldEFnZW50KGVmZmVjdGl2ZUFnZW50SWQpO1xuXG4gICAgLy8gVXBkYXRlIHNpZ25hbHNcbiAgICB0aGlzLmFnZW50U2lnbmFsLnNldCh0aGlzLmFnZW50KTtcblxuICAgIC8vIEVtaXQgaW5pdGlhbCBhZ2VudFxuICAgIHRoaXMuYWdlbnRDaGFuZ2UuZW1pdCh0aGlzLmFnZW50KTtcblxuICAgIC8vIFN1YnNjcmliZSB0byBhZ2VudCBldmVudHNcbiAgICB0aGlzLnN1YnNjcmliZVRvQWdlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9BZ2VudCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBBZ2VudFN1YnNjcmlwdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuYWdlbnQpIHtcbiAgICAgIHRoaXMuYWdlbnRTdWJzY3JpcHRpb24gPSB0aGlzLmFnZW50LnN1YnNjcmliZSh7XG4gICAgICAgIG9uTWVzc2FnZXNDaGFuZ2VkOiAocGFyYW1zKSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlc0NoYW5nZS5lbWl0KHBhcmFtcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3RhdGVDaGFuZ2VkOiAocGFyYW1zKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHBhcmFtcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUnVuSW5pdGlhbGl6ZWQ6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLl9pc1J1bm5pbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucnVubmluZ1NpZ25hbC5zZXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5ydW5uaW5nQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5ydW5Jbml0aWFsaXplZC5lbWl0KHBhcmFtcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUnVuRmluYWxpemVkOiAocGFyYW1zKSA9PiB7XG4gICAgICAgICAgdGhpcy5faXNSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5ydW5uaW5nU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5ydW5uaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucnVuRmluYWxpemVkLmVtaXQocGFyYW1zKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5GYWlsZWQ6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJ1bm5pbmdTaWduYWwuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJ1bm5pbmdDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5ydW5GYWlsZWQuZW1pdChwYXJhbXMpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0NvcmUoKTogdm9pZCB7XG4gICAgLy8gU3Vic2NyaWJlIHRvIENvcGlsb3RLaXQgY2hhbmdlcyB0byBkZXRlY3QgYWdlbnQgdXBkYXRlc1xuICAgIHRoaXMuY29yZVVuc3Vic2NyaWJlID0gdGhpcy5jb3BpbG90a2l0LmNvcGlsb3RraXQuc3Vic2NyaWJlKHtcbiAgICAgIG9uUnVudGltZUxvYWRlZDogKCkgPT4ge1xuICAgICAgICAvLyBSZS1jaGVjayBhZ2VudCB3aGVuIHJ1bnRpbWUgbG9hZHNcbiAgICAgICAgdGhpcy5zZXR1cEFnZW50KCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwQWdlbnRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5hZ2VudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmFnZW50U3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwQ29yZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNvcmVVbnN1YnNjcmliZT8uKCk7XG4gICAgdGhpcy5jb3JlVW5zdWJzY3JpYmUgPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1hZ2VudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlyZWN0aXZlcy9jb3BpbG90a2l0LWFnZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFN0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQVNXO0lBUnRDLEtBQUssQ0FBaUI7SUFDdEIsaUJBQWlCLENBQStCO0lBQ2hELGVBQWUsQ0FBYyxDQUFDLHNDQUFzQztJQUNwRSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLGFBQWEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDdkMsV0FBVyxHQUFHLE1BQU0sQ0FBNEIsU0FBUyxDQUFDLENBQUM7SUFFbkUsWUFDOEMsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFDeEUsQ0FBQztJQUVKOzs7T0FHRztJQUNNLE9BQU8sQ0FBVTtJQUUxQjs7O09BR0c7SUFDSCxJQUNJLGdCQUFnQixDQUFDLEtBQXlCO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7SUFF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LENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDO3dHQWhMVSx3QkFBd0Isa0JBU3pCLGlCQUFpQjs0RkFUaEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBVUksTUFBTTsyQkFBQyxpQkFBaUI7eUNBT2xCLE9BQU87c0JBQWYsS0FBSztnQkFPRixnQkFBZ0I7c0JBRG5CLEtBQUs7dUJBQUMsaUJBQWlCO2dCQVFkLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csYUFBYTtzQkFBdEIsTUFBTTtnQkFvQkgsT0FBTztzQkFEVixLQUFLO2dCQVlJLGNBQWM7c0JBQXZCLE1BQU07Z0JBS0csV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxjQUFjO3NCQUF2QixNQUFNO2dCQUtHLFlBQVk7c0JBQXJCLE1BQU07Z0JBS0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBzaWduYWwsXG4gIEluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDb3BpbG90S2l0U2VydmljZSB9IGZyb20gXCIuLi9jb3JlL2NvcGlsb3RraXQuc2VydmljZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RBZ2VudCB9IGZyb20gXCJAYWctdWkvY2xpZW50XCI7XG5pbXBvcnQgeyBERUZBVUxUX0FHRU5UX0lEIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9zaGFyZWRcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRDb3JlUnVudGltZUNvbm5lY3Rpb25TdGF0dXMgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gd2F0Y2ggYW5kIGludGVyYWN0IHdpdGggQ29waWxvdEtpdCBhZ2VudHMuXG4gKiBQcm92aWRlcyByZWFjdGl2ZSBvdXRwdXRzIGZvciBhZ2VudCBzdGF0ZSBjaGFuZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8IS0tIEJhc2ljIHVzYWdlIHdpdGggZGVmYXVsdCBhZ2VudCAtLT5cbiAqIDxkaXYgY29waWxvdGtpdEFnZW50XG4gKiAgICAgIChhZ2VudENoYW5nZSk9XCJvbkFnZW50Q2hhbmdlKCRldmVudClcIlxuICogICAgICAocnVubmluZ0NoYW5nZSk9XCJpc1Byb2Nlc3NpbmcgPSAkZXZlbnRcIj5cbiAqICAgQ29udGVudCBoZXJlXG4gKiA8L2Rpdj5cbiAqXG4gKiA8IS0tIFdpdGggc3BlY2lmaWMgYWdlbnQgSUQgLS0+XG4gKiA8ZGl2IGNvcGlsb3RraXRBZ2VudFxuICogICAgICBbYWdlbnRJZF09XCInbXktYWdlbnQtaWQnXCJcbiAqICAgICAgKGFnZW50Q2hhbmdlKT1cImN1cnJlbnRBZ2VudCA9ICRldmVudFwiXG4gKiAgICAgIChydW5uaW5nQ2hhbmdlKT1cIm9uUnVubmluZ1N0YXRlQ2hhbmdlKCRldmVudClcIlxuICogICAgICAobWVzc2FnZXNDaGFuZ2UpPVwib25NZXNzYWdlc1VwZGF0ZSgkZXZlbnQpXCJcbiAqICAgICAgKHN0YXRlQ2hhbmdlKT1cIm9uU3RhdGVVcGRhdGUoJGV2ZW50KVwiPlxuICogICBDb250ZW50IGhlcmVcbiAqIDwvZGl2PlxuICpcbiAqIDwhLS0gVHdvLXdheSBiaW5kaW5nIGZvciBydW5uaW5nIHN0YXRlIC0tPlxuICogPGRpdiBjb3BpbG90a2l0QWdlbnRcbiAqICAgICAgWyhydW5uaW5nKV09XCJpc0FnZW50UnVubmluZ1wiPlxuICogICA8c3BhbiAqbmdJZj1cImlzQWdlbnRSdW5uaW5nXCI+UHJvY2Vzc2luZy4uLjwvc3Bhbj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbY29waWxvdGtpdEFnZW50XVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90S2l0QWdlbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBhZ2VudD86IEFic3RyYWN0QWdlbnQ7XG4gIHByaXZhdGUgYWdlbnRTdWJzY3JpcHRpb24/OiB7IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkIH07XG4gIHByaXZhdGUgY29yZVVuc3Vic2NyaWJlPzogKCkgPT4gdm9pZDsgLy8gc3Vic2NyaWJlIHJldHVybnMgZnVuY3Rpb24gZGlyZWN0bHlcbiAgcHJpdmF0ZSBfaXNSdW5uaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcnVubmluZ1NpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgYWdlbnRTaWduYWwgPSBzaWduYWw8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBhZ2VudCB0byB3YXRjaC5cbiAgICogSWYgbm90IHByb3ZpZGVkLCB1c2VzIHRoZSBkZWZhdWx0IGFnZW50IElELlxuICAgKi9cbiAgQElucHV0KCkgYWdlbnRJZD86IHN0cmluZztcblxuICAvKipcbiAgICogQWx0ZXJuYXRpdmUgaW5wdXQgdXNpbmcgdGhlIGRpcmVjdGl2ZSBzZWxlY3Rvci5cbiAgICogQWxsb3dzOiBbY29waWxvdGtpdEFnZW50XT1cIidhZ2VudC1pZCdcIlxuICAgKi9cbiAgQElucHV0KFwiY29waWxvdGtpdEFnZW50XCIpXG4gIHNldCBkaXJlY3RpdmVBZ2VudElkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmFnZW50SWQgPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgYWdlbnQgaW5zdGFuY2UgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBhZ2VudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgcnVubmluZyBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIHJ1bm5pbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIHJ1bm5pbmcgc3RhdGUuXG4gICAqL1xuICBnZXQgcnVubmluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRvT2JzZXJ2YWJsZSh0aGlzLnJ1bm5pbmdTaWduYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGFnZW50IGluc3RhbmNlLlxuICAgKi9cbiAgZ2V0IGFnZW50JCgpOiBPYnNlcnZhYmxlPEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdG9PYnNlcnZhYmxlKHRoaXMuYWdlbnRTaWduYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFR3by13YXkgYmluZGluZyBmb3IgcnVubmluZyBzdGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBydW5uaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1J1bm5pbmc7XG4gIH1cbiAgc2V0IHJ1bm5pbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAvLyBJbnB1dCBzZXR0ZXIgZm9yIHR3by13YXkgYmluZGluZyAodGhvdWdoIHR5cGljYWxseSByZWFkLW9ubHkgZnJvbSBhZ2VudClcbiAgICB0aGlzLl9pc1J1bm5pbmcgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGFnZW50IG1lc3NhZ2VzIGNoYW5nZS5cbiAgICovXG4gIEBPdXRwdXQoKSBtZXNzYWdlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGFnZW50IHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgc3RhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIHJ1biBpcyBpbml0aWFsaXplZC5cbiAgICovXG4gIEBPdXRwdXQoKSBydW5Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgcnVuIGlzIGZpbmFsaXplZC5cbiAgICovXG4gIEBPdXRwdXQoKSBydW5GaW5hbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIHJ1biBmYWlscy5cbiAgICovXG4gIEBPdXRwdXQoKSBydW5GYWlsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwQWdlbnQoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvQ29yZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wiYWdlbnRJZFwiXSAmJiAhY2hhbmdlc1tcImFnZW50SWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIC8vIEFnZW50IElEIGNoYW5nZWQsIHJlLXNldHVwXG4gICAgICB0aGlzLmNsZWFudXBBZ2VudFN1YnNjcmlwdGlvbigpO1xuICAgICAgdGhpcy5zZXR1cEFnZW50KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwQWdlbnRTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLmNsZWFudXBDb3JlU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQWdlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgZWZmZWN0aXZlQWdlbnRJZCA9IHRoaXMuYWdlbnRJZCA/PyBERUZBVUxUX0FHRU5UX0lEO1xuICAgIHRoaXMuYWdlbnQgPSB0aGlzLmNvcGlsb3RraXQuZ2V0QWdlbnQoZWZmZWN0aXZlQWdlbnRJZCk7XG5cbiAgICAvLyBVcGRhdGUgc2lnbmFsc1xuICAgIHRoaXMuYWdlbnRTaWduYWwuc2V0KHRoaXMuYWdlbnQpO1xuXG4gICAgLy8gRW1pdCBpbml0aWFsIGFnZW50XG4gICAgdGhpcy5hZ2VudENoYW5nZS5lbWl0KHRoaXMuYWdlbnQpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIGFnZW50IGV2ZW50c1xuICAgIHRoaXMuc3Vic2NyaWJlVG9BZ2VudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0FnZW50KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cEFnZW50U3Vic2NyaXB0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5hZ2VudCkge1xuICAgICAgdGhpcy5hZ2VudFN1YnNjcmlwdGlvbiA9IHRoaXMuYWdlbnQuc3Vic2NyaWJlKHtcbiAgICAgICAgb25NZXNzYWdlc0NoYW5nZWQ6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzQ2hhbmdlLmVtaXQocGFyYW1zKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdGF0ZUNoYW5nZWQ6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQocGFyYW1zKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5Jbml0aWFsaXplZDogKHBhcmFtcykgPT4ge1xuICAgICAgICAgIHRoaXMuX2lzUnVubmluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5ydW5uaW5nU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnJ1bm5pbmdDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnJ1bkluaXRpYWxpemVkLmVtaXQocGFyYW1zKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5GaW5hbGl6ZWQ6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJ1bm5pbmdTaWduYWwuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJ1bm5pbmdDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5ydW5GaW5hbGl6ZWQuZW1pdChwYXJhbXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblJ1bkZhaWxlZDogKHBhcmFtcykgPT4ge1xuICAgICAgICAgIHRoaXMuX2lzUnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucnVubmluZ1NpZ25hbC5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucnVubmluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJ1bkZhaWxlZC5lbWl0KHBhcmFtcyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvQ29yZSgpOiB2b2lkIHtcbiAgICAvLyBTdWJzY3JpYmUgdG8gQ29waWxvdEtpdCBjaGFuZ2VzIHRvIGRldGVjdCBhZ2VudCB1cGRhdGVzXG4gICAgdGhpcy5jb3JlVW5zdWJzY3JpYmUgPSB0aGlzLmNvcGlsb3RraXQuY29waWxvdGtpdC5zdWJzY3JpYmUoe1xuICAgICAgb25SdW50aW1lQ29ubmVjdGlvblN0YXR1c0NoYW5nZWQ6ICh7IHN0YXR1cyB9KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzdGF0dXMgPT09IENvcGlsb3RLaXRDb3JlUnVudGltZUNvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkIHx8XG4gICAgICAgICAgc3RhdHVzID09PSBDb3BpbG90S2l0Q29yZVJ1bnRpbWVDb25uZWN0aW9uU3RhdHVzLkRpc2Nvbm5lY3RlZFxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBSZS1jaGVjayBhZ2VudCB3aGVuIHJ1bnRpbWUgY29ubmVjdGlvbiBjaGFuZ2VzIHN0YXRlXG4gICAgICAgICAgdGhpcy5zZXR1cEFnZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBBZ2VudFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmFnZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYWdlbnRTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBDb3JlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY29yZVVuc3Vic2NyaWJlPy4oKTtcbiAgICB0aGlzLmNvcmVVbnN1YnNjcmliZSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
|
|
@@ -91,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
91
91
|
}], agents: [{
|
|
92
92
|
type: Input
|
|
93
93
|
}] } });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1jb25maWcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RpcmVjdGl2ZXMvY29waWxvdGtpdC1jb25maWcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUcvRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7SUFDb0I7SUFBeEQsWUFBd0QsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFBRyxDQUFDO0lBRWhGLGdCQUFnQixDQUt2QjtJQUVPLFVBQVUsQ0FBVTtJQUNwQixPQUFPLENBQTBCO0lBQ2pDLFVBQVUsQ0FBMkI7SUFDckMsTUFBTSxDQUFpQztJQUVoRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsZ0NBQWdDO1FBQ2hDLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDckMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkQsQ0FBQztnQkFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QyxDQUFDO2dCQUNELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO3dHQWhEVSx5QkFBeUIsa0JBQ2hCLGlCQUFpQjs0RkFEMUIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBRWMsTUFBTTsyQkFBQyxpQkFBaUI7eUNBRTVCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdEFnZW50IH0gZnJvbSBcIkBhZy11aS9jbGllbnRcIjtcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gY29uZmlndXJlIENvcGlsb3RLaXQgcnVudGltZSBzZXR0aW5ncyBkZWNsYXJhdGl2ZWx5IGluIHRlbXBsYXRlcy5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxkaXYgW2NvcGlsb3RraXRDb25maWddPVwie1xuICogICBydW50aW1lVXJsOiAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20nLFxuICogICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciB0b2tlbicgfVxuICogfVwiPlxuICogICA8IS0tIFlvdXIgYXBwIGNvbnRlbnQgLS0+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICogXG4gKiBPciB3aXRoIGluZGl2aWR1YWwgaW5wdXRzOlxuICogYGBgaHRtbFxuICogPGRpdiBjb3BpbG90a2l0Q29uZmlnXG4gKiAgICAgIFtydW50aW1lVXJsXT1cImFwaVVybFwiXG4gKiAgICAgIFtoZWFkZXJzXT1cImF1dGhIZWFkZXJzXCJcbiAqICAgICAgW2FnZW50c109XCJteUFnZW50c1wiPlxuICogICA8IS0tIFlvdXIgYXBwIGNvbnRlbnQgLS0+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2NvcGlsb3RraXRDb25maWddXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RLaXRDb25maWdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlKSB7fVxuXG4gIEBJbnB1dCgpIGNvcGlsb3RraXRDb25maWc/OiB7XG4gICAgcnVudGltZVVybD86IHN0cmluZztcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgYWdlbnRzPzogUmVjb3JkPHN0cmluZywgQWJzdHJhY3RBZ2VudD47XG4gIH07XG5cbiAgQElucHV0KCkgcnVudGltZVVybD86IHN0cmluZztcbiAgQElucHV0KCkgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIEBJbnB1dCgpIHByb3BlcnRpZXM/
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1jb25maWcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RpcmVjdGl2ZXMvY29waWxvdGtpdC1jb25maWcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUcvRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7SUFDb0I7SUFBeEQsWUFBd0QsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFBRyxDQUFDO0lBRWhGLGdCQUFnQixDQUt2QjtJQUVPLFVBQVUsQ0FBVTtJQUNwQixPQUFPLENBQTBCO0lBQ2pDLFVBQVUsQ0FBMkI7SUFDckMsTUFBTSxDQUFpQztJQUVoRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsZ0NBQWdDO1FBQ2hDLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDckMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkQsQ0FBQztnQkFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QyxDQUFDO2dCQUNELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO3dHQWhEVSx5QkFBeUIsa0JBQ2hCLGlCQUFpQjs0RkFEMUIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBRWMsTUFBTTsyQkFBQyxpQkFBaUI7eUNBRTVCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdEFnZW50IH0gZnJvbSBcIkBhZy11aS9jbGllbnRcIjtcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gY29uZmlndXJlIENvcGlsb3RLaXQgcnVudGltZSBzZXR0aW5ncyBkZWNsYXJhdGl2ZWx5IGluIHRlbXBsYXRlcy5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxkaXYgW2NvcGlsb3RraXRDb25maWddPVwie1xuICogICBydW50aW1lVXJsOiAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20nLFxuICogICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciB0b2tlbicgfVxuICogfVwiPlxuICogICA8IS0tIFlvdXIgYXBwIGNvbnRlbnQgLS0+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICogXG4gKiBPciB3aXRoIGluZGl2aWR1YWwgaW5wdXRzOlxuICogYGBgaHRtbFxuICogPGRpdiBjb3BpbG90a2l0Q29uZmlnXG4gKiAgICAgIFtydW50aW1lVXJsXT1cImFwaVVybFwiXG4gKiAgICAgIFtoZWFkZXJzXT1cImF1dGhIZWFkZXJzXCJcbiAqICAgICAgW2FnZW50c109XCJteUFnZW50c1wiPlxuICogICA8IS0tIFlvdXIgYXBwIGNvbnRlbnQgLS0+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2NvcGlsb3RraXRDb25maWddXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RLaXRDb25maWdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlKSB7fVxuXG4gIEBJbnB1dCgpIGNvcGlsb3RraXRDb25maWc/OiB7XG4gICAgcnVudGltZVVybD86IHN0cmluZztcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgYWdlbnRzPzogUmVjb3JkPHN0cmluZywgQWJzdHJhY3RBZ2VudD47XG4gIH07XG5cbiAgQElucHV0KCkgcnVudGltZVVybD86IHN0cmluZztcbiAgQElucHV0KCkgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIEBJbnB1dCgpIHByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQElucHV0KCkgYWdlbnRzPzogUmVjb3JkPHN0cmluZywgQWJzdHJhY3RBZ2VudD47XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBjb21iaW5lZCBjb25maWcgb2JqZWN0XG4gICAgaWYgKGNoYW5nZXNbJ2NvcGlsb3RraXRDb25maWcnXSkge1xuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb3BpbG90a2l0Q29uZmlnO1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLnJ1bnRpbWVVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuY29waWxvdGtpdC5zZXRSdW50aW1lVXJsKGNvbmZpZy5ydW50aW1lVXJsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLmhlYWRlcnMpIHtcbiAgICAgICAgICB0aGlzLmNvcGlsb3RraXQuc2V0SGVhZGVycyhjb25maWcuaGVhZGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgdGhpcy5jb3BpbG90a2l0LnNldFByb3BlcnRpZXMoY29uZmlnLnByb3BlcnRpZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuYWdlbnRzKSB7XG4gICAgICAgICAgdGhpcy5jb3BpbG90a2l0LnNldEFnZW50cyhjb25maWcuYWdlbnRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBpbmRpdmlkdWFsIGlucHV0c1xuICAgIGlmIChjaGFuZ2VzWydydW50aW1lVXJsJ10gJiYgIXRoaXMuY29waWxvdGtpdENvbmZpZykge1xuICAgICAgdGhpcy5jb3BpbG90a2l0LnNldFJ1bnRpbWVVcmwodGhpcy5ydW50aW1lVXJsKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2hlYWRlcnMnXSAmJiAhdGhpcy5jb3BpbG90a2l0Q29uZmlnKSB7XG4gICAgICB0aGlzLmNvcGlsb3RraXQuc2V0SGVhZGVycyh0aGlzLmhlYWRlcnMgfHwge30pO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sncHJvcGVydGllcyddICYmICF0aGlzLmNvcGlsb3RraXRDb25maWcpIHtcbiAgICAgIHRoaXMuY29waWxvdGtpdC5zZXRQcm9wZXJ0aWVzKHRoaXMucHJvcGVydGllcyB8fCB7fSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydhZ2VudHMnXSAmJiAhdGhpcy5jb3BpbG90a2l0Q29uZmlnKSB7XG4gICAgICB0aGlzLmNvcGlsb3RraXQuc2V0QWdlbnRzKHRoaXMuYWdlbnRzIHx8IHt9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|