@gitpod/gitpod-protocol 0.1.5-patch-1-fork.0 → 0.1.5-pavel-pvc-feat.1
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/data/gitpod-schema.json +53 -26
- package/lib/accounting-protocol.d.ts +10 -13
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +31 -46
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts +27 -4
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +15 -0
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +44 -0
- package/lib/analytics.d.ts.map +1 -0
- package/lib/analytics.js +10 -0
- package/lib/analytics.js.map +1 -0
- package/lib/auth.d.ts.map +1 -1
- package/lib/context-url.d.ts +31 -0
- package/lib/context-url.d.ts.map +1 -0
- package/lib/context-url.js +102 -0
- package/lib/context-url.js.map +1 -0
- package/lib/context-url.spec.d.ts +14 -0
- package/lib/context-url.spec.d.ts.map +1 -0
- package/lib/context-url.spec.js +109 -0
- package/lib/context-url.spec.js.map +1 -0
- package/lib/email-protocol.d.ts +1 -2
- package/lib/email-protocol.d.ts.map +1 -1
- package/lib/email-protocol.js +4 -4
- package/lib/email-protocol.js.map +1 -1
- package/lib/encryption/container-module.d.ts.map +1 -1
- package/lib/encryption/container-module.js +5 -4
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.js +25 -26
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +29 -37
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.d.ts.map +1 -1
- package/lib/encryption/encryption-service.js +30 -44
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.d.ts.map +1 -1
- package/lib/encryption/key-provider.js +31 -38
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +2 -3
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +24 -25
- package/lib/env.js.map +1 -1
- package/lib/gitpod-file-parser.d.ts.map +1 -1
- package/lib/gitpod-file-parser.js +26 -42
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.js +145 -142
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +133 -39
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +175 -287
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +9 -11
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +6 -8
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-frontend-service.d.ts +1 -1
- package/lib/ide-protocol.d.ts +105 -0
- package/lib/ide-protocol.d.ts.map +1 -0
- package/lib/{util/without.js → ide-protocol.js} +2 -2
- package/lib/ide-protocol.js.map +1 -0
- package/lib/index.d.ts +16 -10
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -1
- package/lib/index.js.map +1 -1
- package/lib/installation-admin-protocol.d.ts +27 -0
- package/lib/installation-admin-protocol.d.ts.map +1 -0
- package/lib/installation-admin-protocol.js +30 -0
- package/lib/installation-admin-protocol.js.map +1 -0
- package/lib/license-protocol.d.ts.map +1 -1
- package/lib/license-protocol.js.map +1 -1
- package/lib/messaging/browser/connection.d.ts +5 -3
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +184 -34
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.d.ts +4 -4
- package/lib/messaging/browser/window-connection.d.ts.map +1 -1
- package/lib/messaging/browser/window-connection.js +42 -59
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +35 -0
- package/lib/messaging/client-call-metrics.d.ts.map +1 -0
- package/lib/messaging/client-call-metrics.js +83 -0
- package/lib/messaging/client-call-metrics.js.map +1 -0
- package/lib/messaging/error.d.ts +3 -1
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +6 -2
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts +10 -0
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/handler.js +1 -1
- package/lib/messaging/node/connection.d.ts +1 -17
- package/lib/messaging/node/connection.d.ts.map +1 -1
- package/lib/messaging/node/connection.js +24 -60
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +3 -1
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +75 -162
- package/lib/messaging/proxy-factory.js.map +1 -1
- package/lib/oss-allowlist.d.ts +14 -0
- package/lib/oss-allowlist.d.ts.map +1 -0
- package/lib/oss-allowlist.js +8 -0
- package/lib/oss-allowlist.js.map +1 -0
- package/lib/payment-protocol.d.ts.map +1 -1
- package/lib/payment-protocol.js +1 -1
- package/lib/payment-protocol.js.map +1 -1
- package/lib/permission.d.ts +10 -3
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +41 -31
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +210 -0
- package/lib/plans.d.ts.map +1 -0
- package/lib/plans.js +605 -0
- package/lib/plans.js.map +1 -0
- package/lib/protocol.d.ts +163 -82
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +184 -199
- package/lib/protocol.js.map +1 -1
- package/lib/snapshot-url.d.ts +14 -0
- package/lib/snapshot-url.d.ts.map +1 -0
- package/lib/snapshot-url.js +26 -0
- package/lib/snapshot-url.js.map +1 -0
- package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +2 -3
- package/lib/snapshot-url.spec.d.ts.map +1 -0
- package/lib/snapshot-url.spec.js +41 -0
- package/lib/snapshot-url.spec.js.map +1 -0
- package/lib/team-subscription-protocol.d.ts +7 -5
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +19 -16
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +113 -0
- package/lib/teams-projects-protocol.d.ts.map +1 -0
- package/lib/teams-projects-protocol.js +30 -0
- package/lib/teams-projects-protocol.js.map +1 -0
- package/lib/typings/globals.d.ts +2 -2
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/util/analytics.d.ts +8 -0
- package/lib/util/analytics.d.ts.map +1 -0
- package/lib/util/analytics.js +88 -0
- package/lib/util/analytics.js.map +1 -0
- package/lib/util/async-iterator.d.ts.map +1 -1
- package/lib/util/async-iterator.js +57 -135
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.js +17 -59
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.js +11 -11
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/deferred.js +10 -12
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.d.ts.map +1 -1
- package/lib/util/disposable.js +27 -40
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.d.ts.map +1 -1
- package/lib/util/event.js +63 -77
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts +1 -0
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +27 -47
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts +1 -1
- package/lib/util/generate-workspace-id.d.ts.map +1 -1
- package/lib/util/generate-workspace-id.js +460 -497
- package/lib/util/generate-workspace-id.js.map +1 -1
- package/lib/util/generate-workspace-id.spec.js +61 -78
- package/lib/util/generate-workspace-id.spec.js.map +1 -1
- package/lib/util/gitpod-cookie.d.ts +20 -0
- package/lib/util/gitpod-cookie.d.ts.map +1 -0
- package/lib/util/gitpod-cookie.js +41 -0
- package/lib/util/gitpod-cookie.js.map +1 -0
- package/lib/util/gitpod-host-url.d.ts +1 -2
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +108 -109
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts +7 -1
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.spec.js +113 -31
- package/lib/util/gitpod-host-url.spec.js.map +1 -1
- package/lib/util/grpc.d.ts +15 -0
- package/lib/util/grpc.d.ts.map +1 -0
- package/lib/util/grpc.js +18 -0
- package/lib/util/grpc.js.map +1 -0
- package/lib/util/jaeger-client-types.d.ts +68 -0
- package/lib/util/jaeger-client-types.d.ts.map +1 -0
- package/lib/{theia-plugins.js → util/jaeger-client-types.js} +1 -1
- package/lib/util/jaeger-client-types.js.map +1 -0
- package/lib/util/logging.d.ts +49 -33
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +125 -129
- package/lib/util/logging.js.map +1 -1
- package/lib/util/make-link.js +5 -5
- package/lib/util/make-link.js.map +1 -1
- package/lib/util/parse-workspace-id.d.ts +10 -0
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +31 -7
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +4 -0
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js +123 -84
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.js +16 -55
- package/lib/util/queue.js.map +1 -1
- package/lib/util/queue.spec.js +147 -288
- package/lib/util/queue.spec.js.map +1 -1
- package/lib/util/repeat.d.ts +15 -0
- package/lib/util/repeat.d.ts.map +1 -0
- package/lib/util/repeat.js +55 -0
- package/lib/util/repeat.js.map +1 -0
- package/lib/util/semaphore.d.ts.map +1 -1
- package/lib/util/semaphore.js +15 -46
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.d.ts.map +1 -1
- package/lib/util/skip-if.js +6 -6
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.d.ts.map +1 -1
- package/lib/util/timeutil.js +28 -16
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.d.ts.map +1 -1
- package/lib/util/timeutil.spec.js +21 -24
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +52 -6
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +199 -64
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/tracing.spec.d.ts +7 -0
- package/lib/util/tracing.spec.d.ts.map +1 -0
- package/lib/util/tracing.spec.js +121 -0
- package/lib/util/tracing.spec.js.map +1 -0
- package/lib/util/workspace-port-authentication.d.ts +7 -7
- package/lib/util/workspace-port-authentication.d.ts.map +1 -1
- package/lib/util/workspace-port-authentication.js +10 -12
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/workspace-cluster.d.ts +76 -0
- package/lib/workspace-cluster.d.ts.map +1 -0
- package/lib/workspace-cluster.js +31 -0
- package/lib/workspace-cluster.js.map +1 -0
- package/lib/workspace-instance.d.ts +26 -4
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/wsready.d.ts +1 -1
- package/lib/wsready.d.ts.map +1 -1
- package/lib/wsready.js +2 -2
- package/package.json +31 -17
- package/pkg-yarn.lock +17 -9
- package/provenance-bundle.jsonl +2 -0
- package/src/accounting-protocol.ts +53 -57
- package/src/admin-protocol.ts +64 -19
- package/src/analytics.ts +52 -0
- package/src/auth.ts +2 -2
- package/src/context-url.spec.ts +67 -0
- package/src/context-url.ts +109 -0
- package/src/email-protocol.ts +5 -7
- package/src/encryption/container-module.ts +2 -3
- package/src/encryption/encryption-engine.spec.ts +9 -8
- package/src/encryption/encryption-engine.ts +14 -14
- package/src/encryption/encryption-service.ts +4 -5
- package/src/encryption/key-provider.ts +16 -19
- package/src/env.ts +18 -18
- package/src/gitpod-file-parser.spec.ts +55 -61
- package/src/gitpod-file-parser.ts +16 -17
- package/src/gitpod-service.ts +270 -117
- package/src/headless-workspace-log.ts +12 -14
- package/src/ide-frontend-service.ts +2 -2
- package/src/ide-protocol.ts +119 -0
- package/src/index.ts +16 -10
- package/src/installation-admin-protocol.ts +42 -0
- package/src/license-protocol.ts +5 -6
- package/src/messaging/browser/connection.ts +197 -18
- package/src/messaging/browser/window-connection.ts +39 -29
- package/src/messaging/client-call-metrics.ts +96 -0
- package/src/messaging/error.ts +9 -5
- package/src/messaging/handler.ts +13 -1
- package/src/messaging/node/connection.ts +23 -70
- package/src/messaging/proxy-factory.ts +35 -34
- package/src/oss-allowlist.ts +15 -0
- package/src/payment-protocol.ts +2 -2
- package/src/permission.ts +42 -33
- package/src/plans.ts +679 -0
- package/src/protocol.ts +383 -274
- package/src/snapshot-url.spec.ts +27 -0
- package/src/snapshot-url.ts +27 -0
- package/src/team-subscription-protocol.ts +36 -24
- package/src/teams-projects-protocol.ts +147 -0
- package/src/typings/globals.ts +4 -4
- package/src/util/analytics.ts +109 -0
- package/src/util/async-iterator.ts +4 -5
- package/src/util/cancelable.ts +3 -3
- package/src/util/date-time.ts +8 -8
- package/src/util/deferred.ts +6 -6
- package/src/util/disposable.ts +3 -6
- package/src/util/event.ts +9 -11
- package/src/util/garbage-collected-cache.ts +11 -8
- package/src/util/generate-workspace-id.spec.ts +29 -9
- package/src/util/generate-workspace-id.ts +458 -438
- package/src/util/gitpod-cookie.ts +38 -0
- package/src/util/gitpod-host-url.spec.ts +59 -8
- package/src/util/gitpod-host-url.ts +52 -40
- package/src/util/grpc.ts +15 -0
- package/src/util/jaeger-client-types.ts +102 -0
- package/src/util/logging.ts +145 -71
- package/src/util/make-link.ts +6 -7
- package/src/util/parse-workspace-id.spec.ts +37 -8
- package/src/util/parse-workspace-id.ts +32 -7
- package/src/util/queue.spec.ts +28 -26
- package/src/util/repeat.ts +45 -0
- package/src/util/semaphore.ts +6 -8
- package/src/util/skip-if.ts +10 -7
- package/src/util/timeutil.spec.ts +14 -15
- package/src/util/timeutil.ts +19 -15
- package/src/util/tracing.spec.ts +88 -0
- package/src/util/tracing.ts +202 -31
- package/src/util/workspace-port-authentication.ts +10 -13
- package/src/workspace-cluster.ts +107 -0
- package/src/workspace-instance.ts +66 -30
- package/src/wsready.ts +3 -3
- package/data/builtin-theia-plugins.json +0 -372
- package/lib/messaging/connection-error-handler.d.ts +0 -27
- package/lib/messaging/connection-error-handler.d.ts.map +0 -1
- package/lib/messaging/connection-error-handler.js +0 -46
- package/lib/messaging/connection-error-handler.js.map +0 -1
- package/lib/theia-plugins.d.ts +0 -11
- package/lib/theia-plugins.d.ts.map +0 -1
- package/lib/theia-plugins.js.map +0 -1
- package/lib/util/context-url.d.ts +0 -13
- package/lib/util/context-url.d.ts.map +0 -1
- package/lib/util/context-url.js +0 -26
- package/lib/util/context-url.js.map +0 -1
- package/lib/util/context-url.spec.d.ts +0 -10
- package/lib/util/context-url.spec.d.ts.map +0 -1
- package/lib/util/context-url.spec.js +0 -52
- package/lib/util/context-url.spec.js.map +0 -1
- package/lib/util/repeater.d.ts +0 -22
- package/lib/util/repeater.d.ts.map +0 -1
- package/lib/util/repeater.js +0 -118
- package/lib/util/repeater.js.map +0 -1
- package/lib/util/safe-promise.d.ts +0 -11
- package/lib/util/safe-promise.d.ts.map +0 -1
- package/lib/util/safe-promise.js +0 -34
- package/lib/util/safe-promise.js.map +0 -1
- package/lib/util/without.d.ts +0 -7
- package/lib/util/without.d.ts.map +0 -1
- package/lib/util/without.js.map +0 -1
- package/src/messaging/connection-error-handler.ts +0 -62
- package/src/theia-plugins.ts +0 -11
- package/src/util/context-url.spec.ts +0 -25
- package/src/util/context-url.ts +0 -23
- package/src/util/jaeger-client.d.ts +0 -105
- package/src/util/repeater.ts +0 -49
- package/src/util/safe-promise.ts +0 -26
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-cluster.js","sourceRoot":"","sources":["../src/workspace-cluster.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,yBAAyB;AACzB,+BAAkD;AAyClD,IAAiB,SAAS,CAGzB;AAHD,WAAiB,SAAS;IACT,4BAAkB,GAAG,CAAC,IAAY,EAAU,EAAE,CACvD,EAAE,CAAC,YAAY,CAAC,IAAA,+BAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5E,CAAC,EAHgB,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGzB;AAcD,IAAiB,mBAAmB,CAUnC;AAVD,WAAiB,mBAAmB;IAChC,SAAgB,EAAE,CAAC,CAAM;QACrB,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC;IAC9B,CAAC;IAFe,sBAAE,KAEjB,CAAA;IACD,SAAgB,yBAAyB,CAAC,CAAM;QAC5C,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC;IAChD,CAAC;IAFe,6CAAyB,4BAExC,CAAA;IACD,SAAgB,aAAa,CAAC,EAAuB,EAAE,UAA0B;QAC7E,OAAO,yBAAyB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC;IACzE,CAAC;IAFe,iCAAa,gBAE5B,CAAA;AACL,CAAC,EAVgB,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAUnC;AAEY,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
|
|
@@ -10,6 +10,7 @@ export interface WorkspaceInstance {
|
|
|
10
10
|
creationTime: string;
|
|
11
11
|
deployedTime?: string;
|
|
12
12
|
startedTime?: string;
|
|
13
|
+
stoppingTime?: string;
|
|
13
14
|
stoppedTime?: string;
|
|
14
15
|
ideUrl: string;
|
|
15
16
|
region: string;
|
|
@@ -17,6 +18,10 @@ export interface WorkspaceInstance {
|
|
|
17
18
|
status: WorkspaceInstanceStatus;
|
|
18
19
|
configuration?: WorkspaceInstanceConfiguration;
|
|
19
20
|
readonly deleted?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Contains information about the image build, if there was any
|
|
23
|
+
*/
|
|
24
|
+
imageBuildInfo?: ImageBuildInfo;
|
|
20
25
|
}
|
|
21
26
|
export interface WorkspaceInstanceStatus {
|
|
22
27
|
phase: WorkspaceInstancePhase;
|
|
@@ -35,16 +40,16 @@ export interface WorkspaceInstanceConditions {
|
|
|
35
40
|
failed?: string;
|
|
36
41
|
timeout?: string;
|
|
37
42
|
pullingImages?: boolean;
|
|
38
|
-
serviceExists?: boolean;
|
|
39
43
|
deployed?: boolean;
|
|
40
44
|
neededImageBuild?: boolean;
|
|
41
45
|
firstUserActivity?: string;
|
|
46
|
+
headlessTaskFailed?: string;
|
|
47
|
+
stoppedByRequest?: boolean;
|
|
42
48
|
}
|
|
43
|
-
export declare type AdmissionLevel =
|
|
44
|
-
export declare type PortVisibility =
|
|
49
|
+
export declare type AdmissionLevel = "owner_only" | "everyone";
|
|
50
|
+
export declare type PortVisibility = "public" | "private";
|
|
45
51
|
export interface WorkspaceInstancePort {
|
|
46
52
|
port: number;
|
|
47
|
-
targetPort?: number;
|
|
48
53
|
visibility?: PortVisibility;
|
|
49
54
|
url?: string;
|
|
50
55
|
}
|
|
@@ -62,5 +67,22 @@ export interface WorkspaceInstanceConfiguration {
|
|
|
62
67
|
theiaVersion?: string;
|
|
63
68
|
featureFlags?: NamedWorkspaceFeatureFlag[];
|
|
64
69
|
ideImage: string;
|
|
70
|
+
desktopIdeImage?: string;
|
|
71
|
+
supervisorImage?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Holds information about the image build (if there was one) for this WorkspaceInstance
|
|
75
|
+
*/
|
|
76
|
+
export interface ImageBuildInfo {
|
|
77
|
+
log?: ImageBuildLogInfo;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Holds information about how to access logs for this an image build
|
|
81
|
+
*/
|
|
82
|
+
export interface ImageBuildLogInfo {
|
|
83
|
+
url: string;
|
|
84
|
+
headers: {
|
|
85
|
+
[key: string]: string;
|
|
86
|
+
};
|
|
65
87
|
}
|
|
66
88
|
//# sourceMappingURL=workspace-instance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-instance.d.ts","sourceRoot":"","sources":["../src/workspace-instance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAE9B,EAAE,EAAE,MAAM,CAAC;IAGX,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-instance.d.ts","sourceRoot":"","sources":["../src/workspace-instance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAE9B,EAAE,EAAE,MAAM,CAAC;IAGX,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,MAAM,EAAE,MAAM,CAAC;IAIf,MAAM,EAAE,MAAM,CAAC;IAIf,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,EAAE,uBAAuB,CAAC;IAKhC,aAAa,CAAC,EAAE,8BAA8B,CAAC;IAG/C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC;AAGD,MAAM,WAAW,uBAAuB;IAEpC,KAAK,EAAE,sBAAsB,CAAC;IAG9B,UAAU,EAAE,2BAA2B,CAAC;IAGxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAGvC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IAGnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,oBAAY,sBAAsB,GAG5B,SAAS,GAIT,WAAW,GAKX,SAAS,GAKT,UAAU,GAIV,cAAc,GAId,SAAS,GAIT,aAAa,GAGb,UAAU,GAGV,SAAS,CAAC;AAEhB,MAAM,WAAW,2BAA2B;IAGxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAM3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAGD,oBAAY,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAGvD,oBAAY,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGlD,MAAM,WAAW,qBAAqB;IAElC,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,CAAC,EAAE,cAAc,CAAC;IAG5B,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,2BAA2B;IAExC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAG1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAGD,MAAM,WAAW,8BAA8B;IAG3C,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAG3C,QAAQ,EAAE,MAAM,CAAC;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACtC"}
|
package/lib/wsready.d.ts
CHANGED
package/lib/wsready.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wsready.d.ts","sourceRoot":"","sources":["../src/wsready.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,oBAAY,mBAAmB;IAC3B,uBAAuB,gBAAgB;IACvC,yBAAyB,kBAAkB;IAC3C,sBAAsB,eAAe;CACxC;AACD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"wsready.d.ts","sourceRoot":"","sources":["../src/wsready.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,oBAAY,mBAAmB;IAC3B,uBAAuB,gBAAgB;IACvC,yBAAyB,kBAAkB;IAC3C,sBAAsB,eAAe;CACxC;AACD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,mBAAmB,CAAC;CAC/B"}
|
package/lib/wsready.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
4
4
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
5
5
|
* See License-AGPL.txt in the project root for license information.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.WorkspaceInitSource = void 0;
|
|
9
|
-
// generated using github.com/32leaves/bel on
|
|
9
|
+
// generated using github.com/32leaves/bel on 2022-02-15 11:53:18.380158212 +0000 UTC m=+0.011913675
|
|
10
10
|
// DO NOT MODIFY
|
|
11
11
|
var WorkspaceInitSource;
|
|
12
12
|
(function (WorkspaceInitSource) {
|
package/package.json
CHANGED
|
@@ -1,40 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
+
"@types/react": "17.0.32",
|
|
3
4
|
"ajv": "^6.5.4",
|
|
4
|
-
"
|
|
5
|
-
"
|
|
5
|
+
"analytics-node": "^4.0.1",
|
|
6
|
+
"cookie": "^0.4.2",
|
|
7
|
+
"inversify": "^5.1.1",
|
|
8
|
+
"jaeger-client": "^3.18.1",
|
|
6
9
|
"js-yaml": "^3.10.0",
|
|
7
|
-
"opentracing": "^0.14.
|
|
8
|
-
"prom-client": "^
|
|
10
|
+
"opentracing": "^0.14.5",
|
|
11
|
+
"prom-client": "^13.2.0",
|
|
9
12
|
"random-number-csprng": "^1.0.2",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
+
"react": "17.0.2",
|
|
14
|
+
"react-dom": "17.0.2",
|
|
15
|
+
"reconnecting-websocket": "^4.4.0",
|
|
16
|
+
"reflect-metadata": "^0.1.13",
|
|
17
|
+
"uuid": "^8.3.2",
|
|
18
|
+
"vscode-jsonrpc": "^5.0.1",
|
|
19
|
+
"vscode-languageserver-protocol": "3.16.0",
|
|
20
|
+
"vscode-languageserver-types": "3.16.0",
|
|
13
21
|
"vscode-uri": "^1.0.1",
|
|
14
22
|
"vscode-ws-jsonrpc": "^0.2.0",
|
|
15
|
-
"ws": "^
|
|
23
|
+
"ws": "^7.4.6"
|
|
16
24
|
},
|
|
17
25
|
"devDependencies": {
|
|
18
|
-
"@types/
|
|
26
|
+
"@types/analytics-node": "^3.1.5",
|
|
27
|
+
"@types/chai-subset": "^1.3.3",
|
|
28
|
+
"@types/cookie": "^0.4.1",
|
|
29
|
+
"@types/jaeger-client": "^3.18.3",
|
|
19
30
|
"@types/js-yaml": "^3.10.1",
|
|
31
|
+
"@types/mocha": "^5.2.7",
|
|
32
|
+
"@types/node": "^16.11.6",
|
|
20
33
|
"@types/random-number-csprng": "^1.0.0",
|
|
21
|
-
"@types/uuid": "^3.
|
|
34
|
+
"@types/uuid": "^8.3.1",
|
|
22
35
|
"@types/ws": "^5.1.2",
|
|
23
|
-
"chai": "^4.
|
|
36
|
+
"chai": "^4.3.4",
|
|
24
37
|
"chai-subset": "^1.6.0",
|
|
25
38
|
"mocha": "^5.0.0",
|
|
26
39
|
"mocha-typescript": "^1.1.11",
|
|
27
40
|
"rimraf": "^2.6.2",
|
|
28
41
|
"ts-node": "^9.0.0",
|
|
29
|
-
"typescript": "
|
|
30
|
-
"typescript-json-schema": "^0.
|
|
42
|
+
"typescript": "~4.4.2",
|
|
43
|
+
"typescript-json-schema": "^0.50.1",
|
|
31
44
|
"typescript-parser": "^2.6.1"
|
|
32
45
|
},
|
|
33
46
|
"files": [
|
|
34
47
|
"lib",
|
|
35
48
|
"data/*.json",
|
|
36
49
|
"src",
|
|
37
|
-
"pkg-yarn.lock"
|
|
50
|
+
"pkg-yarn.lock",
|
|
51
|
+
"provenance-bundle.jsonl"
|
|
38
52
|
],
|
|
39
53
|
"license": "UNLICENSED",
|
|
40
54
|
"main": "./lib/index.js",
|
|
@@ -43,9 +57,9 @@
|
|
|
43
57
|
"build": "tsc",
|
|
44
58
|
"clean": "rimraf lib",
|
|
45
59
|
"prepare": "yarn run clean && yarn run build",
|
|
46
|
-
"test": "mocha --opts mocha.opts '
|
|
60
|
+
"test": "mocha --opts mocha.opts './**/*.spec.ts' --exclude './node_modules/**'",
|
|
47
61
|
"watch": "leeway exec --package .:lib --transitive-dependencies --filter-type yarn --components --parallel -- tsc -w --preserveWatchOutput"
|
|
48
62
|
},
|
|
49
63
|
"types": "./lib/index.d.ts",
|
|
50
|
-
"version": "0.1.5-
|
|
51
|
-
}
|
|
64
|
+
"version": "0.1.5-pavel-pvc-feat.1"
|
|
65
|
+
}
|
package/pkg-yarn.lock
CHANGED
|
@@ -4,19 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
"@gitpod/gitpod-protocol@0.1.5":
|
|
6
6
|
version "0.1.5"
|
|
7
|
-
resolved "file:///tmp/cache/
|
|
7
|
+
resolved "file:///tmp/cache/495ef1975717d52aebbe89ee63f01bd4d70372ec.tar.gz"
|
|
8
8
|
dependencies:
|
|
9
|
+
"@types/react" "17.0.32"
|
|
9
10
|
ajv "^6.5.4"
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
analytics-node "^4.0.1"
|
|
12
|
+
cookie "^0.4.2"
|
|
13
|
+
inversify "^5.1.1"
|
|
14
|
+
jaeger-client "^3.18.1"
|
|
12
15
|
js-yaml "^3.10.0"
|
|
13
|
-
opentracing "^0.14.
|
|
14
|
-
prom-client "^
|
|
16
|
+
opentracing "^0.14.5"
|
|
17
|
+
prom-client "^13.2.0"
|
|
15
18
|
random-number-csprng "^1.0.2"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
react "17.0.2"
|
|
20
|
+
react-dom "17.0.2"
|
|
21
|
+
reconnecting-websocket "^4.4.0"
|
|
22
|
+
reflect-metadata "^0.1.13"
|
|
23
|
+
uuid "^8.3.2"
|
|
24
|
+
vscode-jsonrpc "^5.0.1"
|
|
25
|
+
vscode-languageserver-protocol "3.16.0"
|
|
26
|
+
vscode-languageserver-types "3.16.0"
|
|
19
27
|
vscode-uri "^1.0.1"
|
|
20
28
|
vscode-ws-jsonrpc "^0.2.0"
|
|
21
|
-
ws "^
|
|
29
|
+
ws "^7.4.6"
|
|
22
30
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{"payloadType":"application/vnd.in-toto+json","payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YwLjEiLAogICJwcmVkaWNhdGVUeXBlIjogImh0dHBzOi8vc2xzYS5kZXYvcHJvdmVuYW5jZS92MC4xIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbnYuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjgwNGM0YWM0NWE1MzZjNDRmNWE2NjY0ZmI5NTQxZTk1MmQ3MjAwYTgwZDYyN2E4ZmRjNmQ4YzZkZjM4MzBkMGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZjQ4MjY2ODEyNjFkYWYwMTBmZDMxOThkYzMxNDRiODZhM2RjYWYzNjE0ODU1NDViY2Y1NWViYzk5YWJlNzgxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ3JwYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM5MjUwYjE0YTE1MmE3ZjQyN2ZlYTM4NWM3Y2VjZTVlMzZkYjhhNmUzMTBiMTIzOWM2ZWIxODgxZGU5NTUxOTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9tYWtlLWxpbmsuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQzZmY0NjNhZmU5NzVkMDVlYzFmMzIzN2VlMzBlZWEzNTBiMjU1NTlmY2MxMzRjMjRlZmExZTYzZjViN2E5ZDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWNjb3VudGluZy1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxM2U5MDdhMzgzYzFjMzk4NzY3MDIxZWZiNWJmMWMzNzgxNzQwMjQ0ZTcyMmNmYjg2MzFhNWY1YWRiNTFhNzFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcmVwZWF0LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ5OTA1OTE1Y2NhOTVhMTlmNTRmZGZlZGY3N2VkYjIxMjY1ZTYwNGZlOGJiNjU0ZmZmZTg3YjMyMzBlYTc4NzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDViN2EwMzg4N2EwYzRkZDRmNTRjYzE0ODc2Y2JkZmQ1MDk1OGRmZDU0MGIxOGNmN2Q2OGFhYmNkN2VmNjQyMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTViOGExODM2ZmFjMDRmYzdhMzg2MDhmMjQ0NGJiODZmMzBlNDJjZTJiZDhiMjhmN2MxNWVhZWI0NWMyN2NiMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjZiYzIzYmIwNThlNzg5M2NiOTRkOTViYTQ3NDg0NzIwZGVjOTQ4N2FkZjYxYzdkMDg3NDRjMGY0MzhiMDU4ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3dvcmtzcGFjZS1wb3J0LWF1dGhlbnRpY2F0aW9uLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJhZjA4NzEwNTc4MTAwNjBiN2VkNzVkNjAzYjQ0ZTExMmZmZGYxYTQ0NDY1ZTVhYTIwZTI3MjNkMjVhZDAyNjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9jb250YWluZXItbW9kdWxlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkZWMyMjg4NGZjYmUxMmVlNDgzZDkzY2VkMjJlMmI5OGJlNjEzYTVmMDlmNzYyNWY3NjEzMTc1MWUyMzI5NTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY3NTM2NWI0MjkzYzc3NDNjYTU0ZmE0ODRiMDZkZWI2NzdiNWZkYjVkY2M0YjhjZDY4ZGVhMTY2NmE2YzMyMWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmE2ZDAyZjYyYTBkYjcwNTkwMzBkYWM3NzRlMTBmNTc3MzVkODNkYzcwMjFlOTc3ZTU4NTRkMDBhZmNiMjM3MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmRlYTY3YWNlY2EyNzRlYjRhNDVmMTQ4NjJmYTMzMTcxNDJhN2YzNjFlY2U5YTA1MmY0ZDg4ZjU3Njg2MzFjNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1M2JmNjNiY2VmNzNlYmZkNjk1MDYxZDY4NGJjN2NhMzgwMDQ2OGFlOWU2MDQ2Njg1ZWI0Y2FiNzgwYjhlNGI2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2E2YmM0MjY1M2IzMDI3NGY5NTQ5ZDg1YjAxZDZmOWQxM2Y3OGE2ZDYyOWVlZGQ3ODU5M2NhNGM1M2M3MzVhMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU1MGNlZTcwYzMxY2FlNDM2NzIyYjE0OTdhOTUxZTAzYjJkMWY0ZjNmMjc5ZGZlY2YwYzhmYzBlOTBlYjgzODQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk3NzdmYmVmODc3NDIwNmU3NTMzNmYxZjhmNmZmOWZkZjI5MWI1MzExMDU1ZWI1MjZhYWZhYzJiNWNlZTIzYWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE5NzlmN2Y1MzcxODU4NjFmOTBmZWU4ZDMzZjI5Y2FmYjZkOWMzMDBhOTc4NDJjYWY5NTAzZDA4ZjczZjNmNWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNjY1NDdlZDZhOTk2MzUwZDk2ZGY1ZGJmMDcxMzI3ZWIzYzkwNTIyYjg3NTk2ODc5YzE1N2Y3MDlkMTc2MTIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1pbnN0YW5jZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjEzMWQ3NjkyMzJhNGI0MGRiYTg3Y2I4ODgxYTc3MWYzYmYxZWFkMDk5NjM5OTQxMDExNzFiOTcxYjgzMWJmNmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWQ2M2UwMWE0NGM5NmZhYWQ5NTFhNDRlN2YzZDAzMzIxNTY2MzcxNDY4NzYzZmVjYzg2YWQ4YzU4MjhkN2U3NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2Rpc3Bvc2FibGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWU5OTE0ZjdiMmQyYzFmODRiOWIwOTg4NWFhMTM3MWIwODdjMTZiMTc3ZDg0ZjRkMWM2MDRmMmE1YTRjODA5ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtaW5zdGFuY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTU0MGZlNTI4ZjhiOGJlYzhmNjY2NzQ2NjMyNTg1MGJhOWMwYjA4YjcwNDZiNjI4MjIxMmQwYjJkMTdlMWNhZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc0NDI0NzlmYTUzMTZlZmY2MDk2OTU2OTc3NmM3ZjE3N2VhYmE3MDAwNzA4ZTFhOGViY2VjMGI0YzFmOWZkNTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Vycm9yLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ0MzMyYjJlYzVjNDZjN2RmY2YyNWIyNzI3MjBiNTFhMjFlZTBkNGY4M2RkMTdhZDEzNGVjN2Y4Yzk2NWMwZDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMTIxNzY0ZjBhMWU2NTAyNzA2MTc3MjhhMDI1MmZlODQ0Y2NkZjRjNmNkOTM5MTlmZTg4N2ZiN2NiYWEzNzhlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luc3RhbGxhdGlvbi1hZG1pbi1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3Nzg4ZjIzMTA2MDM4YzVmMzk3ZGJmNGMzZmNmNjlhNTNlYmMxOTNhMzZjOGQ4NzE3NGMzN2E1ZjRlMjVkNDFjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYXN5bmMtaXRlcmF0b3IuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YTA1NjRlMDUzMzY1YmYxZDJjZWIxYzY3YjNkY2E1NDU2MzYxMTliM2NlNTVjZjI3OGI3NWQ5ZTBmZTFkYjA3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhiYzg0ZjUxNTEzYjQ1MTE3NTllMjc4NDU2MzQwMWNjYzk3NjI5NWU5NzU0YzhjZjUwNGRjODUwODcyMDYxYjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI4NjJhNjYyNWJiNjAxZDE4YjY1MjVmYWQ4YmY3ODMyNjU1MjIyYmMxOTU4ZWZjNTljNWIxYTVhMGFkODYxODMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmYTNlYjkxN2VhMzJlZTA4MDk0Y2I2NTI5OTUzZDM2M2FmYTA1Njg1ODNiOTczNTE3ZjI5ZGEzNWQ2ZjRhNDQwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1mcm9udGVuZC1zZXJ2aWNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI3MDliMmNkNDA3ZDczNDA0ZTViYjc1N2YzNGE1MjExZTkzOTg3OGI0NGRhMmRmOTQyMmZlYWE4NjVhZWFiNTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU5ZjUyNGIzOGU5MzU3NDNlMWFhNzc0NTBkYmMyYzM2YjFhMWNlZGQwNjQ1ZWFiOGVmNmFjNzdmMjhiNDgzNTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW1haWwtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDNhMjFjNmQwYjM4NjZkNTBkNzE1NzU1YWYzMTkyYjViOTM5OThhYmM2NzdhNDE2N2RkYzNjZDRhMTdkMThkMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZmVycmVkLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE4OGU4ZWViZmQzODkwOTkwOGUzMDhjNjA4NmJlMzRjMWRjOWFjNTM4YmEzOGY4NTVlOTAzMDFiNzQ3ODQ5MWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZTRhODkyNjI3ZWNhOTBiMTRhNzkzNTViMTVjZGI0NDFhZjA4NzI2ZWM5ZTY3M2Y1OTY0MjRiNTM3NmYyMmY2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5OGNkZTU3NWRkN2YxODExNDAzNDliMjE1MTk3MTlkY2UzZmRiMTFiNjFjMjQ4OTY3MTExODMwZDQ5YWIxNjNhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MDgxNWM4ZWMxNzUwYTg2ZGFmOWUwOTQzZWQzZDMzMWIwOTEyOWExZDJlN2ZmZmY1OTJjOTk4NTIyOGI2NWQ2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VtYWlsLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU0ODlkNDA1ZDg3NmVhM2RlNDM0NTViZDEzMjRjODIxMGU3OTk0OGNjMzJlZTg5ZWE2NTU4NWUwNWRjYTk2ZmUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNGVhZjA5ZTI1Y2RiNDYwMzljZmQwNmY2Y2ExMWY5M2FmMDdjYmZmYjZjM2Y2ZmY5YTk1NDg5NjVhY2UwNDYyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzZDdiYzcxZDIxYmViYTkzZTQ1OWI3MjY5ZWU1NDJiYmViNDY3Mzc3YTc0Yjk3ZGJkOTFkMTQ0ZjRiNzg2ZWE4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM5MThlZDA0MjliNDNhOWJkNjE1MjRmNmFjNGNmZjkwMzdiZWFhNTY0M2E1NTEyOGU2OWEwMGU0MDg5YmZkN2MiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ncnBjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQwZGE3NjNhNDFlMThkNTA1M2U2ODg1ZGJiMjE5MjUxZDY2NDU2ZDdkYzFlOWI1YjMyN2Y1M2I2OTBiNjlhMjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkMmM3NTFhZTdhMTgxZWFmM2ZkZTM5ZDgzYjVkNmVmMWE5MTU5YjIwMDRkMDUzMzlkMzdlNTkwN2IzNjE2MWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYwMTAzOWRkYmI3NmYyYjY5YmEyNDljMTI1MjFhYjI5ZTQ3YWE5OTJjOGViMDVlYjBlMTc3MzE1N2U5Zjg5ODciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDdhM2FhZDRmOWEyYzE1YzgxMjQ2YzAxYzA2OTFlNTkzM2E5YmNiYzY3MWJmNTg4NjQwNTY0ZDgyNDVjYmVkMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY3ZDFiZjc5YzdmYWQ1NTMxMjRjNjQyYTIyMjgyOTc5MDcwNjQ2YTA3MzAzNWMzZGQ4MTJjNDFhZTMxZjkzNmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTc2NjUzYzQwYjAwMWZkZTU4YTU5ZDJiMjkyYTRkY2FkNWQxMWRkYzQwZjMyN2RjN2UzMGVhZGZjYjhjODhlMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM0ZWFjOGVhMjBhYTU1NjQ3MjkxNGI3ZGFiYjFmNWFkMTcxYjQzMmYxODk5NTk0ODNiOTRmYzI2NjRkMTUxNmUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjI0OThhZGQyMjJkMTIwNmMwOGU1NmM0OWZjYWJmZjQyZThhODc1YzgyZTViMDJkOGNhN2I0MjQyNTQ4ODdhOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU0OTI2Y2YzZDA5ODdmNDNjYjQ3NDNmMWJkMTMxNGViNTkyZDQ4Y2UxMzQ4ZDZiZjI4MjM1M2M3MDFiYmFlYTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBiNTEyOTE4ZDYwYWQyMWQxNmRkMWM3N2Q3OGQ1ZjQ5ZmM0ZWJjMDJjNDBjMmEzMzkxYTRjZWI4NDQ4OTJlZWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMDY3ZGM4MzBiMmE1ZGUwZDUyZTc0ZTMyMzgxMjdlNjc5YTkzNmUwYTc3MGFhY2JjZTY2MTYyYjIyMDAzMTRiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDFmYWY3YTcwOWE5YTgyYjg1YWZiYzYwNzQ0YWViZGI1YzVjOTJkOWY5ZTA4NDk2YmM0NmUwNWE1N2U5NGMyZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZDRlOTNkMTBhNGRmNGY5YzRhNTY4YmRjYjU2ZTFiYzMxMTFmMjJmNTdjYTgzOWZmODBmMzEzN2M3ZDE2ZmU4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDRmYWQ3M2Q1OWQ4NTQyYmM1OTBkYzNlZGM0NjAyN2RiYjEyOGZlZjNhM2E5ODZjZDIxYWY5Y2ZmZDA1ZTQwZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFiYjVhZTU5OTg4ZTM1MzA5YzNlNGRiYmEyN2ZmYzhjMjMwZjliOWRkMTNhMmFjOWRmZTVlMmNmMWVkYmYwMzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImUxYzRmNzJkYWM2N2M0Y2VmODUyNDI3ODFjOTE4ZDNkZjQzMjBjZWEyMDZhZWQ3MThmMWU2YzFkNGYwZTYwMjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL25vZGUvY29ubmVjdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNkNDE4OTlhYzI5ZTdmYjdlN2NhNzExOWIzZDJiN2UwZDE1MzUxMDY2YzE1YWMzOWQwYmM2OTZmOWY4ZWQ2ZDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2YTc0YTg4MWE5OWI2MjcxOWE5ZGExYzFiM2IyNmVlZTIzZTQ5ZTYyYTdlODdjNjc1NTkwZGEwMzk1NmUwOTNiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWFiOGQwOGEzN2I0NjI3NjgwYjkyNjZhY2IxOWE1NjhlZGUzODI2YWU0M2ZmZTEyNjQ4NGI2OWY3OGU2NzU3ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg2ZGM3Nzk1MTEwNzE4ZDZlYTdiMTllMWIwMzE3Yzc2MGYzZGRmNjcyYzExOWQ3Nzc4YzlmMjJiOWE4YTBmNjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZWY1M2ZlNzNlN2VkOTQ0NjUzNTRmMDRlOGYyZDhlNTE1MDJhMzU4ZWE5M2NhOGM5ZWE0MDM3OGMwN2JjMTVmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1zZXJ2aWNlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg1ZWIzOGMyMWYwYTdiOWZjM2ZiZDcxN2Y3YWFhZTlhZjg2MGU3ZTYwODIwZWQwNWZkNjgzMjc1MmEyNzNkMGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL25vZGUvY29ubmVjdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzNThhZWVhNjVmZWRlNDEwZmI5YjcwNTY1OGYzZDk0MjAwOThhMjRhMTU1OTc3OWUyODBhNWNiMjRkNjM0NTQ3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYzZhZDI1NWM3Y2NkOWM0NWZlNDFiMzU3OTM3YmZhMzY0NjUwMGI2MGExNTZiZDJlYmU2YzQyNTZjMDM4YTcxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNGU1NzJkZWY2Y2VkOTNjYWI3MGZkY2VkYjE2ZTE1NGExYmQ1NDczMjM3M2QyZDJmZGU4ZTEzNzRkNmVmNDM3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJhNzYxNWFhYTdjN2ZhNDM0NmVjYzc2OTlkMmEwY2YwODM0NmNkZjljNmUxYTgzODJlZWZmYTQyZDE5NjczOTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZjJkNDY3MzhiOTE3M2QzYjQzZmMzMmUzMjBhYWYxN2JkZmVkMjVkZDk5NjRjZjE3NDA5MjUyMWNkZGJiMjlmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWQ0MGE1NGJhZDIzOGE2MjczOGFhMDRmZTQ4NjdjYzBjODEzZDljMWFhYjIwYTFlMjhhYTk4ZWI2YjA1MTEwZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5YWJmM2I1N2JjODM0NjI3MmUxNGU0MmEyMmFmZmUyMDlkYzYzY2JlOTVjOTIwMjdhNjRjNjI0ZGEwMDVmNzY0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Blcm1pc3Npb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlOGY5NTAwMGE5NGUzOTY5ODEwZmIwMDRlYTk1NGU2M2VmNTEwMDM4MTQxYzRkYWUwZGExNDY0OWYyY2IyMTU0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxODQ4NzkwYmIzZWMxNTg5MjA5Yjk4MzZlMzI5NmY3NzMzOGE1OTg3OWYwYWZmZWRiMjg5Mzc4Y2Y5YjI4MDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImIzNDk5YTQ3MThiNzFlNWYxODc1OGM2NDg4YTJkM2E1ZmZkZGIxNzg3ZDM3YWJkOWQxYjdiNzQ2Y2UwYTA3Y2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGVybWlzc2lvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYmU5MjkyZGQ3NjQ0NjFhNWRlZDJlMjczYzEyYmM3MGQ5ZWNkYWI2ZmUwZWIxZTgxNjQ2OWY3ZGY2MDVmZTM0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2xpY2Vuc2UtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlhOWRiMzYzNTZkZjk5MTMyZTI1ZmI2ZmFlZGM0YTdkMzg3NzgxMTNjYWUwMzQ3ZWYxMmMyZDVlYzc0ZGFjYjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhhYWEyNDM3NGJlNTYwMmY1YWYxNGE5YThlMWUyYjljNzQ3MTg0ODYyYjhjNmQxNmRkZjUzNjgwZmIwM2JhY2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODU5ZTlkZGJkZjQ1ODc4YWQzZTJjMWZhMTgxYzAwZjU3ZjJlOTk4ZTFhZDEyYTU0NDRhNTkxNGNkYjNlMmIzMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0OTM5NDBlZGVkY2NiZmM0YTM0ZjgzYTM5MGM2ZWEwNGUwNDY5MWM5NTk5YmMzMjBiMTU3YTI3ZGMxOTJlMjZmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY0YmFkMjQ4Njk1M2VkYTFkNTZiNWE2Y2VjOWRhMWUzMmJlYWM1NGEwNGUxYTBjMzQzNDE2MWM0YTc2MDA1OTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE3ZmQwMjkzZDUyYTFhMjkwZmQ3NzJhMmI3N2VkNmM3YjhlMmZmNGI3Y2Y1NTA0YTMxNDEwM2ExMWUwMGZjOTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWNsdXN0ZXIuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGNkMTNjMTgzODU4NzRjZmRiZjgyNWMxM2NiZDIzNmIyNzM3ZWFhMDM4OGZlMWEzYWNkODA5MTM2NmJjNGRhNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwOWFmZGUwOTA0ZGVlMzExNjRjMDZkMDRiNjdlYzdjZjQ5ODZjZGQwM2RiZjZkNGRiNmExYTZiYTE2OGRmNzcwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVkY2Q0NjVhYzgzZDEyMGI3ZTE2MWY3ZGNiYzhmNmRlM2Y3MWM4YWVhYjBiNjQ3MzNhZjM5MWNiMWE5ODFhMWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE0MzczMGQxNzcwY2I2NGMzMzYzMTQzZmI4ODY3ODMyZWU4ODdhNDAxYjhmYjUwMzAzNDYyYzQ5MTZjYmU5MTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nYXJiYWdlLWNvbGxlY3RlZC1jYWNoZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk5NTkwYWMzNWFkNDEzOWIzNGI5NGYyZTU0YWY3MzgwYzNhODNiNDEwOWExMzkxZGM5OWIwOGZmYmNkNTUxMDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjhiNDZiN2U4OWZiZGNlY2ViN2JjZjM5ZDA0YzAxYjI0Y2UzZjAxMTNhMDE2ZWFhOGZjMjAwNTU3NDA2YmU1ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODMyMDcyYTkwNThkZjQxMjNhMWNmYzJmMjZlZTc2ODA2NDdmMzQ1ZTU3OGNhZTkzZGQzNWI4MTNjOTRlZGU5ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvaGFuZGxlci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3Mjg3YzRlMGE0MDE3ZTkwOGNiNjYwODhlYWU0M2JlMmVkZWUzYmUxYjAxMGFkYjAyMzc3Mzg0MzExOTUyYmFmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAyYjUyZDg1ZGFkMWVmOGU5MDEyM2Y3OWE5N2EzZGM1YmI3ZmMyYTZiZTJiMzc1M2U1MmRhMzhiNmVlNDBiN2QiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFhYWQzZjE4ZmIwNDlmOWE1MTNjMGM4ODJkYjRhM2IxYTk0ODNiZTNjZTZmNDIxM2M4MGIwMTFiNTFmMjZkMzUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWNjb3VudGluZy1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA3Y2M5N2VlY2NhN2FjNDFlYmE3ZDUzYWUzOGY4MjhlNjM3NTE1MzIwYzg2NGUzYWNhNzY4MzEwY2JjODUyYzQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY3YTBmODk1YjM1OWJmYmFkMDk2MDI0NzA5NGFlNGI2ZjE2ZTlmYTgzYzIwZWYzYjc3Mjk3YzAxZWY5NzUzNmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9yZXBlYXQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhN2NhNjAzNGI5NTdmZTI4NWY3NmYxY2RjNDUyMDU5NDhkYmY5YTczMDExOGMzMjkyNjBmYWQzODQ5NTdmZTg2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRmOTIxMTRkN2RlZTYxZTU2ZjRmZGFiZDkyYmUyOGI0NjlkN2ExMGNlODFlNjQyZDNjZTRmNTI1NTJjOGY2MmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdHlwaW5ncy9nbG9iYWxzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzZDY3MTkyMDdiZjlhODk2NDQ5N2NjZjg0NWY0Yjk5NWY3MTIxNmYyZTc3ODRlOTYwMmViZjVmMzQ5ZTY0YmQwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjgwYzAzMjYyOGM2YjgwNjRjMWRhMDk3Y2RlMDE2YjQwYzQ4MWEwY2EwNWEzYTY3ZWFkYjgyMGZhZmZmNmMzMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDliYWJjNWI0OTM2MDM5NzVkODhkYWZkZWM0ZWI5MTVmNTUxNGQ4ZjBhMjZiZjRkZjBiNjhiMDUwZTJiMzU2MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGRkNzYyY2JjNGI1MTBiMWVlODQ4NWJjMjg4ODdiOTc2MGRkZmU4OTRhNWMzZTM4ZDdlODdkZDBmYTJiODM5NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZkMThhYmEwMzcwMTVjNzc3YThhZDk2N2NiMWQxZjc5YTA4OTJhOTRkMTYwZGE2N2RlMzI3MDRjNmZlMjEzZmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM4NmY0MGI4N2Y4ZGJhYjA1OGY1NWFmYTI1MjVmY2UyNzk1N2UyNWM4NDQyYjEwNzk0ZmU2ZDU2MGVhYTk1YTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxODY5MmYzNmFkM2ExMTA5MzhjYjBkYWU2Nzc0OTYxN2RkYzJhZDU3ZGYzZTNmNzgxNWQzZTYxOWJlMTJlNjJlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE1ODVkMjBhNDdhMmJmMDk4YjRkY2EyNWY0MGY2ZWU4OTVlMTJkZTYzM2NjMjRmODFhMjk5YjUyZWYxNWJmYzEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Vycm9yLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVhODQ4YThjNGNiMjlkMzdhYWE5Yzk4NmY1MTRkYWYwNmJkZWY2NDQzNzUwOGJhNjhhOTRjNDE4MTE4NzY0ZTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW52LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFmYjYxMjY4OTI2MGU2OGU3MzRjNmRjZGFiZjg4YTcyY2UxNGM5NjQ1MDUwNGM4NWRkYzMyOWRkMjAzMzhjOGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODA0NTBlYzRiMGUxMWYxMGE2ODc3OGQxN2RlMTkzODQ5YzAxZmY0OTNkYThhNTNiNDA1MDM1NTY2MGJiMTY4OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmE0NGEyNjVjZTYxZDZhOWQ4ODc3MzI3Y2YwMzE0MDExOTZlM2YyYTU3OTlmNTU1NjU3NjYwNmM4MGZkMmQ4YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MDFmYmY4MjdkMGIwZTgzNmI3NmVmYzc5M2FlNDU4MzlmZGIxZThhNjUyNmEzZjI3MDE2ZDU3NWU0ZjM4N2U1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQzMzFiYTIwZWIzMzI0ZDA3NDIwMWZmMjIxOGFiYzBlM2NkMTRmOTJlNDViMjM1YWUzMmY0MTQ5YThhNDM0MzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YzRhYjE2NzllYWNmYzI4NmU5ZjRiNDQxMTM2MmM2MWVlZDJiMTkwZDk5YmFkY2JmZDBlNTI1ZDRkYTJiM2JlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMyZjU2ZWUwYzc1MzljMzlmNjk3MWVlOWZhODFjMDQ1MGRmZjQ0YWEzZjAxZDY2NmM4YWQ2MjI5YmRmMzM0NjUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNmQ1MmMxMjc0MWJjZTM2ODhiYzEwM2M3NmVhYTFjYjczZWE3YWNiNmUzNDkzZjZlZTNjOGNlYzc2MDU2NzA3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dzcmVhZHkuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzFlZjQxY2NhYzM5MWRiOWM2ZGI0MTA1NjFlZjAyYWMxNWMyODQ1OGMyZTE2NjEwNDA0YTliNDk4YmYwNmVlYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjM2VkZjFlYmUwNWQzZTBiMzAzZTcwMTAzNzhiZWFhZTdkZjdjMTUwMjgxZjk5ZDk4NGFiNzliM2EyNmE3YWNhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2xpY2Vuc2UtcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzlkMjkyZGRiNDdmNmY3MDc0ZjY2ODJhODU2MTMxOGU5ZWMyNWMzZjU1NGJlOGFmYjU0ODA2MzhjNzY5ZjhhYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzMGJlYTVjNDVlY2IxMGFmZmNkOGIyMTA3N2FkNmZjNWY0ZTViNTJiNjBlOGM0MGVhMGQzMjVmMzZhNzM0NzFmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE4YmJmOGRjZTljZjUyMjc2OTFhMDZhNGJlN2ViNzU2ZjgxZDE4NDVlMWExOGU1ODA5YzYyMzg5ZTg0OGIzOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwZWJhMmM1NjA2YTk1NTk2ZmQwMjE0ZDg1MzIzM2RiZmI3YTRlNDM1Y2UwY2NmODZlNWJkNjA4Y2E3ZDQ0MjExIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vY29udGFpbmVyLW1vZHVsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM4YTY5N2I0ZGJkYjVmMWFhODU4OTZjMTU3ZDI0Y2UwZDVkMTE1Yzc0ZjRhZDhhZjcxMjhkNDNiMGQ1NmE1NzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ4NjhlYTI5YmY5YzZhYzlhZjQxOWJhNGU1ZTE4OGY5OGVlN2EyNzYxNDIzMzg1NzMyYzA2YWMxMmEwMWE3YzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdHlwaW5ncy9nbG9iYWxzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjQ3MWVhZGQ1NzMwZTZhYjFhYmQ3YzVkYmM2NmRlYTE0YzMwM2JjMTEyMGIwYjA5Y2NhMDZhNDc0NGE1NDkwNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGI5YmJkYmNlNDdjNGRiMzIzNGM0YjA3YWUzNGRhNzdmZjY5MmE0MTgyNzU5M2Q5OTU1OTYxNDAxZDYwZWI2ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2UzODc3ZmE0Mjc4ZDhlMzJmNGJiZjAyM2NmMmU5MmUzNDhiZTZmZmQ2ZDk1ZWVmMDNiNTBjOWRiYjY1MzM5MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMWRmNjYyYzgzMWMyNWRlZWQzNjJjZWU4ODNkNWFkNjUzNTZmOTE1NGU1MzM3ZTM1NzIyMDFmNzU2NWJiZmVmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjc3ZTkzZDNjZmU0MDM4MjRiZTkxYjU0YTEwMjEwZGYzZDYxOTVhZGM0MmZlMGQwY2VkNjlmZWE4NTYxOTFhZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNjExYmYzNTNhZDBmYjMxYzJiYjQ3ODQ1NDc5YWU5YWRlY2FkMjk0Zjc1ZDI3NzE3NTAzMmE3ZjExMTRlNDY1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4ODI4ZmZiNDkxYjIwMWZlM2FjYjZiYTMwNzljZDgwNmZmNDk3ZTI4ZTgwNzFkOWIyMWI2ZTYzM2VmOGVmMzk2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZhYjg5MjNhNDFkNTVlZDY2MjBmYzdhMjNjNDE5OWRjNWIzODk5OTA4MjRmZjQyNzM2NjI4NmU4N2VhNzk4ZmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjEzMDM5ZTVmZWExOTAyOTEwNjA1YTM2Y2IyZjVkM2FmMDRlMGU3ZTUwMzM2OTJlM2QxZDllZmE1NzM1ZWNmMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL21ha2UtbGluay5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxOTk5OWY0ZTZmYWYwYWY3YzM0ZmU0OWFkNDQ0NDJlOTA5ZjYxNWMyZGExNWZhOTUwZGYxZDUzZmEzYzZiMDI3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImIwNjQ4N2YwMzQyYTBhNWEzNzU5ZjgzOWFlYTM0OWM3NzFjZDc4MzVlYjJkZDRhYjkxMDg1OWQ4MWE3YjI2MjYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWVwLXBhcnRpYWwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NjRhMjkzMWMxNzkzZGRlYTVhODZmMjU3NmNmYmU0M2IzMmFlMDIwZjZkYTk1OGFlNGY2OTA1ZjlmNTFmMjEwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImIyYjU1ZDI2NmQ0M2NjZWRkYjkwNTViZjgzZTA0OTA1OWI2Y2M5ODhjMzdlMTRmZDdlNGY2MGM2NmM1YjRjMGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYTM5NjRiMzMxNzc3MWMwYTE5OTBmYzU3YWY5ZmJmZjNiZjJkNjY5NTc4MjQ5NTIxNmI0MWUzMDkyOGFhZTU2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMWUwMTJhNzFiZjJmZGYwYjhlZDViYzA0YTQ0ZGE5Mjk2ZTg4YTM3YTAzOWFiNDc5Y2Q4ZWI2ZDMzMjk4ZjY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNhYWU3YzE3OTdlY2JmM2FkNTUzNmEzMTgxMjkyNGYyNTAzZjI4NDRjZmRjMGU0Y2E0NzU0MjRkNWU3NjZjMTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9qYWVnZXItY2xpZW50LXR5cGVzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5ZDg3NWEzYzZmNDk3ZWQxZjllM2I5ODAwMTk0NWY4YmQxOTdiMTk5OWZiNmFkODdlMTc5ZDQ3N2QyMmZkNzgxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWIzMzhhYjA2YmI0M2RhYzE4NjY0NmQ5ODJiNjhiNWIxZWJmNGM4NDgzOGU5YWVjZDM2NWZiN2UyZDZkYzdmMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjdlZWMyMGIxYmFiMjAyYjY1ZjYyMDkxYjlkNWNjN2U1OTUxZmM3MjQzZTVkNzM0ZDEzN2VmMGVkOTNkOGJjNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYmE1YmQ2MTQ5MzQ5Zjc1MTE1ZTI3NDhjNTk5ZmQwZmZkNTZhMTVjOThmODU2OWE2NmM0NmQ5OGNiNTdkZWFiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkMGRlNjY4ODVhMDAyODRjOWQxMDA0ZGRkYTBlYzhhZDVmMmM4YmU4ZDE5MDJkZjJjMjIwNjU1MDAxNTBkN2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjQyYzJjYmQxY2MzYjBjNWZkMDBjODE4ODczMjFlYjc5M2U0YzE2YTYzMGU2OGMyMmRjZDBjMWY2ZDYzYmRhNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbmRleC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODhjYjU1OWY3NzYwYTk5NjcxOWE5MjJiMDJhM2RiNWMxNGQ5ZDdiNDllYWUzZDc4ZmM5NjNiZjZiOTg0YTViMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRiZGM2YTc5OGE1ZmNlM2U3NDAxYWJhYTNlNjBlODA2N2U1NzgxZTk2NjdmN2VhYjg2YzQ2MGNjMTQwM2U0YmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9jYW5jZWxhYmxlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImYzYmFjYjY4MmM5MGNmODBlZWEyMmVlYjg3NDI5MDk5MTAzMzUwY2IzZTZlZTlhZGMzOWZjMTA1OTg1MzhhOWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2NsaWVudC1jYWxsLW1ldHJpY3MuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWI5MDRlMTIyOTFkZjA4NWZkOGNjOTYyMDcyZjBlMjBmNzU0M2Y4MGFmYTJmNThkZmEyNzQwMmU4YTU2ODc3ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NjRlNzg0NDYzYTBlZjAxZDFiOWJjMTkxYjdjZTIxMTNjMTNmOTJlODJiYTAxNDNlMmFiMmMwNTQxYmFmMjVhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dzcmVhZHkuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZlODg3ZmEzNjlmOGQ2ODU1NWMzYTVmMmViZTY4MTIwY2E3ZDM1MmQzM2FlNzZkYWE2YzliODkxMDBmMjAyZjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWVwLXBhcnRpYWwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTZkOWQ4ZDJhZjg4Y2ExNzIyNjRlZDkwYTk1ZGRmYjM2ZGU3MWZkNzE1MWExNDRiYzY0NjNlMDZlNWY2YzEyNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY1ZGJhN2JlMThkMDFlOGY0ZTdmN2M2YmIwMTU3MjQ3YjFlZGQ2OGFkNjdjMDcyMmE1OGMwZTVkZWM5MTdjNWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kYXRlLXRpbWUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjg3OGJlYjBmN2NlZjJmYTg5MjY2NTVlNWM1OTkwYzA5YTZiOWM4MGMwNDE2NjEwMjRiYjBiMGJmMjJjOGExOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbWFpbC1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNjMjdjODlhODE4NDAwZTAyYTI1NWYyOTdmMTdhYjMwZGVkZmRhNjMyMTYwMWEzOTQ1MmU4MjZmNWQ5NzYzYzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYwYTJkNjI2ODAxNTkyY2JiYjNkMzEzMTAzNzI2MWI2YjUxYjVjZmMyYzI5NTRlMjNjNTJlZDFkMzBkYjQ2MjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2MTc0YWI2YzA4NmViOGI1N2UzNjRiOTE1M2I3ZmRlYWU5ZmVhMzAxOWIwYmRiNjIxOWQ5MDYyNWE2MTI1OTA2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvamFlZ2VyLWNsaWVudC10eXBlcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNmZkMTQ5MTA1NzYzNTQ2ZGMzNmE5ODY3ZTM0NzMxOTAzOGVlZmU0MjI5OTZmNjVjYWM3ZjFjMWJmZmViZmRmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1mcm9udGVuZC1zZXJ2aWNlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjgyZjI2OGExZjZiZGM2MjhiYzYyOTE2OTNlNDE2ZTY2ODA1ZGIzNjc0M2YwOGU2MWQ0MjYwYmRjMDVjNjMwOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE0ZmQxMWYxNzMyMDZhNmMxOWI3NjVkOGY0OGQxNDNjNTA1YThjZDczYjBjM2QwOTU2ODBiODRkN2Y4Zjc3MWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWNsdXN0ZXIuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY1YmYzYzJiYjA2ZjI5ZWE5YmQ4ODIxMTg3MGUxNzcyYzUwNWVlZjgyNjY5NmYyZTY2Y2NhMGYzYzI0M2E4MTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3NTUxNDlmZTgzMTNiMDZiNDEyMWYyY2ZkMjAwOTJkZjE5MDFkNjU3YWI5MGVjODJkNjk5MDZmNDkyMDU5YmI5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNTExNTlmMjJhOGI2NmIyZjFjNWU2NTFlMzhhYTFmNTdiZTRlNjdiNTIzMzBkMDE2YmQzNmQxNGY4NWNlNzZlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGYwZDc5NzRkYWYzMjUxYTQ1MDY2NjU3NTk5YTA2NDE5ZWIwZGU1NmU3MDE5MWU0ZDM1YTU0MDFiYjU1ZDY2NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBkNDc3OWJlYmFiOGZmY2RjODk2YmJmODgzMGQ0MDhkNGUxMjkwYmY4ZTY1MTUzNWZhYTRjMGJmYjkzOTQ1OTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzk3ZjhlOTQ0NmE4MmUzMzVhNDNmZjIxZjQ0MTBlNTZmNTU0ODY5MDNiMWE4ZWM2MTRiMDVhMWJkN2E1MzgxNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYTQ1ZTI1YTVkMWNlZDA5ZWYxYjU4ZTRhOGQ4YTllMjIwYmU2NGY0NWFlYmMzMTI4YjU1NGRhNGM0MzA4OGYxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZiNzBkYjg1OGRlNTc0NjMwZmI1NTgwMWUzNDAzMjE5NTEzYTMwOTRhM2VmMGNkOTMwODQ5MzgzMWNlMzRkNmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmYWYzZjdjNmIwNTVjMWU3OGIzNmYyNGFlY2EzMDM1Y2UzM2E5MTFhYTNhMjY5MjU3ZjAxZTI3M2JiN2UyNWY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGUyZWEwOTg4YmQwOTZlNjhkYjRhM2RmZjJmMDZjMzllZDU5NmEzMmUxMDNhY2FiNzRjZDYxYTQzYTlmMDMzOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NzdiMzEwMWY2MzdjODNkZmZiYzQzNWRjZTU1NzMxYjUwNzE5NDVmZWU0MjAxNzc4MmZjNDZmZmNmNjhkYjIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBjM2I2M2RjZTJkZmI5YWNjOTI4NzAwMTkzMDRkMDZkNzE5YzVlY2M1NzdkNmVkY2MzZmJkY2FjYTc3ZjVkZjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI1NjljNmQ3NWFhNDgzNWIyOTIwN2JmZWI1ZTJjMzkzZGMyYTVkYzUzZGYxNGQ1YzVlYTAzOTQ4OGZiNjAyNGMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGRhNWMxMmI0ZjdkMGZjN2QyOGIyYTBhNjA3ZDQyNGM5NjRhNTJlNzk2NGY5MmQyOTc5NTdkOWU1YjU0NmMxMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdiMjhmMTI3OWZkN2VmMDEwNzc4NmJjZDM3MDE4YjBkZjNmY2VjZGRjM2U5MGYxOTYxYzRjNTBlYTAyZDZiNTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBhMWJhYmJkZTEwOWNmMjA1ZGFmODA0NDlkMTU0YWU1Y2Y1NGU2ZWExNjU5MTRkNjZmMGQ2YzY0NWM2ZmE4NmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9jYW5jZWxhYmxlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJhYTg2OWVkMzk4MGI2YTBmN2NjOTcyMDdjZTkxZjI5ZjdjZGMyZTM3NzI2YjNiNTcxN2QwZjYyYzJlMTA1MTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMxNWVhZTkxOGMyZjY1ZWM5ZDhiMGEzYzEwNWZkNDQ2NWU3MmY5NzRlMzg3MDg4NDUxNzczNmIwZTg2YzkxNzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdHlwaW5ncy9nbG9iYWxzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRjNzJlMzcyM2RiZDlkZjUyY2ZmZTY4Y2NiOGU5N2QzNjllZjdkYjFhMjNiNWU1ZTE2Y2Q5YzViNzA0MzM4ZjgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLXNlcnZpY2UuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZhZGI5Yjk2YjhmOTI0M2E2MTIwOTNhZGQwNjQ3NThjYWMyZDA4NTYwODhhMzFlMzJhN2Y2YzYyN2JhNzhkOTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGRkYzA3NGFhZThlNDdjYzUyNmY3MTdiYTY4MjRlN2RlNDUzNzlhNzU0OThjNjBlOGNkMWIwODRmYmZhNjJmYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2ZkNTIxYjcwYjc3M2ZiODQ4ZDEyNjlkYzc1NWFhNGE2NjkzZGEyYjE4M2E4NjgxNDYzZTU0YWFkMDgyMzBmNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyODg5MjExNmMyMjYyMDYyYjllOWMzMjQwMGQ3YzhhYWViNzZkNjI3ZTg3OTQ5Zjg1NTRhZjhlZjBmN2ZlY2RjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjQ4ODVjNDI3NmRlMTVhN2QzMmZmZGNmMzQ0ZTZhMjQxM2I5OTFkNDAzOWQ0YTNjODdmYmQ4OTk3Y2ExMmRmYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbnYuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2MjJmNDk2NDE0YWRjMDI5ODU4MTYxYjAxYzU5MmYyMDE5ZmU0NzZmNzE5NDg2MjQyMjQzZmQ3NjU0ZTY4NTI4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YzhhMzkwNzNmNmRlZjlmZjI5ZjIwZTBmOWMxZDY0Y2MzZjExODVhNTE3ZjZiMDM2ZjY0YmUxOGNlNzc1ZDM0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1pbnN0YW5jZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1MGE2NDNlMGIyMzY3YTQ5Y2E1NTQxMGI4ZDQzMTlhZTIxZTdmZGZmZmQ0ODk5NDliZmExMjllNjg2MGU2NmVlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM5YWQ0ZDg5OWNlNTg4YTBlYTVhNDFjY2IxNjk0ODQ1NWE4M2YwNDU5YWZmNzRiNTI2Y2ZmZDQ0NDRhMzY1YzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE5YWI5ZDc2ZmY0YTg4OTc4MjY3MWM3ZjJjZDlkMGU4YzAyMTk1ZTM3NmE2MTdiNGU2OTAzNTQxNzM3YTQyOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMwNjcxNzY5MzQ2M2UxYTNiNjhiZDczZTZhNjg3ODIwMzFjOWFmNTdhZDI2ZTA4YjMxZjBiNjFmNzllOTJlZjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWVwLXBhcnRpYWwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDVlNjgxMTM4MjcwNTFjZGQ5MTk1N2QyOWFlNjNhODFlZDBlODQ3YmE4OTE5YzdiZjhmOTdlOWJmNjlhMGQ0YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc4Njc4OGRjOGRjOWMwMmQ0ZDQ0MjdhNmY2MmY0YzcxODk2MjVhMDcxYTRiMGM5NTJjOGMzYmVlMDhiNTg2MTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDAyYjUxNTE3NzU5ZmY5MjI4MTNjNmNhMzFhNjRmMWYyNzNmNTk1NGI0YjMzNTBmOWFkMTc3MWJiOTlmYzgzZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImUyYjQyOGNjNmE3ZTliMjU2NWMxMjNjOGM3NDVkMDk0ZTMwNTJhNDM2NDJlY2Y5YjI5NzQ0NGIwYmRiYzE1NDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9rZXktcHJvdmlkZXIuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjg2NjFiNjU1NTJmN2JjMmRlYmJlNTUzMGMxODgxMzE5ZGYzOThhZDkyMGNmMjhkZGFkZTJjMDU0MjJjMDZjOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2V2ZW50LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTkxNTcyNGM4ODQ0NGY3ODQwOWZiOGQ4YmYzZjk4OGY1NmFjYjdjNGJlMjc1ZmY4YzMxMmIxZDI3ODZhMGUyMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWU2ZWYyYzExMDIwNDdmZmZiYWQyY2EwMzUyNGVlOGY0MGVkNTU5ZmQ3NzQwZjEyYTA4NmVlNGNiYzU1NTE1NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2NhbmNlbGFibGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA1M2IwNzJjZGJkOTIyMzk1NGRkNWZkYTkyZDkyYzk5ZjgwOTlkOGVhZTUwY2ZhNmM0YmYyZGFhZGQwNjFhMGEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxMzg2N2RjZTZkZDRmOTdhMjlmNGY4ZmZjNzQ4NWU3ZmM5ZGEzYTg4N2JiODc5ZjZhNGM4YTU4N2M1MDU3ZmE3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGZiMGJlMGMyZGQ2MzFkY2MyOWVkNzJkMGVmODgxMTk4NDAwNGJjY2QxMTlmZTZhMjQ1ZGE0OTQwNTUwYTc1MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDNlNmZjMjE0MTgzMmVmYmRlMWIwOWE4Njc0ODc2NzU1YzE4MjQyOGM1OWY1YzRkMGY0MzQ1MzE0NDQ1OWY2YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4OGFkNWVlNGM0MzAwMWUxNDk0MWNiZGQwMzQzMjc2NzFhOTc2N2JmNThlNWY1YWJiOWQzOTNkMzYxMTJiMGE1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FkbWluLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNzI4ODU0YzZiNTY3MWY2YjIxZWIyZDQzZDMwYzZkMzQ1OGFlNzNiNTE4MTZmN2Q4M2MzNmRkN2M3MTJiMWJhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9jbGllbnQtY2FsbC1tZXRyaWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMmUxMjEyMmVkNmQ4NDA4ODFhMDgyNWU3M2JmNWRjNjE5ZjRlMjVkODZlM2QxNDIxMTU2ODM1MWUzYjFiN2I1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjdjYzBhNjgyNWYzOTY0YzcwODA5ZTljNjkyYjIyNTVmYjMzYjZkYjUwZDU1MDE1ODZiYjdkOTIxMDM4MmM3NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2NhbmNlbGFibGUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZGY1YmM1MzkwYmQzOWY0ZmEyNGMxZGM4ZTU2YzY1YTU1YjFjNTNhZDg3Y2FiYzA1NmVmMmE0ZDBjZmRjMjY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjYzZTJlZDIwOTY1YTg3ODBlMDIyYWIwMjE2MjcyMjMyYzJmM2MwNzVlN2Y0ZWZhNTIxODU4MWNjMjE3NjAzMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTdjNzJlZmQxNWNlZTg5OWI0ZjQ2Mjg3Mzk0OGNlN2Q4OWFjMjNkZDQzYWRjY2VjMzlkYTBlNzA3OTEyMzUyYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjMwZjYwZTI0NDdmNTgzYTZhYjhmNDkzZmVjZmE4ZTk5ZjgzYTEyYzNlMzg5ZGZkYTVkYzdiNDMwMThlMGRiZTUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNzdjM2FmZTM0ZWJlZGFjMzI1NDljNDExZGFlMDAxMmNjODhiMjNjYmY2OTgxZTM0MTE2NTAwMjY3NzJmZWJlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2VtYXBob3JlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE0ZjZkOWY3MWE5Nzk5Yzc5NzE4NTdkYWRhOWM2ZDgzZjU4NGU3NDA4OTRlMDU4OWY2Y2I2ZTk2YmNmMTgxZjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLXNlcnZpY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDMzMDBjYzUxOTJmMzZhZDQ3Zjc1NzYyYjRlOGExZDg0OWFmYTU3ZjU5MWJmMWQ4ZWQ0NmJhYmU5MTExYmIxZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNkYTk1YWIwZDJiZjI0ZDc0NDZmYTUzOGIxMWQyOWQ0OWQwOTU5MDljMTk4MWVmMjc4ZWI2YzczYTUxNjhjYTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL25vZGUvY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmZmJkNzhkM2YxZWJmYTU2ZmM4OThkYjVhNzIzOGUyMjM4YjE2NzZlMzFjZmQ0MzhhOGZlNWYwNWIwOWYyNmZjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE1YzNiZGU3ZjliNTliMjhkNTM2ODkwZjUxYzA0MDVhZjNiNmU2OWVkMWQ4YzJkOTJhOGIyZjlhNjcwYzU0ZTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1Yjg3ZDcyODZhNDcwZDg0Y2E2NGNmMzdiMTQ1ZWM5OTkzZDliYWM2YzY4NTAxMjAxMDczNTkwYWNkZjA5M2Y5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDA1MzRkNTU4OWU1ZmI3ODU3ZTg0NTRlMjYzNjc5NjRjZjgwMTM4NmQxZmI4ZmMwNTE1Y2UyZTQxYjEwOWU4ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbWFpbC1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWM1YTJiYzE1MjRhYzFlOTY5MzhmMjQ1ZDhmNzBmOTJmZTMwYWZjZjJhZTJiYmE4NjNlMzQwZWU5NTkwNGQyNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvaGFuZGxlci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YTk3N2UwNTkzMzhmNzE1ZGY3MTU3MGRlYWZlOWMyNzlmNzg0MDAwZWZlOGVkOTQxMzNmMWM2NzhkMWJhZGM3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luZGV4LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZjZTIwZTczZWQ5Zjc1YzkyNzZkZGM4YTA0NGM0YjExMDdkNDgwMzY1OTJkM2ZmNDJjMjFiOGYzMzc5MzViYzMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3NWY5NTM2MmEwYTFlYTk0MzVhODU3MDg4M2I4MmFhMWJlZTBmMjZlODIxYWRjYmVkMjNlMTM2NDczN2Q5ODJiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWNvb2tpZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFhMDdkODFlZjEyNGI5MDExNjIzMDMwOWEwMGRmM2M3YWRmZjM0ZjQ1ZGY1MGE3MzI1MTg4NzdhZDAwMDQwNWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZGI1ZmJlODQzNTQ1Y2MyMjVhMjUyZTQ0YjQwZTJjNjVlZDdhZGE5ZDBmNmZlNGIwYThkZDBhYjhjZjJhYmEyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyODVmODVlOTk0ODdkNGZkOGFlZDk2NmZiMjMxNzk5ZTJhOWU5ZmY0OGU5NGNiZWZjZjZjM2VlYjc3Y2I5MGQ1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNhYzRiMzVmMzEwOGYyMmUzNTQ0MTk1MGY2MThhYjAzMDg1ZjU0YzRmNTgzZmFiMjFiOTI1YzkwZjlmZjk3YzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAyMDJlYjBhMzJjMDJlODhiM2NiOWUzYzI3NjA1NjQ4NDk5ZGNiODBkMTRjMDE1ZDQwZDQwMjQ3MTAxN2U0YTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kYXRlLXRpbWUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2YTQyYWViNTczYTE2YzRhZGZlMDMzYmNhOTFlNmEyZDIyZTY1MzRjYmEwZDhlMWMxYzQ3NGZjODY2YjdhY2Q4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luZGV4LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjUyZWZhZGY1NmE1ZWRkN2ZjODJlZWI5ODM0MmFkMmZiMDZmZjFjNjhlYThjZTMyMWIxNThiMzFjYjkyZGZkMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjEyNjVmNjgzMzNlYjQyODcyZjJhMjQ2NGUwMTY0ZGU1YmY4ZmZjNDQ2MWRhM2VjMWExOWRhNDU0OWU0NzIyNmEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9sb2dnaW5nLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY2NmVlMGEwMzlhYzU4MzhhMjU5ZDgzNTQ0MDA5MTljZDA0ZTBlYTgyMWFlOTQwZmMzYTJjNmQ5YzAwZDFkZjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWMzZjFhOWNlMmI1OWZiZjFiZTRjNjA5Y2QzYTg5YThlZTdmNWVmOTdjYzFkMDgzZDYwN2FlOWNjYjk3MDVjYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmE5MWFiNTI0ODA1MWQ1ZGM0MTJkNWNmZDY5NWU3NDZiNmM3NDQwNmIyZWQ0MWE4ZmQ4NTA2NTQyNzM4OWZhZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM2OGFlMTIwMDU5ODE5ZTBlYzZmZjNhNDg3Zjg0ODM4YTk2YmZjNzFlNzkwY2VkZmRjN2UyZTkyMzdkOTU2Y2YiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFiOWVhNWIwOWNhNzllYjJhNmZmYmQzZTQzM2I4ZmI5MzQ0NTQwMTA2ZTMxMGM4YTg2OTI1MzdhZWExMTk1NzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9rZXktcHJvdmlkZXIuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjViMmE0OTI4ZTQwNDcwZWQwYWE3YTU0YzYwYTFkYjhlODlhZGM1MzMwNDgyMGYyMmNhZjRjOWNjZGQxOTY2NGEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFiMTliYTVmNmQ5OTNmY2NkNDdlYzZhNjc4ODA1NTMzNmE0MmU2OTIyZmE0Y2JlODljMmI0NzY1ZjMyMjFiMGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI0NzFmZjE1NGY1Y2I5MWUzYTU5OGZmZDVhYzM2MWExNzE2ZmM3MGM4YmZkOTAxMmQ1ZDE5MjRjNTJjMzQ5ZDQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDJlZDAwYjg5ODI2OTE1ODJlYmU4OTllYTFhODZjMzhjZmE5Y2IzZjNhNTllMWFhYzIzODk0NDQ2ZjliZmVjOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWIzOThkZTQ5Y2I0ZGQyNWVkMjM3MzY4MzMxZDdjNDI1ZGI1MGNiOGU2YWRiZDgyOGVlM2YxZjBjMDEzZWM0OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjYmI4YjYwZTZmNWE3Y2JhNWVmNWI1NzUzYTM2ZmRjNjhhYTMyY2ZkMmU5ZWMyNTk5MGMzY2Y2ODVkNDEwODQ5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDg0Y2FmNzllZmM3OTkyNGQ0ZGI1ZmRmZDYwZmM5OWNhMWZjNzBmMjNlZmIxODY2NTMxYjFiYmQ0YWMxNzlmMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3OWIzMzc1MGJmNjZlNzA3OTYwNzQ3YjI5MTI4MTg3MmU2ZWU5NmJlNDczNjdlZGUyMzFmNDNiNTM3ODRkZDQ2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ4MDhmZDI3ODEwZGNhNmY5YjA2NDU2YmYxMzBlZTBlYjFlMjcyNjJmNmNhMGI2MzRmMmQ1MmE1Njc2ZWI3NmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTMxMTk4MjQwNDdmYTM2OWIyYjhjZTYwYWJiMzFmNWRmNjFkNzgwODE0NTg4NTViZjQ4MzgzNmFiNGRmYTBkNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhZGRiOThiNmZhMTY1ODczY2QwM2EwNjdlMDQ5OWEyZDFhOWQ0YmZjYjZhZGM0OGZkZjQ5MjE2MjAzODIwMTU0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2ExMDM5NDgzMDJiMjYyYWVlMTRiNWMwMmJhOThjOThhNWRiYmExMGY2MjNkZDNhNTZkZTc0YzVhNmQ4OTQ2NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjRmYTdhMDY4NjljNzg5ZDI3NDZkOTllYmNkY2RhMjg4MWI1NzBlMjk5NTI5NzdlNmI3ZTRiYTdjNTRiNTVlNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hY2NvdW50aW5nLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZhYzhkNDdlZjZkNDY3MjJlOWRhZGNmNmE4YTc2NTUwYjNlYWYxNjQ5ZGQ0OWYxNWM4NmE5YzU1ZmJhNTIzYzQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3MDk3NDA3YjM4N2I0MjNhOTE4OWUwZmNlNzQyOTk3NjkwMDJiYjViN2QzNWRjYTRkYzZjM2M1YjFlNzcxNjJmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzIyZjMzYTc0Nzc1NDAxODVhNjFlYWU2ODdmMjlmMWQzY2FhY2ZhNDQyYzhhNGRkMTNiNmVmNzQ1ZTBmZjhhYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NraXAtaWYuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImEwMzkxZGRjOTY5MWU5OWJlMzVjZWRkNTA3Y2ZiNzM3ZmU1MTZiMmUwYWUwOTc0YWRiNzMyMzc0OWVmZThkNGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ncnBjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4ZjQxZmRkYjI5ZjU0YmRlZjY2MTFmMWQyZDE5NmEzNGQ4YmIwZGZiNGMxOGQ1MWQ0OTEwYzlkOTcwOGUxYjcwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcmVwZWF0LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg3MDJmNDg5MjBlOTFhMjFlY2VhZjkzM2U3MzE1M2RhNTExMGZjMjdhNjkzZWVhNTAyYWQ2Yjg5MjFmMGRhOWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2NsaWVudC1jYWxsLW1ldHJpY3MuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTQ1MTMwOTYzN2UzZDcwMWRiMDhmYzhiNTlkOGFmZmFmOTlmYWIxYzRlNmMzMGU1ZGZhYjcwNTBjM2UxMDM4YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2tleS1wcm92aWRlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNhZWVhZWU4OGNkN2IxNjI5Nzc5NDhjNTRjYTczYjkzMWNkZjgzZjAwOWYxYjdlMGUzYjY2M2E2MTIwMmNhYzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NDNkZTE1NTIwMTExNTkxNzJkYmQ1MWQ0YjliZDM2MGNkNTNlZWE2MGNkMWFkMDUxMmUwNDBkMWU0ZDUyZjliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhNzUwZDZlMGQ5ZmZlYmY0OWU4MDIwZDAwM2NjMzViM2RhNDkxNWU3NjkxZThmNTUzZGEwNmRhNjJmNTVjZTNjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3R5cGluZ3MvZ2xvYmFscy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmMzU0NTIwZTEzNDZkODY3NGNjZjg1MTA2OTU0NTc5OWUwNGJjZDMyNTM2OTg0ZDA0MjQwNGY4MjIyMTQyMmY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE4ZGQ1NmMyMzVkMDU0NjVhZGZkYjA5NzRkZmU4OTNjZjU0MGQ0OTc0OTllZjQ3NzhjMjk3NzAxYTAzNzRjZDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmMjU5MDg0MmRkNzY3ZWY5MDk1NzZiYmFiODExMDVmNTA0NTk0YjQ2ZWNiYTkyZDZiZmZkZGEwZTY2ZjBlMTA3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcmVwZWF0LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNjM5NjUxZmVmMDhhNjFjNjdkZDBiOTBkNDdhNWQxNDAxNDljMzRhMjU2M2VhNWRiMGU1ZWNmNTcwMjViYTE0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTFkMjNhMDNhMDg0YzRhNmI4MDZmNThmMTI4M2Q3MGFjNWUwN2E0ZTc2OWQyYjJjOTc2MjE3NTI0M2ZlNjIwMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGIyZDNiZmRlOTk0NTgyNzkyY2JkZDczZDI0ZTkzZGE5YTNiNzNhMTFlZjhmNTM1Njc1ZDQzOTYwYWE2MGZiYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzA4NGNlMzNiMGNjN2FmMGZjMWI0ZDVkM2RjZDY2NjI3Y2M1ZTAyY2UyN2E0ZGRmYTBlMDk4NTEzZTIzMjU1ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZkZjUyMjVhODZkZGVhYmM1NWQ0NjVhZWVlMmVjNGMyMzM4MTVhYTIxZDNkNmUxNWI3ZDU2Yjc4ZWJhODY5NDIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9sb2dnaW5nLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdlOTg4YzczMzM3NmEzOTJiZjRlZWFmYTBhYzc3OTc1Yzk3YTIxMjdiZjI3ZTJiM2E1NWY5MzQ5MWFiYzk3NzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Vycm9yLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGJiYmNkYmQxOTU0YjE0NDQ3ZDEyNjQ3M2JjNDFiYjAzYzEyZWZlOWUyNjEwMWMyNTRhODYxN2E1ODFjOWNlZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3OThmMGQzMGM5MGE5YzA1NjJjZGQ5ZmQzOTdkOTdmMDU4NTFmNjA4OGFmN2RmODAyY2Y3NmRhYjdjOGMyYjhmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NjM1ZDQ5OTdmMTQ5MWI3Y2YzOThiZTFmZGQyZmQxMzE0NjdhYmUyNTFhZjVlZmFkZmEwNDJkYzgxOTNhNTVhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZDgwZmI5YzM4MGM3ZDkxNzEzN2JjMTgxOWExZGIyNWM0Y2UyZDBhMDhlNGM5MTdlZThlM2VhYTg5ZTBlMDI2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI4NjZlZDdmMTBiNjYyZGViZjc5MzY2NDAwMTJjZjJhMDI0NmY3OWY1NTgxMDhmM2NjNDc3YTQ4MzQzNzU5MWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGFhY2E3MDljZDM3ZDEwOGU1YmMwNTZiYmY1NDkzZmE3OGIyMjM5MmE4MjRkOGUyZjFlODIwMzUxY2EzNDFlZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRiMTk1Mzk1NWVkMTY3NTlmMDI2MWIwZTgyZGEzZjNmMmI2ZWFhYzA2MmY1NDhhYmM5ZDc5MWEyYTUyZWM0MjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMmRkNjcwNTY0YzA0MmVlMDNmYTgwMmIwYTdlM2RiMzZhMzgwMWIzN2RhZjNjMDg1MTI4MGIzNWI3MTg5MmNhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjEzYWQ5MDNmOTg5ZTk4OTg4ZWY3YzU1ZjBhYjQ4MzVkOGE4ODEwZTMzZGQ1ZTgxNmFhYjU0MTIxMjUyNDkxODciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTEwMDJhZTM0ZGYyMTMxZjYwM2RlYzJmYzEzMzk2ODk3OTVhMTBiN2FhYTRlZjY3NGViMjhkZWU3ZTFiM2QxYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjExM2IwZTY1OTViNGMwZjk1YzUzOGIxNWY1NWM1MjJmNDE4NDJmNjFhNDhlZmY4ODVkNGM4MDlkYmE5NzA4ODIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1Y2M5MDlhNTJhNTkzMjA2YzAzZDZhYzE1ZmQ5NjgyZDA1NzgxNGM3NGYzYjlmYTllNWIxYTg2MGU1YTM1YWI0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJjNDQwZTQ5MzZkMWNjMzdmODVjYTc4M2EyNDZkNzdiNjg5YzU0MDU4MmVhYjkxZDdlNDE2ZDFiNDdlOThmMWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGU4ZDhjMWE0ZmQ3Y2UyOWQwOWQxZDAzZjE5ZWQzYmE0MDNiODc0YWYwZTFhNmIxOGNmYTFiZWY1MWNiZmQ5OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wbGFucy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE5MDAyZDhlZDcyMWRkZTYyNWVkZGJjNDliZWEzN2VmNDg2MGZhNDdlNDllOTRjYzA5OGVmMWJiNzkxMzVmZGMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI5NjFkMzA1MDMyZTE1N2FiNmUzYmJlMzdiNDFhYzRmMWQ0MzBlYzUyMTM2N2YwYThmMjI4ZWEzZTk3YzAyMzciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE0YjVlZmI4OGI2YmFjYWEwMzExNjQ0NTAyYzg3ZWZlNTA0NDhmZTczNmVjMjJjNDQ3NmQ2MWM2MTYxZDljZGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9rZXktcHJvdmlkZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWI1MjFlNGM3NmY2NWNmNDFkZDg5OTNlZTY0M2MyNGE5NmI3MDMwMzZlMzc3MDA3NjlhMDZjMzMyMDlkNjc0NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE4YzYwMjM1Y2ExMzBlOWQyMDY4YjVhOThkOTcxYTg4NjY2NDA4YjdjZDE2MDM0N2QxYzJhNTBlZTE0ZWI0MWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM2YjZlOTJlYTU4NWMxOGZjYTllNDUyMmU1ZmViNmQ1MjVkNTE0NDhmNjk3YzExNzhhYjVmYjZmNTcwYjJmZWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi95YXJuLmxvY2siLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTNjMjg5ZDM2NDYxYjBhNGIxM2RkN2UyMDQ2MWNiZmUwY2UxMTQ4ZGQ2MzNlZWFmNzM0ZGFjYTIzN2I0Y2E4MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZmVycmVkLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1MjJjNGYxNzM2Nzk1YzAwMzYwNGE1ZWJmZTQyNDVhZjQ1YTI3NzdiZDViYjk2OTUxZGQzMDk2MGQ4YTM3NDVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5Y2YxMzYwNmJmNDU4YjgyZDVhYzliMDdjYmRhYWUzZDE0OTg5Y2QyNTkyNTM0M2NiYzYyNjhjZThlZmI1YTI0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9wcm94eS1mYWN0b3J5LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZmYzdiNmFiY2EwNjNlYzI1YTBiYjYyMTk3ZWQyZTk0MDFlMGQ4ZDJiNDcxZTg1MGI2MWZjMmE3YzY3MGFiZTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9qYWVnZXItY2xpZW50LXR5cGVzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRkNzFiMmMyYjgyODRmMjBlODhjNzIyNzA5NzliNjhlNWY4OTk4ZGY4MzZlODdjNzNjM2RjODI3YWU2ZTcwODAiCiAgICAgIH0KICAgIH0KICBdLAogICJwcmVkaWNhdGUiOiB7CiAgICAiYnVpbGRlciI6IHsKICAgICAgImlkIjogImdpdGh1Yi5jb20vZ2l0cG9kLWlvL2xlZXdheTowLjIuMTctM2ViZmIyYUBzaGEyNTY6Yjk2MjllMmQwNDMyYWRlYTFiZTdkZGRiMzYwM2UzNmQ5ZjY5YjA5ZDg5ODVmNzI1MjU3YWRhYWRlNTFkNGE0MCIKICAgIH0sCiAgICAicmVjaXBlIjogewogICAgICAidHlwZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ2l0cG9kLWlvL2xlZXdheS9idWlsZEB5YXJuOjciLAogICAgICAiZGVmaW5lZEluTWF0ZXJpYWwiOiAwLAogICAgICAiZW50cnlQb2ludCI6ICJjb21wb25lbnRzL2dpdHBvZC1wcm90b2NvbDpsaWIiLAogICAgICAiYXJndW1lbnRzIjogWwogICAgICAgICJsZWV3YXkiLAogICAgICAgICJidWlsZCIsCiAgICAgICAgIi0tZG9ja2VyLWJ1aWxkLW9wdGlvbnMiLAogICAgICAgICJuZXR3b3JrPWhvc3QiLAogICAgICAgICItLXdlcmZ0PXRydWUiLAogICAgICAgICItYyIsCiAgICAgICAgInJlbW90ZSIsCiAgICAgICAgIi0tZG9udC1yZXRhZyIsCiAgICAgICAgIi0tY292ZXJhZ2Utb3V0cHV0LXBhdGg9L3RtcC90bXAuMUU0bTFCaEhhZCIsCiAgICAgICAgIi1EdmVyc2lvbj1wYXZlbC1wdmMtZmVhdC4xIiwKICAgICAgICAiLURyZW1vdmVTb3VyY2VzPWZhbHNlIiwKICAgICAgICAiLURpbWFnZVJlcG9CYXNlPWV1Lmdjci5pby9naXRwb2QtY29yZS1kZXYvYnVpbGQiLAogICAgICAgICItRGxvY2FsQXBwVmVyc2lvbj11bmtub3duIiwKICAgICAgICAiLURTRUdNRU5UX0lPX1RPS0VOPVgzYk5hdFlQdWRJSmNDejZrRmxUbjU0cHJ1bVFBcUdoIiwKICAgICAgICAiLURSRVBMSUNBVEVEX0FQSV9UT0tFTj04YWUwYzI3MzhkNGVlYTczMDhmZjVhOWE4YzU0NjUzN2MxYjVkOGM2ZGE2YTEyN2EyNmIxMjU4ODZiNTg3Nzg0IiwKICAgICAgICAiLURSRVBMSUNBVEVEX0FQUD1naXRwb2QiLAogICAgICAgICItRG5wbVB1Ymxpc2hUcmlnZ2VyPWZhbHNlIiwKICAgICAgICAiLURqYk1hcmtldHBsYWNlUHVibGlzaFRyaWdnZXI9ZmFsc2UiCiAgICAgIF0sCiAgICAgICJlbnZpcm9ubWVudCI6IHsKICAgICAgICAibWFuaWZlc3QiOiB7CiAgICAgICAgICAiYXJjaCI6ICJhbWQ2NCIsCiAgICAgICAgICAiZ28iOiAiZ28gdmVyc2lvbiBnbzEuMTcuNSBsaW51eC9hbWQ2NCIsCiAgICAgICAgICAibm9kZSI6ICJ2MTYuMTQuMCIsCiAgICAgICAgICAib3MiOiAibGludXgiLAogICAgICAgICAgInlhcm4iOiAiMS4yMi4xOCIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAibWV0YWRhdGEiOiB7CiAgICAgICJidWlsZFN0YXJ0ZWRPbiI6ICIyMDIyLTA0LTA1VDE0OjUzOjI1LjEwODQ1MjQ3N1oiLAogICAgICAiYnVpbGRGaW5pc2hlZE9uIjogIjIwMjItMDQtMDVUMTQ6NTQ6MDQuMTc5MDc3NDFaIiwKICAgICAgImNvbXBsZXRlbmVzcyI6IHsKICAgICAgICAiYXJndW1lbnRzIjogdHJ1ZSwKICAgICAgICAiZW52aXJvbm1lbnQiOiBmYWxzZSwKICAgICAgICAibWF0ZXJpYWxzIjogdHJ1ZQogICAgICB9LAogICAgICAicmVwcm9kdWNpYmxlIjogZmFsc2UKICAgIH0sCiAgICAibWF0ZXJpYWxzIjogWwogICAgICB7CiAgICAgICAgInVyaSI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2dpdHBvZC1pby9naXRwb2QuZ2l0IiwKICAgICAgICAiZGlnZXN0IjogewogICAgICAgICAgInNoYTI1NiI6ICIzZWEwOWQ2NjVmZTk1OTg5Y2M1NzNmMzEyNmY4ZThmZTZlYzk3Mzg0IgogICAgICAgIH0KICAgICAgfQogICAgXQogIH0KfQ==","signatures":null}
|
|
2
|
+
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
* See License-AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { oneMonthLater } from './util/timeutil';
|
|
7
|
+
import { v4 as uuidv4 } from "uuid";
|
|
8
|
+
import { User } from "./protocol";
|
|
9
|
+
import { oneMonthLater } from "./util/timeutil";
|
|
11
10
|
|
|
12
11
|
/*
|
|
13
12
|
* Subscription and acocunting data
|
|
@@ -34,7 +33,7 @@ export interface AccountEntry {
|
|
|
34
33
|
/**
|
|
35
34
|
* credit: end of validity
|
|
36
35
|
*/
|
|
37
|
-
expiryDate?: string;
|
|
36
|
+
expiryDate?: string; // exclusive
|
|
38
37
|
|
|
39
38
|
kind: AccountEntryKind;
|
|
40
39
|
|
|
@@ -47,26 +46,26 @@ export interface AccountEntry {
|
|
|
47
46
|
description?: object;
|
|
48
47
|
}
|
|
49
48
|
export namespace AccountEntry {
|
|
50
|
-
export function create<T extends AccountEntry>(entry:
|
|
49
|
+
export function create<T extends AccountEntry>(entry: Omit<T, "uid">): T {
|
|
51
50
|
const result = entry as T;
|
|
52
51
|
result.uid = uuidv4();
|
|
53
52
|
return result;
|
|
54
|
-
}
|
|
53
|
+
}
|
|
55
54
|
}
|
|
56
55
|
|
|
57
|
-
export type DebitAccountEntryKind =
|
|
58
|
-
export type AccountEntryKind =
|
|
56
|
+
export type DebitAccountEntryKind = "session" | "expiry" | "loss";
|
|
57
|
+
export type AccountEntryKind = "credit" | DebitAccountEntryKind | "carry" | "open";
|
|
59
58
|
|
|
60
59
|
export interface Credit extends AccountEntry {
|
|
61
|
-
kind:
|
|
60
|
+
kind: "credit";
|
|
62
61
|
expiryDate: string;
|
|
63
62
|
}
|
|
64
63
|
export type Debit = LossDebit | ExpiryDebit | SessionDebit;
|
|
65
64
|
export interface LossDebit extends AccountEntry {
|
|
66
|
-
kind:
|
|
65
|
+
kind: "loss";
|
|
67
66
|
}
|
|
68
67
|
export interface ExpiryDebit extends AccountEntry {
|
|
69
|
-
kind:
|
|
68
|
+
kind: "expiry";
|
|
70
69
|
creditId: undefined;
|
|
71
70
|
}
|
|
72
71
|
export interface SessionDebit extends AccountEntry {
|
|
@@ -81,9 +80,7 @@ export interface CreditDescription {
|
|
|
81
80
|
}
|
|
82
81
|
export namespace CreditDescription {
|
|
83
82
|
export function is(obj: any): obj is CreditDescription {
|
|
84
|
-
return !!obj
|
|
85
|
-
&& obj.hasOwnProperty('subscriptionId')
|
|
86
|
-
&& obj.hasOwnProperty('planId');
|
|
83
|
+
return !!obj && obj.hasOwnProperty("subscriptionId") && obj.hasOwnProperty("planId");
|
|
87
84
|
}
|
|
88
85
|
}
|
|
89
86
|
export interface SessionDescription {
|
|
@@ -91,16 +88,16 @@ export interface SessionDescription {
|
|
|
91
88
|
contextUrl: string;
|
|
92
89
|
workspaceId: string;
|
|
93
90
|
workspaceInstanceId: string;
|
|
94
|
-
private: boolean;
|
|
95
91
|
}
|
|
96
92
|
export namespace SessionDescription {
|
|
97
93
|
export function is(obj: any): obj is SessionDescription {
|
|
98
|
-
return
|
|
99
|
-
&&
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
return (
|
|
95
|
+
!!obj &&
|
|
96
|
+
obj.hasOwnProperty("contextTitle") &&
|
|
97
|
+
obj.hasOwnProperty("contextUrl") &&
|
|
98
|
+
obj.hasOwnProperty("workspaceId") &&
|
|
99
|
+
obj.hasOwnProperty("workspaceInstanceId")
|
|
100
|
+
);
|
|
104
101
|
}
|
|
105
102
|
}
|
|
106
103
|
|
|
@@ -114,11 +111,11 @@ export namespace SessionDescription {
|
|
|
114
111
|
export interface Subscription {
|
|
115
112
|
uid: string;
|
|
116
113
|
userId: string;
|
|
117
|
-
startDate: string;
|
|
114
|
+
startDate: string; // inclusive
|
|
118
115
|
/** When the subscription will end (must be >= cancellationDate!) */
|
|
119
|
-
endDate?: string;
|
|
116
|
+
endDate?: string; // exclusive
|
|
120
117
|
/** When the subscription was cancelled */
|
|
121
|
-
cancellationDate?: string;
|
|
118
|
+
cancellationDate?: string; // exclusive
|
|
122
119
|
/** Number of granted hours */
|
|
123
120
|
amount: number;
|
|
124
121
|
/** Number of granted hours for the first month: If this is set, use this value for the first month */
|
|
@@ -148,8 +145,7 @@ export interface UserPaidSubscription extends Subscription {
|
|
|
148
145
|
}
|
|
149
146
|
export namespace UserPaidSubscription {
|
|
150
147
|
export function is(data: any): data is UserPaidSubscription {
|
|
151
|
-
return !!data
|
|
152
|
-
&& data.hasOwnProperty('paymentReference');
|
|
148
|
+
return !!data && data.hasOwnProperty("paymentReference");
|
|
153
149
|
}
|
|
154
150
|
}
|
|
155
151
|
|
|
@@ -158,44 +154,44 @@ export interface AssignedTeamSubscription extends Subscription {
|
|
|
158
154
|
}
|
|
159
155
|
export namespace AssignedTeamSubscription {
|
|
160
156
|
export function is(data: any): data is AssignedTeamSubscription {
|
|
161
|
-
return !!data
|
|
162
|
-
&& data.hasOwnProperty('teamSubscriptionSlotId');
|
|
157
|
+
return !!data && data.hasOwnProperty("teamSubscriptionSlotId");
|
|
163
158
|
}
|
|
164
159
|
}
|
|
165
160
|
|
|
166
161
|
export namespace Subscription {
|
|
167
|
-
export function create(newSubscription:
|
|
162
|
+
export function create(newSubscription: Omit<Subscription, "uid">) {
|
|
168
163
|
const subscription = newSubscription as Subscription;
|
|
169
164
|
subscription.uid = uuidv4();
|
|
170
165
|
return subscription;
|
|
171
|
-
}
|
|
166
|
+
}
|
|
172
167
|
export function cancelSubscription(s: Subscription, cancellationDate: string, endDate?: string) {
|
|
173
168
|
s.endDate = endDate || cancellationDate;
|
|
174
169
|
s.cancellationDate = cancellationDate;
|
|
175
|
-
}
|
|
170
|
+
}
|
|
176
171
|
export function isSame(s1: Subscription | undefined, s2: Subscription | undefined): boolean {
|
|
177
|
-
return
|
|
178
|
-
|
|
179
|
-
&&
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
172
|
+
return (
|
|
173
|
+
!!s1 &&
|
|
174
|
+
!!s2 &&
|
|
175
|
+
s1.userId === s2.userId &&
|
|
176
|
+
s1.planId === s2.planId &&
|
|
177
|
+
s1.startDate === s2.startDate &&
|
|
178
|
+
s1.endDate === s2.endDate &&
|
|
179
|
+
s1.amount === s2.amount &&
|
|
180
|
+
s1.cancellationDate === s2.cancellationDate &&
|
|
181
|
+
s1.deleted === s2.deleted &&
|
|
182
|
+
((s1.paymentData === undefined && s2.paymentData === undefined) ||
|
|
183
|
+
(!!s1.paymentData &&
|
|
184
|
+
!!s2.paymentData &&
|
|
185
|
+
s1.paymentData.downgradeDate === s2.paymentData.downgradeDate &&
|
|
186
|
+
s1.paymentData.newPlan === s2.paymentData.newPlan))
|
|
187
|
+
);
|
|
188
|
+
}
|
|
190
189
|
export function isActive(s: Subscription, date: string): boolean {
|
|
191
190
|
return s.startDate <= date && (s.endDate === undefined || date < s.endDate);
|
|
192
|
-
}
|
|
191
|
+
}
|
|
193
192
|
export function isDowngraded(s: Subscription) {
|
|
194
193
|
return s.paymentData && s.paymentData.downgradeDate;
|
|
195
|
-
}
|
|
196
|
-
export function isCancelled(s: Subscription) {
|
|
197
|
-
return !!s.cancellationDate;
|
|
198
|
-
};
|
|
194
|
+
}
|
|
199
195
|
export function calculateCurrentPeriod(startDate: string, now: Date) {
|
|
200
196
|
let nextStartDate = startDate;
|
|
201
197
|
do {
|
|
@@ -203,19 +199,19 @@ export namespace Subscription {
|
|
|
203
199
|
nextStartDate = oneMonthLater(startDate, new Date(startDate).getDate());
|
|
204
200
|
} while (nextStartDate < now.toISOString());
|
|
205
201
|
return { startDate, endDate: nextStartDate };
|
|
206
|
-
}
|
|
202
|
+
}
|
|
207
203
|
}
|
|
208
204
|
|
|
209
205
|
export type MaybeSubscription = Subscription | undefined;
|
|
210
206
|
|
|
211
207
|
export interface Period {
|
|
212
|
-
startDate: string;
|
|
213
|
-
endDate: string;
|
|
208
|
+
startDate: string; // inclusive
|
|
209
|
+
endDate: string; // exclusive
|
|
214
210
|
}
|
|
215
211
|
|
|
216
212
|
export type MaybePeriod = Period | undefined;
|
|
217
213
|
|
|
218
|
-
export type AccountEntryFixedPeriod =
|
|
214
|
+
export type AccountEntryFixedPeriod = Omit<AccountEntry, "uid"> & { expiryDate: string };
|
|
219
215
|
export interface AccountStatement extends Period {
|
|
220
216
|
userId: string;
|
|
221
217
|
/**
|
|
@@ -227,9 +223,9 @@ export interface AccountStatement extends Period {
|
|
|
227
223
|
/** Remaining valid hours (accumulated from credits) */
|
|
228
224
|
remainingHours: RemainingHours;
|
|
229
225
|
}
|
|
230
|
-
export type RemainingHours = number |
|
|
226
|
+
export type RemainingHours = number | "unlimited";
|
|
231
227
|
|
|
232
228
|
export interface CreditAlert {
|
|
233
|
-
userId: string
|
|
234
|
-
remainingUsageHours: number
|
|
229
|
+
userId: string;
|
|
230
|
+
remainingUsageHours: number;
|
|
235
231
|
}
|