@pipeline-builder/pipeline-data 4.1.24 → 4.1.25
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/lib/api/alert-destinations.d.ts +17 -0
- package/lib/api/alert-destinations.js +36 -0
- package/lib/api/reporting/analytics-queries.d.ts +274 -0
- package/lib/api/reporting/analytics-queries.js +598 -0
- package/lib/api/reporting/daily-rollup.d.ts +41 -0
- package/lib/api/reporting/daily-rollup.js +173 -0
- package/lib/api/reporting/deploy-rollup.d.ts +78 -0
- package/lib/api/reporting/deploy-rollup.js +203 -0
- package/lib/api/reporting/dora-scoring.d.ts +14 -0
- package/lib/api/reporting/dora-scoring.js +25 -1
- package/lib/api/reporting/dora.js +30 -6
- package/lib/api/reporting/failure-classifier.d.ts +54 -0
- package/lib/api/reporting/failure-classifier.js +179 -0
- package/lib/api/reporting/ingest.d.ts +2 -2
- package/lib/api/reporting/ingest.js +129 -4
- package/lib/api/reporting/last-deploy.d.ts +31 -0
- package/lib/api/reporting/last-deploy.js +93 -0
- package/lib/api/reporting/needs-attention.d.ts +93 -0
- package/lib/api/reporting/needs-attention.js +152 -0
- package/lib/api/reporting/plugin-exposure.d.ts +129 -0
- package/lib/api/reporting/plugin-exposure.js +312 -0
- package/lib/api/reporting/retention-sweep.js +9 -1
- package/lib/api/reporting/sql-helpers.d.ts +35 -2
- package/lib/api/reporting/sql-helpers.js +39 -1
- package/lib/api/reporting/stakeholder/compose.d.ts +115 -0
- package/lib/api/reporting/stakeholder/compose.js +234 -0
- package/lib/api/reporting/stakeholder/index.d.ts +14 -0
- package/lib/api/reporting/stakeholder/index.js +17 -0
- package/lib/api/reporting/stakeholder/period.d.ts +102 -0
- package/lib/api/reporting/stakeholder/period.js +273 -0
- package/lib/api/reporting/stakeholder/report-html.d.ts +93 -0
- package/lib/api/reporting/stakeholder/report-html.js +208 -0
- package/lib/api/reporting/stakeholder/sections.d.ts +117 -0
- package/lib/api/reporting/stakeholder/sections.js +249 -0
- package/lib/api/reporting/stakeholder/store.d.ts +450 -0
- package/lib/api/reporting/stakeholder/store.js +981 -0
- package/lib/api/reporting/stakeholder/templates.d.ts +21 -0
- package/lib/api/reporting/stakeholder/templates.js +104 -0
- package/lib/api/reporting/types.d.ts +73 -0
- package/lib/api/reporting/types.js +1 -1
- package/lib/api/reporting-service.d.ts +94 -5
- package/lib/api/reporting-service.js +169 -10
- package/lib/api/soft-delete-sweep.d.ts +11 -2
- package/lib/api/soft-delete-sweep.js +17 -6
- package/lib/database/drizzle-schema.d.ts +2263 -385
- package/lib/database/drizzle-schema.js +18 -7
- package/lib/database/index.d.ts +1 -1
- package/lib/database/index.js +4 -2
- package/lib/database/schema/compliance.d.ts +0 -682
- package/lib/database/schema/compliance.js +6 -66
- package/lib/database/schema/ecosystem.d.ts +20 -157
- package/lib/database/schema/ecosystem.js +23 -16
- package/lib/database/schema/pipeline.d.ts +200 -0
- package/lib/database/schema/pipeline.js +100 -1
- package/lib/database/schema/plugin.d.ts +20 -1
- package/lib/database/schema/plugin.js +13 -1
- package/lib/database/schema/reporting-analytics.d.ts +1212 -0
- package/lib/database/schema/reporting-analytics.js +250 -0
- package/lib/database/schema/reporting-stakeholder.d.ts +1405 -0
- package/lib/database/schema/reporting-stakeholder.js +251 -0
- package/lib/index.d.ts +10 -1
- package/lib/index.js +15 -1
- package/lib/testing/exports.json +67 -4
- package/package.json +4 -3
|
@@ -292,74 +292,14 @@ export const complianceNotificationLog = pgTable('compliance_notification_log',
|
|
|
292
292
|
payload: jsonb('payload').$type().notNull(),
|
|
293
293
|
webhookResponseCode: integer('webhook_response_code'),
|
|
294
294
|
webhookError: text('webhook_error'),
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
295
|
+
// `retry_count`, `next_retry_at` and `related_audit_id` were DELETED here. They were
|
|
296
|
+
// a database-backed retry queue that nothing ever drove — no worker read
|
|
297
|
+
// `next_retry_at`, and two indexes existed only to serve it, costing every write for
|
|
298
|
+
// nothing. Retry is the durable Redis spool's job (see the audit spool), and a second
|
|
299
|
+
// retry model that never runs is how a failed notification silently stays failed.
|
|
298
300
|
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
299
301
|
}, (table) => ({
|
|
300
302
|
orgCreatedAtIdx: index('compliance_notification_org_created_idx')
|
|
301
303
|
.on(table.orgId, table.createdAt),
|
|
302
|
-
statusRetryIdx: index('compliance_notification_status_retry_idx')
|
|
303
|
-
.on(table.status, table.nextRetryAt),
|
|
304
|
-
relatedAuditIdx: index('compliance_notification_related_audit_idx')
|
|
305
|
-
.on(table.relatedAuditId),
|
|
306
304
|
}));
|
|
307
|
-
export const complianceRole = pgTable('compliance_roles', {
|
|
308
|
-
id: uuid('id').primaryKey().defaultRandom(),
|
|
309
|
-
orgId: varchar('org_id', { length: 255 }).notNull(),
|
|
310
|
-
userId: text('user_id').notNull(),
|
|
311
|
-
role: varchar('role', { length: 30 }).$type().notNull(),
|
|
312
|
-
grantedBy: text('granted_by').notNull(),
|
|
313
|
-
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
314
|
-
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
|
|
315
|
-
}, (table) => ({
|
|
316
|
-
orgUserUnique: uniqueIndex('compliance_role_org_user_unique').on(table.orgId, table.userId),
|
|
317
|
-
orgRoleIdx: index('compliance_role_org_role_idx').on(table.orgId, table.role),
|
|
318
|
-
}));
|
|
319
|
-
/**
|
|
320
|
-
* Generated compliance reports.
|
|
321
|
-
*
|
|
322
|
-
* @table compliance_reports
|
|
323
|
-
*/
|
|
324
|
-
export const complianceReport = pgTable('compliance_reports', {
|
|
325
|
-
id: uuid('id').primaryKey().defaultRandom(),
|
|
326
|
-
orgId: varchar('org_id', { length: 255 }).notNull(),
|
|
327
|
-
reportType: varchar('report_type', { length: 30 }).notNull(), // summary | detailed | audit-trail | comparison
|
|
328
|
-
target: varchar('target', { length: 20 }).notNull(), // plugin | pipeline | all
|
|
329
|
-
dateFrom: timestamp('date_from', { withTimezone: true }),
|
|
330
|
-
dateTo: timestamp('date_to', { withTimezone: true }),
|
|
331
|
-
compareFrom: timestamp('compare_from', { withTimezone: true }),
|
|
332
|
-
compareTo: timestamp('compare_to', { withTimezone: true }),
|
|
333
|
-
data: jsonb('data').$type().notNull(),
|
|
334
|
-
format: varchar('format', { length: 10 }).default('json').notNull(), // json | csv
|
|
335
|
-
generatedBy: text('generated_by').notNull(),
|
|
336
|
-
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
337
|
-
}, (table) => ({
|
|
338
|
-
orgCreatedAtIdx: index('compliance_report_org_created_idx').on(table.orgId, table.createdAt),
|
|
339
|
-
}));
|
|
340
|
-
/**
|
|
341
|
-
* Cron-based recurring report generation schedules.
|
|
342
|
-
*
|
|
343
|
-
* @table compliance_report_schedules
|
|
344
|
-
*/
|
|
345
|
-
export const complianceReportSchedule = pgTable('compliance_report_schedules', {
|
|
346
|
-
id: uuid('id').primaryKey().defaultRandom(),
|
|
347
|
-
orgId: varchar('org_id', { length: 255 }).notNull(),
|
|
348
|
-
reportType: varchar('report_type', { length: 30 }).notNull(), // summary | detailed
|
|
349
|
-
target: varchar('target', { length: 20 }).notNull(), // plugin | pipeline | all
|
|
350
|
-
format: varchar('format', { length: 10 }).default('json').notNull(),
|
|
351
|
-
cronExpression: varchar('cron_expression', { length: 100 }).notNull(),
|
|
352
|
-
isActive: boolean('is_active').default(true).notNull(),
|
|
353
|
-
lastRunAt: timestamp('last_run_at', { withTimezone: true }),
|
|
354
|
-
nextRunAt: timestamp('next_run_at', { withTimezone: true }),
|
|
355
|
-
deliverTo: jsonb('deliver_to').$type().default([]).notNull(), // userIds to notify
|
|
356
|
-
createdBy: text('created_by').notNull(),
|
|
357
|
-
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
358
|
-
updatedBy: text('updated_by').notNull(),
|
|
359
|
-
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
|
|
360
|
-
}, (table) => ({
|
|
361
|
-
activeNextRunIdx: index('compliance_report_schedule_active_next_idx')
|
|
362
|
-
.on(table.isActive, table.nextRunAt),
|
|
363
|
-
orgIdx: index('compliance_report_schedule_org_idx').on(table.orgId),
|
|
364
|
-
}));
|
|
365
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxpYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9zY2hlbWEvY29tcGxpYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQWlHLE1BQU0sNEJBQTRCLENBQUM7QUFDMUosT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFrQjNIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUU7SUFDN0QsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzFFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN6RCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUNqRixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDekQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUs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Qyw0Q0FBNEMsQ0FBQztTQUNsRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ3RDLE1BQU0sRUFBRSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztDQUNwRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBTWVNURU1fT1JHX0lELCB0eXBlIFJ1bGVDb25kaXRpb25Nb2RlLCB0eXBlIFJ1bGVPcGVyYXRvciwgdHlwZSBSdWxlU2NvcGUsIHR5cGUgUnVsZVNldmVyaXR5LCB0eXBlIFJ1bGVUYXJnZXQgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQgeyBib29sZWFuLCBpbnRlZ2VyLCB2YXJjaGFyLCBwZ1RhYmxlLCB0ZXh0LCB0aW1lc3RhbXAsIHV1aWQsIGpzb25iLCBpbmRleCwgdW5pcXVlSW5kZXggfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29tcGxpYW5jZSBTZXJ2aWNlIFRhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJ1bGVTZXZlcml0eSwgUnVsZVRhcmdldCwgUnVsZU9wZXJhdG9yLCBSdWxlQ29uZGl0aW9uTW9kZSwgUnVsZVNjb3BlIH07XG5cbi8qKlxuICogQSBzaW5nbGUgY29uZGl0aW9uIGluIGEgY3Jvc3MtZmllbGQgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlQ29uZGl0aW9uIHtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIG9wZXJhdG9yPzogUnVsZU9wZXJhdG9yO1xuICB2YWx1ZT86IHVua25vd247XG4gIGRlcGVuZHNPblJ1bGU/OiBzdHJpbmc7IC8vIHJ1bGUgSUQgIG9ubHkgZXZhbHVhdGUgaWYgcmVmZXJlbmNlZCBydWxlIHBhc3NlZFxufVxuXG4vKipcbiAqIENvbXBsaWFuY2UgcG9saWNpZXMgZ3JvdXAgcnVsZXMgaW50byBuYW1lZCBzZXRzIHRoYXQgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgdG9nZXRoZXIuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcG9saWNpZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VQb2xpY3kgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3BvbGljaWVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5kZWZhdWx0KFNZU1RFTV9PUkdfSUQpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5JykuZGVmYXVsdCgnc3lzdGVtJykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLmRlZmF1bHQoJ3N5c3RlbScpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZGVzY3JpcHRpb246IHRleHQoJ2Rlc2NyaXB0aW9uJyksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkuZGVmYXVsdCgnMS4wLjAnKS5ub3ROdWxsKCksXG4gIGlzVGVtcGxhdGU6IGJvb2xlYW4oJ2lzX3RlbXBsYXRlJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuXG4gIC8vIE5vIHNoYXJpbmcgcnVuZzogY29tcGxpYW5jZSB2aXNpYmlsaXR5IGlzIG9yZyArIHRoZSBzeXN0ZW0tb3JnIGNhcnZlLW91dCxcbiAgLy8gYXBwbGllZCBpbiBgYnVpbGRDb21wbGlhbmNlUG9saWN5Q29uZGl0aW9uc2AgLyBgYnVpbGRDb21wbGlhbmNlUnVsZUNvbmRpdGlvbnNgLlxuICBpc0RlZmF1bHQ6IGJvb2xlYW4oJ2lzX2RlZmF1bHQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG4gIC8vIFNvZnQtZGVsZXRlIHB1cmdlIGRlYWRsaW5lOiB0aGUgcmV0ZW50aW9uIHN3ZWVwIGhhcmQtZGVsZXRlcyB0b21ic3RvbmVkXG4gIC8vIHJvd3Mgb25jZSBgcHVyZ2VfYWZ0ZXJgIGhhcyBwYXNzZWQgKHNldCBvbiBkZWxldGUgYWxvbmdzaWRlIGRlbGV0ZWRfYXQpLlxuICBwdXJnZUFmdGVyOiB0aW1lc3RhbXAoJ3B1cmdlX2FmdGVyJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG59LCAodGFibGUpID0+ICh7XG4gIHB1cmdlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9wb2xpY3lfcHVyZ2VfaWR4Jykub24odGFibGUucHVyZ2VBZnRlcikud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTk9UIE5VTExgKSxcbiAgb3JnQWN0aXZlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9wb2xpY3lfb3JnX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuaXNBY3RpdmUpLFxuICB0ZW1wbGF0ZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcG9saWN5X3RlbXBsYXRlX2lkeCcpLm9uKHRhYmxlLmlzVGVtcGxhdGUpLFxuICBuYW1lT3JnVmVyc2lvblVuaXF1ZTogdW5pcXVlSW5kZXgoJ2NvbXBsaWFuY2VfcG9saWN5X25hbWVfb3JnX3ZlcnNpb25fdW5pcXVlJylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLm5hbWUsIHRhYmxlLnZlcnNpb24pLFxufSkpO1xuXG4vKipcbiAqIENvbXBsaWFuY2UgcnVsZXMgZGVmaW5lIGluZGl2aWR1YWwgY2hlY2tzIGFnYWluc3QgcGx1Z2luL3BpcGVsaW5lIGF0dHJpYnV0ZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcnVsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VSdWxlID0gcGdUYWJsZSgnY29tcGxpYW5jZV9ydWxlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkuZGVmYXVsdChTWVNURU1fT1JHX0lEKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLmRlZmF1bHQoJ3N5c3RlbScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5kZWZhdWx0KCdzeXN0ZW0nKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcblxuICAvLyBSdWxlIGlkZW50aXR5XG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZGVzY3JpcHRpb246IHRleHQoJ2Rlc2NyaXB0aW9uJyksXG4gIHBvbGljeUlkOiB1dWlkKCdwb2xpY3lfaWQnKS5yZWZlcmVuY2VzKCgpID0+IGNvbXBsaWFuY2VQb2xpY3kuaWQsIHsgb25EZWxldGU6ICdzZXQgbnVsbCcgfSksXG4gIHByaW9yaXR5OiBpbnRlZ2VyKCdwcmlvcml0eScpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICB0YXJnZXQ6IHZhcmNoYXIoJ3RhcmdldCcsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSdWxlVGFyZ2V0PigpLm5vdE51bGwoKSxcbiAgc2V2ZXJpdHk6IHZhcmNoYXIoJ3NldmVyaXR5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPFJ1bGVTZXZlcml0eT4oKS5kZWZhdWx0KCdlcnJvcicpLm5vdE51bGwoKSxcblxuICAvLyBDYXRlZ29yaXphdGlvblxuICB0YWdzOiBqc29uYigndGFncycpLiR0eXBlPHN0cmluZ1tdPigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcblxuICAvLyBTY2hlZHVsaW5nXG4gIGVmZmVjdGl2ZUZyb206IHRpbWVzdGFtcCgnZWZmZWN0aXZlX2Zyb20nLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZWZmZWN0aXZlVW50aWw6IHRpbWVzdGFtcCgnZWZmZWN0aXZlX3VudGlsJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG5cbiAgLy8gU2NvcGVcbiAgc2NvcGU6IHZhcmNoYXIoJ3Njb3BlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPFJ1bGVTY29wZT4oKS5kZWZhdWx0KCdvcmcnKS5ub3ROdWxsKCksXG5cbiAgLy8gTm90aWZpY2F0aW9uIG92ZXJyaWRlXG4gIHN1cHByZXNzTm90aWZpY2F0aW9uOiBib29sZWFuKCdzdXBwcmVzc19ub3RpZmljYXRpb24nKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG5cbiAgLy8gT3JnIOKGkiB0ZWFtIGhpZXJhcmNoeTogd2hlbiB0cnVlLCB0aGlzIChwYXJlbnQtb3JnKSBydWxlIGlzIGFsc28gZW5mb3JjZWQgb25cbiAgLy8gZGVzY2VuZGFudCB0ZWFtIG9yZ3MgZHVyaW5nIHRoZWlyIGNvbXBsaWFuY2UgZXZhbHVhdGlvbi5cbiAgcHJvcGFnYXRlVG9DaGlsZHJlbjogYm9vbGVhbigncHJvcGFnYXRlX3RvX2NoaWxkcmVuJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuXG4gIC8vIFNpbmdsZS1maWVsZCBjb25kaXRpb25cbiAgZmllbGQ6IHZhcmNoYXIoJ2ZpZWxkJywgeyBsZW5ndGg6IDEwMCB9KSxcbiAgb3BlcmF0b3I6IHZhcmNoYXIoJ29wZXJhdG9yJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFJ1bGVPcGVyYXRvcj4oKSxcbiAgdmFsdWU6IGpzb25iKCd2YWx1ZScpLFxuXG4gIC8vIENyb3NzLWZpZWxkIGNvbmRpdGlvbnMgKG92ZXJyaWRlcyBzaW5nbGUtZmllbGQgd2hlbiBwcmVzZW50KVxuICBjb25kaXRpb25zOiBqc29uYignY29uZGl0aW9ucycpLiR0eXBlPFJ1bGVDb25kaXRpb25bXT4oKSxcbiAgY29uZGl0aW9uTW9kZTogdmFyY2hhcignY29uZGl0aW9uX21vZGUnLCB7IGxlbmd0aDogNSB9KS4kdHlwZTxSdWxlQ29uZGl0aW9uTW9kZT4oKS5kZWZhdWx0KCdhbGwnKSxcblxuICAvLyBBY2Nlc3MgYW5kIHZpc2liaWxpdHlcbiAgLy8gTm8gc2hhcmluZyBydW5nOiBjb21wbGlhbmNlIHZpc2liaWxpdHkgaXMgb3JnICsgdGhlIHN5c3RlbS1vcmcgY2FydmUtb3V0LFxuICAvLyBhcHBsaWVkIGluIGBidWlsZENvbXBsaWFuY2VQb2xpY3lDb25kaXRpb25zYCAvIGBidWlsZENvbXBsaWFuY2VSdWxlQ29uZGl0aW9uc2AuXG4gIGlzRGVmYXVsdDogYm9vbGVhbignaXNfZGVmYXVsdCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbiAgLy8gU29mdC1kZWxldGUgcHVyZ2UgZGVhZGxpbmU6IHRoZSByZXRlbnRpb24gc3dlZXAgaGFyZC1kZWxldGVzIHRvbWJzdG9uZWRcbiAgLy8gcm93cyBvbmNlIGBwdXJnZV9hZnRlcmAgaGFzIHBhc3NlZCAoc2V0IG9uIGRlbGV0ZSBhbG9uZ3NpZGUgZGVsZXRlZF9hdCkuXG4gIHB1cmdlQWZ0ZXI6IHRpbWVzdGFtcCgncHVyZ2VfYWZ0ZXInLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcHVyZ2VJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfcHVyZ2VfaWR4Jykub24odGFibGUucHVyZ2VBZnRlcikud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTk9UIE5VTExgKSxcbiAgb3JnVGFyZ2V0QWN0aXZlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX29yZ190YXJnZXRfYWN0aXZlX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS50YXJnZXQsIHRhYmxlLmlzQWN0aXZlKSxcbiAgb3JnUG9saWN5SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX29yZ19wb2xpY3lfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnBvbGljeUlkKSxcbiAgcHJpb3JpdHlJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfcHJpb3JpdHlfaWR4Jykub24odGFibGUucHJpb3JpdHkpLFxuICBzY29wZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9zY29wZV9pZHgnKS5vbih0YWJsZS5zY29wZSksXG4gIGVmZmVjdGl2ZUZyb21JZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfZWZmZWN0aXZlX2Zyb21faWR4Jykub24odGFibGUuZWZmZWN0aXZlRnJvbSksXG4gIG5hbWVPcmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdjb21wbGlhbmNlX3J1bGVfbmFtZV9vcmdfdW5pcXVlJykub24odGFibGUub3JnSWQsIHRhYmxlLm5hbWUpLFxuICAvLyBQYXJ0aWFsIEdJTiBpbmRleCBiYWNraW5nIHRoZSBjdXJhdGVkLXNldCBsb29rdXBcbiAgLy8gYGZpbmRQdWJsaXNoZWRSdWxlSWRzQnlTZXRUYWdgIChzdWJzY3JpcHRpb24tc2VydmljZSk6IGEgY29udGFpbm1lbnQgcXVlcnlcbiAgLy8gYHRhZ3MgQD4gJ1tcInNldDo8eD5cIl0nOjpqc29uYmAgcmVzdHJpY3RlZCB0byBwdWJsaXNoZWQgcm93cy4gYGpzb25iX3BhdGhfb3BzYFxuICAvLyBpcyB0aGUgc21hbGxlci9mYXN0ZXIgb3BjbGFzcyDigJQgaXQgb25seSBzdXBwb3J0cyBgQD5gIChleGFjdGx5IHRoaXMgcXVlcnkpLFxuICAvLyBub3Qga2V5LWV4aXN0ZW5jZSwgd2hpY2ggd2UgbmV2ZXIgcnVuIGFnYWluc3QgYHRhZ3NgLiBTY29wZWQgdG9cbiAgLy8gYHNjb3BlID0gJ3B1Ymxpc2hlZCdgIHNvIG9ubHkgdGhlIGN1cmF0ZWQgY2F0YWxvZyAoYSBoYW5kZnVsIG9mIHJvd3MpIGlzXG4gIC8vIGluZGV4ZWQsIG5vdCBldmVyeSBvcmcncyBwcml2YXRlIHJ1bGUgdGFncy5cbiAgLy8gQ3JlYXRlZCBieSBwb3N0Z3Jlcy1pbml0LnNxbC5cbiAgcHVibGlzaGVkVGFnc0dpbklkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9wdWJsaXNoZWRfdGFnc19naW5faWR4JylcbiAgICAudXNpbmcoJ2dpbicsIHRhYmxlLnRhZ3Mub3AoJ2pzb25iX3BhdGhfb3BzJykpXG4gICAgLndoZXJlKHNxbGBzY29wZSA9ICdwdWJsaXNoZWQnYCksXG59KSk7XG5cbi8qKlxuICogVHJhY2tzIGV2ZXJ5IGNoYW5nZSB0byBjb21wbGlhbmNlIHJ1bGVzIGZvciB2ZXJzaW9uaW5nIGFuZCByb2xsYmFjay5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9ydWxlX2hpc3RvcnlcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VSdWxlSGlzdG9yeSA9IHBnVGFibGUoJ2NvbXBsaWFuY2VfcnVsZV9oaXN0b3J5Jywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBydWxlSWQ6IHV1aWQoJ3J1bGVfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBjb21wbGlhbmNlUnVsZS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGNoYW5nZVR5cGU6IHZhcmNoYXIoJ2NoYW5nZV90eXBlJywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gY3JlYXRlZCB8IHVwZGF0ZWQgfCBkZWxldGVkIHwgcmVzdG9yZWRcbiAgcHJldmlvdXNTdGF0ZToganNvbmIoJ3ByZXZpb3VzX3N0YXRlJyksIC8vIGZ1bGwgcnVsZSBzbmFwc2hvdCBiZWZvcmUgY2hhbmdlXG4gIGNoYW5nZWRCeTogdGV4dCgnY2hhbmdlZF9ieScpLm5vdE51bGwoKSxcbiAgY2hhbmdlZEF0OiB0aW1lc3RhbXAoJ2NoYW5nZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBydWxlQ2hhbmdlZEF0SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX2hpc3RvcnlfcnVsZV9jaGFuZ2VkX2lkeCcpXG4gICAgLm9uKHRhYmxlLnJ1bGVJZCwgdGFibGUuY2hhbmdlZEF0KSxcbiAgb3JnQ2hhbmdlZEF0SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX2hpc3Rvcnlfb3JnX2NoYW5nZWRfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLmNoYW5nZWRBdCksXG4gIHJ1bGVJZElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9oaXN0b3J5X3J1bGVfaWRfaWR4JylcbiAgICAub24odGFibGUucnVsZUlkKSxcbn0pKTtcblxuLyoqXG4gKiBDb21wbGlhbmNlIGF1ZGl0IGxvZyAgc3RvcmVzIGV2ZXJ5IGNvbXBsaWFuY2UgY2hlY2sgcmVzdWx0LlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX2F1ZGl0X2xvZ1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZUF1ZGl0TG9nID0gcGdUYWJsZSgnY29tcGxpYW5jZV9hdWRpdF9sb2cnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgdXNlcklkOiB0ZXh0KCd1c2VyX2lkJykubm90TnVsbCgpLFxuICB0YXJnZXQ6IHZhcmNoYXIoJ3RhcmdldCcsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSdWxlVGFyZ2V0PigpLm5vdE51bGwoKSxcbiAgYWN0aW9uOiB2YXJjaGFyKCdhY3Rpb24nLCB7IGxlbmd0aDogMjAgfSkubm90TnVsbCgpLCAvLyB1cGxvYWQgfCBkZXBsb3kgfCBjcmVhdGUgfCB1cGRhdGUgfCBzY2FuXG4gIGVudGl0eUlkOiB2YXJjaGFyKCdlbnRpdHlfaWQnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBlbnRpdHlOYW1lOiB2YXJjaGFyKCdlbnRpdHlfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIHJlc3VsdDogdmFyY2hhcigncmVzdWx0JywgeyBsZW5ndGg6IDEwIH0pLm5vdE51bGwoKSwgLy8gcGFzcyB8IHdhcm4gfCBibG9ja1xuICB2aW9sYXRpb25zOiBqc29uYigndmlvbGF0aW9ucycpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+KCkuZGVmYXVsdChbXSksXG4gIHJ1bGVDb3VudDogaW50ZWdlcigncnVsZV9jb3VudCcpLm5vdE51bGwoKSxcbiAgc2NhbklkOiB1dWlkKCdzY2FuX2lkJyksIC8vIGdyb3VwcyBlbnRyaWVzIGZyb20gdGhlIHNhbWUgYnVsayBzY2FuXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnQ3JlYXRlZEF0SWR4OiBpbmRleCgnY29tcGxpYW5jZV9hdWRpdF9vcmdfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gREVTQyB2YXJpYW50IGZvciB0aGUgZG9taW5hbnQgXCJsYXRlc3QgYXVkaXQgZXZlbnRzIHBlciBvcmdcIiBxdWVyeVxuICAvLyBwYXR0ZXJuIChhdWRpdCBsb2cgVUlzIHNvcnQgbmV3ZXN0LWZpcnN0KS4gUG9zdGdyZXMgY2FuIHVzZSB0aGUgYXNjXG4gIC8vIGluZGV4IGZvciBkZXNjIHNjYW5zLCBidXQgYSBtYXRjaGluZyBERVNDIGluZGV4IGxldHMgaW5kZXgtb25seSBzY2Fuc1xuICAvLyBzYXRpc2Z5IGBPUkRFUiBCWSBjcmVhdGVkX2F0IERFU0MgTElNSVQgbmAgd2l0aG91dCBhIHJldmVyc2Ugc3RlcC5cbiAgLy8gQ3JlYXRlZCBieSBwb3N0Z3Jlcy1pbml0LnNxbC5cbiAgb3JnQ3JlYXRlZEF0RGVzY0lkeDogaW5kZXgoJ2NvbXBsaWFuY2VfYXVkaXRfb3JnX2NyZWF0ZWRfZGVzY19pZHgnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgc3FsYCR7dGFibGUuY3JlYXRlZEF0fSBERVNDYCksXG4gIG9yZ1RhcmdldFJlc3VsdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfYXVkaXRfb3JnX3RhcmdldF9yZXN1bHRfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLnRhcmdldCwgdGFibGUucmVzdWx0KSxcbiAgc2NhbklkSWR4OiBpbmRleCgnY29tcGxpYW5jZV9hdWRpdF9zY2FuX2lkX2lkeCcpLm9uKHRhYmxlLnNjYW5JZCksXG59KSk7XG5cbi8qKlxuICogUGVyLWVudGl0eSBleGVtcHRpb25zIGZyb20gc3BlY2lmaWMgY29tcGxpYW5jZSBydWxlcy5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9leGVtcHRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlRXhlbXB0aW9uID0gcGdUYWJsZSgnY29tcGxpYW5jZV9leGVtcHRpb25zJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHJ1bGVJZDogdXVpZCgncnVsZV9pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IGNvbXBsaWFuY2VSdWxlLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIGVudGl0eVR5cGU6IHZhcmNoYXIoJ2VudGl0eV90eXBlJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFJ1bGVUYXJnZXQ+KCkubm90TnVsbCgpLFxuICBlbnRpdHlJZDogdXVpZCgnZW50aXR5X2lkJykubm90TnVsbCgpLFxuICBlbnRpdHlOYW1lOiB2YXJjaGFyKCdlbnRpdHlfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIHJlYXNvbjogdGV4dCgncmVhc29uJykubm90TnVsbCgpLFxuICBhcHByb3ZlZEJ5OiB0ZXh0KCdhcHByb3ZlZF9ieScpLFxuICByZWplY3Rpb25SZWFzb246IHRleHQoJ3JlamVjdGlvbl9yZWFzb24nKSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMjAgfSkuZGVmYXVsdCgncGVuZGluZycpLm5vdE51bGwoKSwgLy8gcGVuZGluZyB8IGFwcHJvdmVkIHwgcmVqZWN0ZWQgfCBleHBpcmVkXG4gIGV4cGlyZXNBdDogdGltZXN0YW1wKCdleHBpcmVzX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnUnVsZUVudGl0eVVuaXF1ZTogdW5pcXVlSW5kZXgoJ2NvbXBsaWFuY2VfZXhlbXB0aW9uX29yZ19ydWxlX2VudGl0eV91bmlxdWUnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgdGFibGUucnVsZUlkLCB0YWJsZS5lbnRpdHlJZCksXG4gIG9yZ1N0YXR1c0lkeDogaW5kZXgoJ2NvbXBsaWFuY2VfZXhlbXB0aW9uX29yZ19zdGF0dXNfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnN0YXR1cyksXG4gIGV4cGlyZXNBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfZXhlbXB0aW9uX2V4cGlyZXNfYXRfaWR4Jykub24odGFibGUuZXhwaXJlc0F0KSxcbiAgZW50aXR5SWRJZHg6IGluZGV4KCdjb21wbGlhbmNlX2V4ZW1wdGlvbl9lbnRpdHlfaWRfaWR4Jykub24odGFibGUuZW50aXR5SWQpLFxufSkpO1xuXG4vKipcbiAqIFRyYWNrcyB3aGljaCBvcmdzIGhhdmUgb3B0ZWQgaW50byBzeXN0ZW0tb3JnIHB1Ymxpc2hlZCBjb21wbGlhbmNlIHJ1bGVzLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX3J1bGVfc3Vic2NyaXB0aW9uc1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZVJ1bGVTdWJzY3JpcHRpb24gPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3J1bGVfc3Vic2NyaXB0aW9ucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBydWxlSWQ6IHV1aWQoJ3J1bGVfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBjb21wbGlhbmNlUnVsZS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBzdWJzY3JpYmVkQnk6IHRleHQoJ3N1YnNjcmliZWRfYnknKS5ub3ROdWxsKCksXG4gIHN1YnNjcmliZWRBdDogdGltZXN0YW1wKCdzdWJzY3JpYmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBwaW5uZWRWZXJzaW9uOiBqc29uYigncGlubmVkX3ZlcnNpb24nKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKSxcbiAgdW5zdWJzY3JpYmVkQXQ6IHRpbWVzdGFtcCgndW5zdWJzY3JpYmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHVuc3Vic2NyaWJlZEJ5OiB0ZXh0KCd1bnN1YnNjcmliZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnUnVsZVVuaXF1ZTogdW5pcXVlSW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9zdWJfb3JnX3J1bGVfdW5pcXVlJykub24odGFibGUub3JnSWQsIHRhYmxlLnJ1bGVJZCksXG4gIG9yZ0FjdGl2ZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9zdWJfb3JnX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuaXNBY3RpdmUpLFxuICBydWxlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX3N1Yl9ydWxlX2lkeCcpLm9uKHRhYmxlLnJ1bGVJZCksXG59KSk7XG5cbi8qKlxuICogQnVsayBjb21wbGlhbmNlIHNjYW5zICB0cmFja3Mgc2NoZWR1bGVkIGFuZCBvbi1kZW1hbmQgc2NhbnMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2Vfc2NhbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VTY2FuID0gcGdUYWJsZSgnY29tcGxpYW5jZV9zY2FucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB0YXJnZXQ6IHZhcmNoYXIoJ3RhcmdldCcsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIHBsdWdpbiB8IHBpcGVsaW5lIHwgYWxsXG4gIGZpbHRlcjoganNvbmIoJ2ZpbHRlcicpLCAvLyBvcHRpb25hbCBlbnRpdHkgZmlsdGVyIGZvciBwYXJ0aWFsIHNjYW5zXG4gIHN0YXR1czogdmFyY2hhcignc3RhdHVzJywgeyBsZW5ndGg6IDIwIH0pLmRlZmF1bHQoJ3BlbmRpbmcnKS5ub3ROdWxsKCksIC8vIHBlbmRpbmcgfCBydW5uaW5nIHwgY29tcGxldGVkIHwgZmFpbGVkIHwgY2FuY2VsbGVkXG4gIHRyaWdnZXJlZEJ5OiB2YXJjaGFyKCd0cmlnZ2VyZWRfYnknLCB7IGxlbmd0aDogMjAgfSkubm90TnVsbCgpLCAvLyBtYW51YWwgfCBzY2hlZHVsZWQgfCBydWxlLWNoYW5nZSB8IHJ1bGUtZHJ5LXJ1blxuICB1c2VySWQ6IHRleHQoJ3VzZXJfaWQnKS5ub3ROdWxsKCksXG4gIHRvdGFsRW50aXRpZXM6IGludGVnZXIoJ3RvdGFsX2VudGl0aWVzJykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIHByb2Nlc3NlZEVudGl0aWVzOiBpbnRlZ2VyKCdwcm9jZXNzZWRfZW50aXRpZXMnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgcGFzc0NvdW50OiBpbnRlZ2VyKCdwYXNzX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIHdhcm5Db3VudDogaW50ZWdlcignd2Fybl9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBibG9ja0NvdW50OiBpbnRlZ2VyKCdibG9ja19jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICAvLyBUcnVlIHdoZW4gdGhlIHNjYW4gc3RvcHBlZCBlYXJseSBhdCBhIGNvbmZpZ3VyZWQgcGVyLXNjYW4gY2FwIChzbyB0aGVcbiAgLy8gY291bnRzIGFib3ZlIHJlcHJlc2VudCBhIHN1YnNldCwgbm90IHRoZSBmdWxsIGVudGl0eSB1bml2ZXJzZSkuIFN1cmZhY2VkXG4gIC8vIGluIHRoZSBzY2FuLXN0YXR1cyBVSSBzbyB1c2VycyBrbm93IHdoZXRoZXIgdG8gd2lkZW4gdGhlIGZpbHRlci5cbiAgLy8gQ3JlYXRlZCBieSBwb3N0Z3Jlcy1pbml0LnNxbC5cbiAgdHJ1bmNhdGVkOiBib29sZWFuKCd0cnVuY2F0ZWQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIHN0YXJ0ZWRBdDogdGltZXN0YW1wKCdzdGFydGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNvbXBsZXRlZEF0OiB0aW1lc3RhbXAoJ2NvbXBsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjYW5jZWxsZWRBdDogdGltZXN0YW1wKCdjYW5jZWxsZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY2FuY2VsbGVkQnk6IHRleHQoJ2NhbmNlbGxlZF9ieScpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ0NyZWF0ZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2Vfc2Nhbl9vcmdfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgb3JnU3RhdHVzSWR4OiBpbmRleCgnY29tcGxpYW5jZV9zY2FuX29yZ19zdGF0dXNfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnN0YXR1cyksXG59KSk7XG5cbi8qKlxuICogQ3Jvbi1iYXNlZCByZWN1cnJpbmcgc2NhbiBzY2hlZHVsZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2Vfc2Nhbl9zY2hlZHVsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VTY2FuU2NoZWR1bGUgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3NjYW5fc2NoZWR1bGVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHRhcmdldDogdmFyY2hhcigndGFyZ2V0JywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gcGx1Z2luIHwgcGlwZWxpbmUgfCBhbGxcbiAgY3JvbkV4cHJlc3Npb246IHZhcmNoYXIoJ2Nyb25fZXhwcmVzc2lvbicsIHsgbGVuZ3RoOiAxMDAgfSkubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIGxhc3RSdW5BdDogdGltZXN0YW1wKCdsYXN0X3J1bl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBuZXh0UnVuQXQ6IHRpbWVzdGFtcCgnbmV4dF9ydW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBhY3RpdmVOZXh0UnVuSWR4OiBpbmRleCgnY29tcGxpYW5jZV9zY2FuX3NjaGVkdWxlX2FjdGl2ZV9uZXh0X2lkeCcpXG4gICAgLm9uKHRhYmxlLmlzQWN0aXZlLCB0YWJsZS5uZXh0UnVuQXQpLFxuICBvcmdJZHg6IGluZGV4KCdjb21wbGlhbmNlX3NjYW5fc2NoZWR1bGVfb3JnX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbn0pKTtcblxuLyoqXG4gKiBQZXItb3JnIG5vdGlmaWNhdGlvbiBzZXR0aW5ncyBmb3IgY29tcGxpYW5jZSBldmVudHMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2Vfbm90aWZpY2F0aW9uX3ByZWZlcmVuY2VzXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlTm90aWZpY2F0aW9uUHJlZmVyZW5jZSA9IHBnVGFibGUoJ2NvbXBsaWFuY2Vfbm90aWZpY2F0aW9uX3ByZWZlcmVuY2VzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCkudW5pcXVlKCksXG4gIG5vdGlmeU9uQmxvY2s6IGJvb2xlYW4oJ25vdGlmeV9vbl9ibG9jaycpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBub3RpZnlPbldhcm5pbmc6IGJvb2xlYW4oJ25vdGlmeV9vbl93YXJuaW5nJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICAvLyBPcHQtaW4gZW1haWwgZGVsaXZlcnkgKHRvIGB0YXJnZXRVc2Vyc2AsIG9yIGFsbCBvcmcgYWRtaW5zIHdoZW4gbnVsbCkuXG4gIGVtYWlsRW5hYmxlZDogYm9vbGVhbignZW1haWxfZW5hYmxlZCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgZGlnZXN0TW9kZTogdmFyY2hhcignZGlnZXN0X21vZGUnLCB7IGxlbmd0aDogMjAgfSkuZGVmYXVsdCgnaW1tZWRpYXRlJykubm90TnVsbCgpLCAvLyBpbW1lZGlhdGUgfCBkYWlseSB8IHdlZWtseVxuICBkaWdlc3RTY2hlZHVsZTogdmFyY2hhcignZGlnZXN0X3NjaGVkdWxlJywgeyBsZW5ndGg6IDEwMCB9KSxcbiAgbGFzdERpZ2VzdEF0OiB0aW1lc3RhbXAoJ2xhc3RfZGlnZXN0X2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHRhcmdldFVzZXJzOiBqc29uYigndGFyZ2V0X3VzZXJzJykuJHR5cGU8c3RyaW5nW10+KCksIC8vIG51bGwgPSBhbGwgb3JnIGFkbWluc1xuICB3ZWJob29rVXJsOiB2YXJjaGFyKCd3ZWJob29rX3VybCcsIHsgbGVuZ3RoOiA1MDAgfSksXG4gIHdlYmhvb2tTZWNyZXQ6IHZhcmNoYXIoJ3dlYmhvb2tfc2VjcmV0JywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59KTtcblxuLyoqXG4gKiBMb2cgb2YgYWxsIGNvbXBsaWFuY2Ugbm90aWZpY2F0aW9ucyBzZW50LlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9sb2dcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VOb3RpZmljYXRpb25Mb2cgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9sb2cnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgY2hhbm5lbDogdmFyY2hhcignY2hhbm5lbCcsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIGluLWFwcCB8IHdlYmhvb2sgfCBkaWdlc3RcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMjAgfSkubm90TnVsbCgpLCAvLyBzZW50IHwgZmFpbGVkIHwgcGVuZGluZ1xuICBwYXlsb2FkOiBqc29uYigncGF5bG9hZCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLm5vdE51bGwoKSxcbiAgd2ViaG9va1Jlc3BvbnNlQ29kZTogaW50ZWdlcignd2ViaG9va19yZXNwb25zZV9jb2RlJyksXG4gIHdlYmhvb2tFcnJvcjogdGV4dCgnd2ViaG9va19lcnJvcicpLFxuICByZXRyeUNvdW50OiBpbnRlZ2VyKCdyZXRyeV9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBuZXh0UmV0cnlBdDogdGltZXN0YW1wKCduZXh0X3JldHJ5X2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHJlbGF0ZWRBdWRpdElkOiB1dWlkKCdyZWxhdGVkX2F1ZGl0X2lkJyksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnQ3JlYXRlZEF0SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ub3RpZmljYXRpb25fb3JnX2NyZWF0ZWRfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIHN0YXR1c1JldHJ5SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ub3RpZmljYXRpb25fc3RhdHVzX3JldHJ5X2lkeCcpXG4gICAgLm9uKHRhYmxlLnN0YXR1cywgdGFibGUubmV4dFJldHJ5QXQpLFxuICByZWxhdGVkQXVkaXRJZHg6IGluZGV4KCdjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9yZWxhdGVkX2F1ZGl0X2lkeCcpXG4gICAgLm9uKHRhYmxlLnJlbGF0ZWRBdWRpdElkKSxcbn0pKTtcblxuLyoqXG4gKiBDb21wbGlhbmNlLXNwZWNpZmljIFJCQUMgcm9sZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2Vfcm9sZXNcbiAqL1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJvbGVUeXBlID0gJ2NvbXBsaWFuY2Utdmlld2VyJyB8ICdjb21wbGlhbmNlLWVkaXRvcicgfCAnY29tcGxpYW5jZS1hZG1pbic7XG5cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUm9sZSA9IHBnVGFibGUoJ2NvbXBsaWFuY2Vfcm9sZXMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgdXNlcklkOiB0ZXh0KCd1c2VyX2lkJykubm90TnVsbCgpLFxuICByb2xlOiB2YXJjaGFyKCdyb2xlJywgeyBsZW5ndGg6IDMwIH0pLiR0eXBlPENvbXBsaWFuY2VSb2xlVHlwZT4oKS5ub3ROdWxsKCksXG4gIGdyYW50ZWRCeTogdGV4dCgnZ3JhbnRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ1VzZXJVbmlxdWU6IHVuaXF1ZUluZGV4KCdjb21wbGlhbmNlX3JvbGVfb3JnX3VzZXJfdW5pcXVlJykub24odGFibGUub3JnSWQsIHRhYmxlLnVzZXJJZCksXG4gIG9yZ1JvbGVJZHg6IGluZGV4KCdjb21wbGlhbmNlX3JvbGVfb3JnX3JvbGVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnJvbGUpLFxufSkpO1xuXG4vKipcbiAqIEdlbmVyYXRlZCBjb21wbGlhbmNlIHJlcG9ydHMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcmVwb3J0c1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZVJlcG9ydCA9IHBnVGFibGUoJ2NvbXBsaWFuY2VfcmVwb3J0cycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICByZXBvcnRUeXBlOiB2YXJjaGFyKCdyZXBvcnRfdHlwZScsIHsgbGVuZ3RoOiAzMCB9KS5ub3ROdWxsKCksIC8vIHN1bW1hcnkgfCBkZXRhaWxlZCB8IGF1ZGl0LXRyYWlsIHwgY29tcGFyaXNvblxuICB0YXJnZXQ6IHZhcmNoYXIoJ3RhcmdldCcsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIHBsdWdpbiB8IHBpcGVsaW5lIHwgYWxsXG4gIGRhdGVGcm9tOiB0aW1lc3RhbXAoJ2RhdGVfZnJvbScsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkYXRlVG86IHRpbWVzdGFtcCgnZGF0ZV90bycsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjb21wYXJlRnJvbTogdGltZXN0YW1wKCdjb21wYXJlX2Zyb20nLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY29tcGFyZVRvOiB0aW1lc3RhbXAoJ2NvbXBhcmVfdG8nLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGF0YToganNvbmIoJ2RhdGEnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKS5ub3ROdWxsKCksXG4gIGZvcm1hdDogdmFyY2hhcignZm9ybWF0JywgeyBsZW5ndGg6IDEwIH0pLmRlZmF1bHQoJ2pzb24nKS5ub3ROdWxsKCksIC8vIGpzb24gfCBjc3ZcbiAgZ2VuZXJhdGVkQnk6IHRleHQoJ2dlbmVyYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBvcmdDcmVhdGVkQXRJZHg6IGluZGV4KCdjb21wbGlhbmNlX3JlcG9ydF9vcmdfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcbn0pKTtcblxuLyoqXG4gKiBDcm9uLWJhc2VkIHJlY3VycmluZyByZXBvcnQgZ2VuZXJhdGlvbiBzY2hlZHVsZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcmVwb3J0X3NjaGVkdWxlc1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZVJlcG9ydFNjaGVkdWxlID0gcGdUYWJsZSgnY29tcGxpYW5jZV9yZXBvcnRfc2NoZWR1bGVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHJlcG9ydFR5cGU6IHZhcmNoYXIoJ3JlcG9ydF90eXBlJywgeyBsZW5ndGg6IDMwIH0pLm5vdE51bGwoKSwgLy8gc3VtbWFyeSB8IGRldGFpbGVkXG4gIHRhcmdldDogdmFyY2hhcigndGFyZ2V0JywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gcGx1Z2luIHwgcGlwZWxpbmUgfCBhbGxcbiAgZm9ybWF0OiB2YXJjaGFyKCdmb3JtYXQnLCB7IGxlbmd0aDogMTAgfSkuZGVmYXVsdCgnanNvbicpLm5vdE51bGwoKSxcbiAgY3JvbkV4cHJlc3Npb246IHZhcmNoYXIoJ2Nyb25fZXhwcmVzc2lvbicsIHsgbGVuZ3RoOiAxMDAgfSkubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIGxhc3RSdW5BdDogdGltZXN0YW1wKCdsYXN0X3J1bl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBuZXh0UnVuQXQ6IHRpbWVzdGFtcCgnbmV4dF9ydW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsaXZlclRvOiBqc29uYignZGVsaXZlcl90bycpLiR0eXBlPHN0cmluZ1tdPigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSwgLy8gdXNlcklkcyB0byBub3RpZnlcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBhY3RpdmVOZXh0UnVuSWR4OiBpbmRleCgnY29tcGxpYW5jZV9yZXBvcnRfc2NoZWR1bGVfYWN0aXZlX25leHRfaWR4JylcbiAgICAub24odGFibGUuaXNBY3RpdmUsIHRhYmxlLm5leHRSdW5BdCksXG4gIG9yZ0lkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcmVwb3J0X3NjaGVkdWxlX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8vIENvbXBsaWFuY2UgdHlwZXNcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVBvbGljeSA9IHR5cGVvZiBjb21wbGlhbmNlUG9saWN5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VQb2xpY3lJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVBvbGljeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlSW5zZXJ0ID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJ1bGVIaXN0b3J5ID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlSGlzdG9yeS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUnVsZUhpc3RvcnlJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJ1bGVIaXN0b3J5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZUF1ZGl0TG9nID0gdHlwZW9mIGNvbXBsaWFuY2VBdWRpdExvZy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlQXVkaXRMb2dJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZUF1ZGl0TG9nLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZUV4ZW1wdGlvbiA9IHR5cGVvZiBjb21wbGlhbmNlRXhlbXB0aW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VFeGVtcHRpb25JbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZUV4ZW1wdGlvbi4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uSW5zZXJ0ID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW4gPSB0eXBlb2YgY29tcGxpYW5jZVNjYW4uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW5JbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVNjYW4uJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlU2NhblNjaGVkdWxlID0gdHlwZW9mIGNvbXBsaWFuY2VTY2FuU2NoZWR1bGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW5TY2hlZHVsZUluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlU2NhblNjaGVkdWxlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UgPSB0eXBlb2YgY29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2VJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlTm90aWZpY2F0aW9uTG9nID0gdHlwZW9mIGNvbXBsaWFuY2VOb3RpZmljYXRpb25Mb2cuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZU5vdGlmaWNhdGlvbkxvZ0luc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlTm90aWZpY2F0aW9uTG9nLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJvbGUgPSB0eXBlb2YgY29tcGxpYW5jZVJvbGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJvbGVJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJvbGUuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUmVwb3J0ID0gdHlwZW9mIGNvbXBsaWFuY2VSZXBvcnQuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJlcG9ydEluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlUmVwb3J0LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJlcG9ydFNjaGVkdWxlID0gdHlwZW9mIGNvbXBsaWFuY2VSZXBvcnRTY2hlZHVsZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUmVwb3J0U2NoZWR1bGVJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJlcG9ydFNjaGVkdWxlLiRpbmZlckluc2VydDtcbiJdfQ==
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxpYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9zY2hlbWEvY29tcGxpYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQWlHLE1BQU0sNEJBQTRCLENBQUM7QUFDMUosT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFrQjNIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUU7SUFDN0QsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzFFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN6RCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUNqRixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDekQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFFakYsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDaEQsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDaEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RFLFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUUzRCw0RUFBNEU7SUFDNUUsa0ZBQWtGO0lBQ2xGLFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN6RCxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdEQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsMEVBQTBFO0lBQzFFLDJFQUEyRTtJQUMzRSxVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztDQUM3RCxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsUUFBUSxFQUFFLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQSx3QkFBd0IsQ0FBQztJQUN0RyxZQUFZLEVBQUUsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUN2RixXQUFXLEVBQUUsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDekUsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLDJDQUEyQyxDQUFDO1NBQzNFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztDQUM5QyxDQUFDLENBQUMsQ0FBQztBQUVKOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFO0lBQ3hELEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUMxRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDekQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDakYsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3pELFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBRWpGLGdCQUFnQjtJQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNoRCxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNoQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDM0YsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2xELE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFjLENBQUMsT0FBTyxFQUFFO0lBQ3ZFLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFOUYsaUJBQWlCO0lBQ2pCLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUUzRCxhQUFhO0lBQ2IsYUFBYSxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRSxjQUFjLEVBQUUsU0FBUyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBRXBFLFFBQVE7SUFDUixLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFbkYsd0JBQXdCO0lBQ3hCLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFL0UsOEVBQThFO0lBQzlFLDJEQUEyRDtJQUMzRCxtQkFBbUIsRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBRTlFLHlCQUF5QjtJQUN6QixLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN4QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBZ0I7SUFDbkUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFFckIsK0RBQStEO0lBQy9ELFVBQVUsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxFQUFtQjtJQUN4RCxhQUFhLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFxQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFFakcsd0JBQXdCO0lBQ3hCLDRFQUE0RTtJQUM1RSxrRkFBa0Y7SUFDbEYsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3pELFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN0RCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QiwwRUFBMEU7SUFDMUUsMkVBQTJFO0lBQzNFLFVBQVUsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0NBQzdELEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixRQUFRLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBLHdCQUF3QixDQUFDO0lBQ3BHLGtCQUFrQixFQUFFLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQztTQUMvRCxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDaEQsWUFBWSxFQUFFLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDckYsV0FBVyxFQUFFLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ3JFLFFBQVEsRUFBRSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUM1RCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUNyRixhQUFhLEVBQUUsV0FBVyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQztJQUN6RixtREFBbUQ7SUFDbkQsNkVBQTZFO0lBQzdFLGdGQUFnRjtJQUNoRiw4RUFBOEU7SUFDOUUsa0VBQWtFO0lBQ2xFLDJFQUEyRTtJQUMzRSw4Q0FBOEM7SUFDOUMsZ0NBQWdDO0lBQ2hDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztTQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDN0MsS0FBSyxDQUFDLEdBQUcsQ0FBQSxxQkFBcUIsQ0FBQztDQUNuQyxDQUFDLENBQUMsQ0FBQztBQUVKOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUMseUJBQXlCLEVBQUU7SUFDdEUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUM5RixLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRCxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLHlDQUF5QztJQUN2RyxhQUFhLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsbUNBQW1DO0lBQzNFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsMENBQTBDLENBQUM7U0FDaEUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNwQyxlQUFlLEVBQUUsS0FBSyxDQUFDLHlDQUF5QyxDQUFDO1NBQzlELEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDbkMsU0FBUyxFQUFFLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQztTQUNwRCxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztDQUNwQixDQUFDLENBQUMsQ0FBQztBQUVKOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCLEVBQUU7SUFDaEUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDakMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQWMsQ0FBQyxPQUFPLEVBQUU7SUFDdkUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSwyQ0FBMkM7SUFDaEcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDL0MsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbkQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxzQkFBc0I7SUFDM0UsVUFBVSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLEVBQTZCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM5RSxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUMxQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLHlDQUF5QztJQUNsRSxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUNsRixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsZUFBZSxFQUFFLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDM0Ysb0VBQW9FO0lBQ3BFLHNFQUFzRTtJQUN0RSx3RUFBd0U7SUFDeEUscUVBQXFFO0lBQ3JFLGdDQUFnQztJQUNoQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsdUNBQXVDLENBQUM7U0FDaEUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFBLEdBQUcsS0FBSyxDQUFDLFNBQVMsT0FBTyxDQUFDO0lBQ2hELGtCQUFrQixFQUFFLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztTQUNoRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDOUMsU0FBUyxFQUFFLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0NBQ2xFLENBQUMsQ0FBQyxDQUFDO0FBRUo7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtJQUNsRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzlGLFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFjLENBQUMsT0FBTyxFQUFFO0lBQ2hGLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3JDLFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ25ELE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQy9CLGVBQWUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDekMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsMENBQTBDO0lBQ2xILFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixtQkFBbUIsRUFBRSxXQUFXLENBQUMsNkNBQTZDLENBQUM7U0FDNUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ2hELFlBQVksRUFBRSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3hGLFlBQVksRUFBRSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUM5RSxXQUFXLEVBQUUsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7Q0FDNUUsQ0FBQyxDQUFDLENBQUM7QUFFSjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsT0FBTyxDQUFDLCtCQUErQixFQUFFO0lBQ2pGLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDOUYsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDN0MsWUFBWSxFQUFFLFNBQVMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDdkYsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RELGFBQWEsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLEVBQTJCO0lBQ3ZFLGNBQWMsRUFBRSxTQUFTLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDcEUsY0FBYyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztDQUN4QyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsYUFBYSxFQUFFLFdBQVcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDL0YsWUFBWSxFQUFFLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDekYsT0FBTyxFQUFFLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0NBQ2hFLENBQUMsQ0FBQyxDQUFDO0FBRUo7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUU7SUFDeEQsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSwwQkFBMEI7SUFDL0UsTUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSwyQ0FBMkM7SUFDcEUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUscURBQXFEO0lBQzdILFdBQVcsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsa0RBQWtEO0lBQ2xILE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2pDLGFBQWEsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzdELGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDckUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3JELFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNyRCxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkQsd0VBQXdFO0lBQ3hFLDJFQUEyRTtJQUMzRSxtRUFBbUU7SUFDbkUsZ0NBQWdDO0lBQ2hDLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN4RCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxXQUFXLEVBQUUsU0FBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5RCxXQUFXLEVBQUUsU0FBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5RCxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUNqQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUNsRixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsZUFBZSxFQUFFLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDMUYsWUFBWSxFQUFFLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7Q0FDcEYsQ0FBQyxDQUFDLENBQUM7QUFFSjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixFQUFFO0lBQ3pFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsMEJBQTBCO0lBQy9FLGNBQWMsRUFBRSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDckUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RELFNBQVMsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELFNBQVMsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsMENBQTBDLENBQUM7U0FDaEUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUN0QyxNQUFNLEVBQUUsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Q0FDbEUsQ0FBQyxDQUFDLENBQUM7QUFFSjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsT0FBTyxDQUFDLHFDQUFxQyxFQUFFO0lBQzdGLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFO0lBQzVELGFBQWEsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2pFLGVBQWUsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RFLHlFQUF5RTtJQUN6RSxZQUFZLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDL0QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsNkJBQTZCO0lBQ2hILGNBQWMsRUFBRSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDM0QsWUFBWSxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNqRSxXQUFXLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssRUFBWSxFQUFFLHdCQUF3QjtJQUM5RSxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNuRCxhQUFhLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3pELFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLENBQUMsQ0FBQztBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxPQUFPLENBQUMsNkJBQTZCLEVBQUU7SUFDOUUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSw0QkFBNEI7SUFDbkYsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSwwQkFBMEI7SUFDL0UsT0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQTJCLENBQUMsT0FBTyxFQUFFO0lBQ3BFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztJQUNyRCxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNuQyxxRkFBcUY7SUFDckYseUVBQXlFO0lBQ3pFLHFGQUFxRjtJQUNyRixzRkFBc0Y7SUFDdEYsa0ZBQWtGO0lBQ2xGLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixlQUFlLEVBQUUsS0FBSyxDQUFDLHlDQUF5QyxDQUFDO1NBQzlELEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7Q0FDcEMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgU1lTVEVNX09SR19JRCwgdHlwZSBSdWxlQ29uZGl0aW9uTW9kZSwgdHlwZSBSdWxlT3BlcmF0b3IsIHR5cGUgUnVsZVNjb3BlLCB0eXBlIFJ1bGVTZXZlcml0eSwgdHlwZSBSdWxlVGFyZ2V0IH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHsgYm9vbGVhbiwgaW50ZWdlciwgdmFyY2hhciwgcGdUYWJsZSwgdGV4dCwgdGltZXN0YW1wLCB1dWlkLCBqc29uYiwgaW5kZXgsIHVuaXF1ZUluZGV4IH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbXBsaWFuY2UgU2VydmljZSBUYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSdWxlU2V2ZXJpdHksIFJ1bGVUYXJnZXQsIFJ1bGVPcGVyYXRvciwgUnVsZUNvbmRpdGlvbk1vZGUsIFJ1bGVTY29wZSB9O1xuXG4vKipcbiAqIEEgc2luZ2xlIGNvbmRpdGlvbiBpbiBhIGNyb3NzLWZpZWxkIHJ1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZUNvbmRpdGlvbiB7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBvcGVyYXRvcj86IFJ1bGVPcGVyYXRvcjtcbiAgdmFsdWU/OiB1bmtub3duO1xuICBkZXBlbmRzT25SdWxlPzogc3RyaW5nOyAvLyBydWxlIElEICBvbmx5IGV2YWx1YXRlIGlmIHJlZmVyZW5jZWQgcnVsZSBwYXNzZWRcbn1cblxuLyoqXG4gKiBDb21wbGlhbmNlIHBvbGljaWVzIGdyb3VwIHJ1bGVzIGludG8gbmFtZWQgc2V0cyB0aGF0IGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIHRvZ2V0aGVyLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX3BvbGljaWVzXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUG9saWN5ID0gcGdUYWJsZSgnY29tcGxpYW5jZV9wb2xpY2llcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkuZGVmYXVsdChTWVNURU1fT1JHX0lEKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLmRlZmF1bHQoJ3N5c3RlbScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5kZWZhdWx0KCdzeXN0ZW0nKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcblxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLmRlZmF1bHQoJzEuMC4wJykubm90TnVsbCgpLFxuICBpc1RlbXBsYXRlOiBib29sZWFuKCdpc190ZW1wbGF0ZScpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcblxuICAvLyBObyBzaGFyaW5nIHJ1bmc6IGNvbXBsaWFuY2UgdmlzaWJpbGl0eSBpcyBvcmcgKyB0aGUgc3lzdGVtLW9yZyBjYXJ2ZS1vdXQsXG4gIC8vIGFwcGxpZWQgaW4gYGJ1aWxkQ29tcGxpYW5jZVBvbGljeUNvbmRpdGlvbnNgIC8gYGJ1aWxkQ29tcGxpYW5jZVJ1bGVDb25kaXRpb25zYC5cbiAgaXNEZWZhdWx0OiBib29sZWFuKCdpc19kZWZhdWx0JykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxuICAvLyBTb2Z0LWRlbGV0ZSBwdXJnZSBkZWFkbGluZTogdGhlIHJldGVudGlvbiBzd2VlcCBoYXJkLWRlbGV0ZXMgdG9tYnN0b25lZFxuICAvLyByb3dzIG9uY2UgYHB1cmdlX2FmdGVyYCBoYXMgcGFzc2VkIChzZXQgb24gZGVsZXRlIGFsb25nc2lkZSBkZWxldGVkX2F0KS5cbiAgcHVyZ2VBZnRlcjogdGltZXN0YW1wKCdwdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSwgKHRhYmxlKSA9PiAoe1xuICBwdXJnZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcG9saWN5X3B1cmdlX2lkeCcpLm9uKHRhYmxlLnB1cmdlQWZ0ZXIpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5PVCBOVUxMYCksXG4gIG9yZ0FjdGl2ZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcG9saWN5X29yZ19hY3RpdmVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmlzQWN0aXZlKSxcbiAgdGVtcGxhdGVJZHg6IGluZGV4KCdjb21wbGlhbmNlX3BvbGljeV90ZW1wbGF0ZV9pZHgnKS5vbih0YWJsZS5pc1RlbXBsYXRlKSxcbiAgbmFtZU9yZ1ZlcnNpb25VbmlxdWU6IHVuaXF1ZUluZGV4KCdjb21wbGlhbmNlX3BvbGljeV9uYW1lX29yZ192ZXJzaW9uX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5uYW1lLCB0YWJsZS52ZXJzaW9uKSxcbn0pKTtcblxuLyoqXG4gKiBDb21wbGlhbmNlIHJ1bGVzIGRlZmluZSBpbmRpdmlkdWFsIGNoZWNrcyBhZ2FpbnN0IHBsdWdpbi9waXBlbGluZSBhdHRyaWJ1dGVzLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX3J1bGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUnVsZSA9IHBnVGFibGUoJ2NvbXBsaWFuY2VfcnVsZXMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLmRlZmF1bHQoU1lTVEVNX09SR19JRCkubm90TnVsbCgpLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5kZWZhdWx0KCdzeXN0ZW0nKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5JykuZGVmYXVsdCgnc3lzdGVtJykubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG5cbiAgLy8gUnVsZSBpZGVudGl0eVxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICBwb2xpY3lJZDogdXVpZCgncG9saWN5X2lkJykucmVmZXJlbmNlcygoKSA9PiBjb21wbGlhbmNlUG9saWN5LmlkLCB7IG9uRGVsZXRlOiAnc2V0IG51bGwnIH0pLFxuICBwcmlvcml0eTogaW50ZWdlcigncHJpb3JpdHknKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgdGFyZ2V0OiB2YXJjaGFyKCd0YXJnZXQnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UnVsZVRhcmdldD4oKS5ub3ROdWxsKCksXG4gIHNldmVyaXR5OiB2YXJjaGFyKCdzZXZlcml0eScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxSdWxlU2V2ZXJpdHk+KCkuZGVmYXVsdCgnZXJyb3InKS5ub3ROdWxsKCksXG5cbiAgLy8gQ2F0ZWdvcml6YXRpb25cbiAgdGFnczoganNvbmIoJ3RhZ3MnKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG5cbiAgLy8gU2NoZWR1bGluZ1xuICBlZmZlY3RpdmVGcm9tOiB0aW1lc3RhbXAoJ2VmZmVjdGl2ZV9mcm9tJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGVmZmVjdGl2ZVVudGlsOiB0aW1lc3RhbXAoJ2VmZmVjdGl2ZV91bnRpbCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuXG4gIC8vIFNjb3BlXG4gIHNjb3BlOiB2YXJjaGFyKCdzY29wZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxSdWxlU2NvcGU+KCkuZGVmYXVsdCgnb3JnJykubm90TnVsbCgpLFxuXG4gIC8vIE5vdGlmaWNhdGlvbiBvdmVycmlkZVxuICBzdXBwcmVzc05vdGlmaWNhdGlvbjogYm9vbGVhbignc3VwcHJlc3Nfbm90aWZpY2F0aW9uJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuXG4gIC8vIE9yZyDihpIgdGVhbSBoaWVyYXJjaHk6IHdoZW4gdHJ1ZSwgdGhpcyAocGFyZW50LW9yZykgcnVsZSBpcyBhbHNvIGVuZm9yY2VkIG9uXG4gIC8vIGRlc2NlbmRhbnQgdGVhbSBvcmdzIGR1cmluZyB0aGVpciBjb21wbGlhbmNlIGV2YWx1YXRpb24uXG4gIHByb3BhZ2F0ZVRvQ2hpbGRyZW46IGJvb2xlYW4oJ3Byb3BhZ2F0ZV90b19jaGlsZHJlbicpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcblxuICAvLyBTaW5nbGUtZmllbGQgY29uZGl0aW9uXG4gIGZpZWxkOiB2YXJjaGFyKCdmaWVsZCcsIHsgbGVuZ3RoOiAxMDAgfSksXG4gIG9wZXJhdG9yOiB2YXJjaGFyKCdvcGVyYXRvcicsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSdWxlT3BlcmF0b3I+KCksXG4gIHZhbHVlOiBqc29uYigndmFsdWUnKSxcblxuICAvLyBDcm9zcy1maWVsZCBjb25kaXRpb25zIChvdmVycmlkZXMgc2luZ2xlLWZpZWxkIHdoZW4gcHJlc2VudClcbiAgY29uZGl0aW9uczoganNvbmIoJ2NvbmRpdGlvbnMnKS4kdHlwZTxSdWxlQ29uZGl0aW9uW10+KCksXG4gIGNvbmRpdGlvbk1vZGU6IHZhcmNoYXIoJ2NvbmRpdGlvbl9tb2RlJywgeyBsZW5ndGg6IDUgfSkuJHR5cGU8UnVsZUNvbmRpdGlvbk1vZGU+KCkuZGVmYXVsdCgnYWxsJyksXG5cbiAgLy8gQWNjZXNzIGFuZCB2aXNpYmlsaXR5XG4gIC8vIE5vIHNoYXJpbmcgcnVuZzogY29tcGxpYW5jZSB2aXNpYmlsaXR5IGlzIG9yZyArIHRoZSBzeXN0ZW0tb3JnIGNhcnZlLW91dCxcbiAgLy8gYXBwbGllZCBpbiBgYnVpbGRDb21wbGlhbmNlUG9saWN5Q29uZGl0aW9uc2AgLyBgYnVpbGRDb21wbGlhbmNlUnVsZUNvbmRpdGlvbnNgLlxuICBpc0RlZmF1bHQ6IGJvb2xlYW4oJ2lzX2RlZmF1bHQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG4gIC8vIFNvZnQtZGVsZXRlIHB1cmdlIGRlYWRsaW5lOiB0aGUgcmV0ZW50aW9uIHN3ZWVwIGhhcmQtZGVsZXRlcyB0b21ic3RvbmVkXG4gIC8vIHJvd3Mgb25jZSBgcHVyZ2VfYWZ0ZXJgIGhhcyBwYXNzZWQgKHNldCBvbiBkZWxldGUgYWxvbmdzaWRlIGRlbGV0ZWRfYXQpLlxuICBwdXJnZUFmdGVyOiB0aW1lc3RhbXAoJ3B1cmdlX2FmdGVyJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG59LCAodGFibGUpID0+ICh7XG4gIHB1cmdlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX3B1cmdlX2lkeCcpLm9uKHRhYmxlLnB1cmdlQWZ0ZXIpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5PVCBOVUxMYCksXG4gIG9yZ1RhcmdldEFjdGl2ZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9vcmdfdGFyZ2V0X2FjdGl2ZV9pZHgnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgdGFibGUudGFyZ2V0LCB0YWJsZS5pc0FjdGl2ZSksXG4gIG9yZ1BvbGljeUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9vcmdfcG9saWN5X2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5wb2xpY3lJZCksXG4gIHByaW9yaXR5SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX3ByaW9yaXR5X2lkeCcpLm9uKHRhYmxlLnByaW9yaXR5KSxcbiAgc2NvcGVJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfc2NvcGVfaWR4Jykub24odGFibGUuc2NvcGUpLFxuICBlZmZlY3RpdmVGcm9tSWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX2VmZmVjdGl2ZV9mcm9tX2lkeCcpLm9uKHRhYmxlLmVmZmVjdGl2ZUZyb20pLFxuICBuYW1lT3JnVW5pcXVlOiB1bmlxdWVJbmRleCgnY29tcGxpYW5jZV9ydWxlX25hbWVfb3JnX3VuaXF1ZScpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5uYW1lKSxcbiAgLy8gUGFydGlhbCBHSU4gaW5kZXggYmFja2luZyB0aGUgY3VyYXRlZC1zZXQgbG9va3VwXG4gIC8vIGBmaW5kUHVibGlzaGVkUnVsZUlkc0J5U2V0VGFnYCAoc3Vic2NyaXB0aW9uLXNlcnZpY2UpOiBhIGNvbnRhaW5tZW50IHF1ZXJ5XG4gIC8vIGB0YWdzIEA+ICdbXCJzZXQ6PHg+XCJdJzo6anNvbmJgIHJlc3RyaWN0ZWQgdG8gcHVibGlzaGVkIHJvd3MuIGBqc29uYl9wYXRoX29wc2BcbiAgLy8gaXMgdGhlIHNtYWxsZXIvZmFzdGVyIG9wY2xhc3Mg4oCUIGl0IG9ubHkgc3VwcG9ydHMgYEA+YCAoZXhhY3RseSB0aGlzIHF1ZXJ5KSxcbiAgLy8gbm90IGtleS1leGlzdGVuY2UsIHdoaWNoIHdlIG5ldmVyIHJ1biBhZ2FpbnN0IGB0YWdzYC4gU2NvcGVkIHRvXG4gIC8vIGBzY29wZSA9ICdwdWJsaXNoZWQnYCBzbyBvbmx5IHRoZSBjdXJhdGVkIGNhdGFsb2cgKGEgaGFuZGZ1bCBvZiByb3dzKSBpc1xuICAvLyBpbmRleGVkLCBub3QgZXZlcnkgb3JnJ3MgcHJpdmF0ZSBydWxlIHRhZ3MuXG4gIC8vIENyZWF0ZWQgYnkgcG9zdGdyZXMtaW5pdC5zcWwuXG4gIHB1Ymxpc2hlZFRhZ3NHaW5JZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfcHVibGlzaGVkX3RhZ3NfZ2luX2lkeCcpXG4gICAgLnVzaW5nKCdnaW4nLCB0YWJsZS50YWdzLm9wKCdqc29uYl9wYXRoX29wcycpKVxuICAgIC53aGVyZShzcWxgc2NvcGUgPSAncHVibGlzaGVkJ2ApLFxufSkpO1xuXG4vKipcbiAqIFRyYWNrcyBldmVyeSBjaGFuZ2UgdG8gY29tcGxpYW5jZSBydWxlcyBmb3IgdmVyc2lvbmluZyBhbmQgcm9sbGJhY2suXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcnVsZV9oaXN0b3J5XG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUnVsZUhpc3RvcnkgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3J1bGVfaGlzdG9yeScsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgcnVsZUlkOiB1dWlkKCdydWxlX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gY29tcGxpYW5jZVJ1bGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBjaGFuZ2VUeXBlOiB2YXJjaGFyKCdjaGFuZ2VfdHlwZScsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIGNyZWF0ZWQgfCB1cGRhdGVkIHwgZGVsZXRlZCB8IHJlc3RvcmVkXG4gIHByZXZpb3VzU3RhdGU6IGpzb25iKCdwcmV2aW91c19zdGF0ZScpLCAvLyBmdWxsIHJ1bGUgc25hcHNob3QgYmVmb3JlIGNoYW5nZVxuICBjaGFuZ2VkQnk6IHRleHQoJ2NoYW5nZWRfYnknKS5ub3ROdWxsKCksXG4gIGNoYW5nZWRBdDogdGltZXN0YW1wKCdjaGFuZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcnVsZUNoYW5nZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9oaXN0b3J5X3J1bGVfY2hhbmdlZF9pZHgnKVxuICAgIC5vbih0YWJsZS5ydWxlSWQsIHRhYmxlLmNoYW5nZWRBdCksXG4gIG9yZ0NoYW5nZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9oaXN0b3J5X29yZ19jaGFuZ2VkX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5jaGFuZ2VkQXQpLFxuICBydWxlSWRJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfaGlzdG9yeV9ydWxlX2lkX2lkeCcpXG4gICAgLm9uKHRhYmxlLnJ1bGVJZCksXG59KSk7XG5cbi8qKlxuICogQ29tcGxpYW5jZSBhdWRpdCBsb2cgIHN0b3JlcyBldmVyeSBjb21wbGlhbmNlIGNoZWNrIHJlc3VsdC5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9hdWRpdF9sb2dcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VBdWRpdExvZyA9IHBnVGFibGUoJ2NvbXBsaWFuY2VfYXVkaXRfbG9nJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHVzZXJJZDogdGV4dCgndXNlcl9pZCcpLm5vdE51bGwoKSxcbiAgdGFyZ2V0OiB2YXJjaGFyKCd0YXJnZXQnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UnVsZVRhcmdldD4oKS5ub3ROdWxsKCksXG4gIGFjdGlvbjogdmFyY2hhcignYWN0aW9uJywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gdXBsb2FkIHwgZGVwbG95IHwgY3JlYXRlIHwgdXBkYXRlIHwgc2NhblxuICBlbnRpdHlJZDogdmFyY2hhcignZW50aXR5X2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZW50aXR5TmFtZTogdmFyY2hhcignZW50aXR5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLFxuICByZXN1bHQ6IHZhcmNoYXIoJ3Jlc3VsdCcsIHsgbGVuZ3RoOiAxMCB9KS5ub3ROdWxsKCksIC8vIHBhc3MgfCB3YXJuIHwgYmxvY2tcbiAgdmlvbGF0aW9uczoganNvbmIoJ3Zpb2xhdGlvbnMnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPigpLmRlZmF1bHQoW10pLFxuICBydWxlQ291bnQ6IGludGVnZXIoJ3J1bGVfY291bnQnKS5ub3ROdWxsKCksXG4gIHNjYW5JZDogdXVpZCgnc2Nhbl9pZCcpLCAvLyBncm91cHMgZW50cmllcyBmcm9tIHRoZSBzYW1lIGJ1bGsgc2NhblxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ0NyZWF0ZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfYXVkaXRfb3JnX2NyZWF0ZWRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIC8vIERFU0MgdmFyaWFudCBmb3IgdGhlIGRvbWluYW50IFwibGF0ZXN0IGF1ZGl0IGV2ZW50cyBwZXIgb3JnXCIgcXVlcnlcbiAgLy8gcGF0dGVybiAoYXVkaXQgbG9nIFVJcyBzb3J0IG5ld2VzdC1maXJzdCkuIFBvc3RncmVzIGNhbiB1c2UgdGhlIGFzY1xuICAvLyBpbmRleCBmb3IgZGVzYyBzY2FucywgYnV0IGEgbWF0Y2hpbmcgREVTQyBpbmRleCBsZXRzIGluZGV4LW9ubHkgc2NhbnNcbiAgLy8gc2F0aXNmeSBgT1JERVIgQlkgY3JlYXRlZF9hdCBERVNDIExJTUlUIG5gIHdpdGhvdXQgYSByZXZlcnNlIHN0ZXAuXG4gIC8vIENyZWF0ZWQgYnkgcG9zdGdyZXMtaW5pdC5zcWwuXG4gIG9yZ0NyZWF0ZWRBdERlc2NJZHg6IGluZGV4KCdjb21wbGlhbmNlX2F1ZGl0X29yZ19jcmVhdGVkX2Rlc2NfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHNxbGAke3RhYmxlLmNyZWF0ZWRBdH0gREVTQ2ApLFxuICBvcmdUYXJnZXRSZXN1bHRJZHg6IGluZGV4KCdjb21wbGlhbmNlX2F1ZGl0X29yZ190YXJnZXRfcmVzdWx0X2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS50YXJnZXQsIHRhYmxlLnJlc3VsdCksXG4gIHNjYW5JZElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfYXVkaXRfc2Nhbl9pZF9pZHgnKS5vbih0YWJsZS5zY2FuSWQpLFxufSkpO1xuXG4vKipcbiAqIFBlci1lbnRpdHkgZXhlbXB0aW9ucyBmcm9tIHNwZWNpZmljIGNvbXBsaWFuY2UgcnVsZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfZXhlbXB0aW9uc1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZUV4ZW1wdGlvbiA9IHBnVGFibGUoJ2NvbXBsaWFuY2VfZXhlbXB0aW9ucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBydWxlSWQ6IHV1aWQoJ3J1bGVfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBjb21wbGlhbmNlUnVsZS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBlbnRpdHlUeXBlOiB2YXJjaGFyKCdlbnRpdHlfdHlwZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSdWxlVGFyZ2V0PigpLm5vdE51bGwoKSxcbiAgZW50aXR5SWQ6IHV1aWQoJ2VudGl0eV9pZCcpLm5vdE51bGwoKSxcbiAgZW50aXR5TmFtZTogdmFyY2hhcignZW50aXR5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLFxuICByZWFzb246IHRleHQoJ3JlYXNvbicpLm5vdE51bGwoKSxcbiAgYXBwcm92ZWRCeTogdGV4dCgnYXBwcm92ZWRfYnknKSxcbiAgcmVqZWN0aW9uUmVhc29uOiB0ZXh0KCdyZWplY3Rpb25fcmVhc29uJyksXG4gIHN0YXR1czogdmFyY2hhcignc3RhdHVzJywgeyBsZW5ndGg6IDIwIH0pLmRlZmF1bHQoJ3BlbmRpbmcnKS5ub3ROdWxsKCksIC8vIHBlbmRpbmcgfCBhcHByb3ZlZCB8IHJlamVjdGVkIHwgZXhwaXJlZFxuICBleHBpcmVzQXQ6IHRpbWVzdGFtcCgnZXhwaXJlc19hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5Jykubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ1J1bGVFbnRpdHlVbmlxdWU6IHVuaXF1ZUluZGV4KCdjb21wbGlhbmNlX2V4ZW1wdGlvbl9vcmdfcnVsZV9lbnRpdHlfdW5pcXVlJylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLnJ1bGVJZCwgdGFibGUuZW50aXR5SWQpLFxuICBvcmdTdGF0dXNJZHg6IGluZGV4KCdjb21wbGlhbmNlX2V4ZW1wdGlvbl9vcmdfc3RhdHVzX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5zdGF0dXMpLFxuICBleHBpcmVzQXRJZHg6IGluZGV4KCdjb21wbGlhbmNlX2V4ZW1wdGlvbl9leHBpcmVzX2F0X2lkeCcpLm9uKHRhYmxlLmV4cGlyZXNBdCksXG4gIGVudGl0eUlkSWR4OiBpbmRleCgnY29tcGxpYW5jZV9leGVtcHRpb25fZW50aXR5X2lkX2lkeCcpLm9uKHRhYmxlLmVudGl0eUlkKSxcbn0pKTtcblxuLyoqXG4gKiBUcmFja3Mgd2hpY2ggb3JncyBoYXZlIG9wdGVkIGludG8gc3lzdGVtLW9yZyBwdWJsaXNoZWQgY29tcGxpYW5jZSBydWxlcy5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9ydWxlX3N1YnNjcmlwdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uID0gcGdUYWJsZSgnY29tcGxpYW5jZV9ydWxlX3N1YnNjcmlwdGlvbnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcnVsZUlkOiB1dWlkKCdydWxlX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gY29tcGxpYW5jZVJ1bGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgc3Vic2NyaWJlZEJ5OiB0ZXh0KCdzdWJzY3JpYmVkX2J5Jykubm90TnVsbCgpLFxuICBzdWJzY3JpYmVkQXQ6IHRpbWVzdGFtcCgnc3Vic2NyaWJlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgcGlubmVkVmVyc2lvbjoganNvbmIoJ3Bpbm5lZF92ZXJzaW9uJykuJHR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCksXG4gIHVuc3Vic2NyaWJlZEF0OiB0aW1lc3RhbXAoJ3Vuc3Vic2NyaWJlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB1bnN1YnNjcmliZWRCeTogdGV4dCgndW5zdWJzY3JpYmVkX2J5JyksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ1J1bGVVbmlxdWU6IHVuaXF1ZUluZGV4KCdjb21wbGlhbmNlX3J1bGVfc3ViX29yZ19ydWxlX3VuaXF1ZScpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5ydWxlSWQpLFxuICBvcmdBY3RpdmVJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfc3ViX29yZ19hY3RpdmVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmlzQWN0aXZlKSxcbiAgcnVsZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9zdWJfcnVsZV9pZHgnKS5vbih0YWJsZS5ydWxlSWQpLFxufSkpO1xuXG4vKipcbiAqIEJ1bGsgY29tcGxpYW5jZSBzY2FucyAgdHJhY2tzIHNjaGVkdWxlZCBhbmQgb24tZGVtYW5kIHNjYW5zLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX3NjYW5zXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlU2NhbiA9IHBnVGFibGUoJ2NvbXBsaWFuY2Vfc2NhbnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgdGFyZ2V0OiB2YXJjaGFyKCd0YXJnZXQnLCB7IGxlbmd0aDogMjAgfSkubm90TnVsbCgpLCAvLyBwbHVnaW4gfCBwaXBlbGluZSB8IGFsbFxuICBmaWx0ZXI6IGpzb25iKCdmaWx0ZXInKSwgLy8gb3B0aW9uYWwgZW50aXR5IGZpbHRlciBmb3IgcGFydGlhbCBzY2Fuc1xuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAyMCB9KS5kZWZhdWx0KCdwZW5kaW5nJykubm90TnVsbCgpLCAvLyBwZW5kaW5nIHwgcnVubmluZyB8IGNvbXBsZXRlZCB8IGZhaWxlZCB8IGNhbmNlbGxlZFxuICB0cmlnZ2VyZWRCeTogdmFyY2hhcigndHJpZ2dlcmVkX2J5JywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gbWFudWFsIHwgc2NoZWR1bGVkIHwgcnVsZS1jaGFuZ2UgfCBydWxlLWRyeS1ydW5cbiAgdXNlcklkOiB0ZXh0KCd1c2VyX2lkJykubm90TnVsbCgpLFxuICB0b3RhbEVudGl0aWVzOiBpbnRlZ2VyKCd0b3RhbF9lbnRpdGllcycpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBwcm9jZXNzZWRFbnRpdGllczogaW50ZWdlcigncHJvY2Vzc2VkX2VudGl0aWVzJykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIHBhc3NDb3VudDogaW50ZWdlcigncGFzc19jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICB3YXJuQ291bnQ6IGludGVnZXIoJ3dhcm5fY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgYmxvY2tDb3VudDogaW50ZWdlcignYmxvY2tfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgLy8gVHJ1ZSB3aGVuIHRoZSBzY2FuIHN0b3BwZWQgZWFybHkgYXQgYSBjb25maWd1cmVkIHBlci1zY2FuIGNhcCAoc28gdGhlXG4gIC8vIGNvdW50cyBhYm92ZSByZXByZXNlbnQgYSBzdWJzZXQsIG5vdCB0aGUgZnVsbCBlbnRpdHkgdW5pdmVyc2UpLiBTdXJmYWNlZFxuICAvLyBpbiB0aGUgc2Nhbi1zdGF0dXMgVUkgc28gdXNlcnMga25vdyB3aGV0aGVyIHRvIHdpZGVuIHRoZSBmaWx0ZXIuXG4gIC8vIENyZWF0ZWQgYnkgcG9zdGdyZXMtaW5pdC5zcWwuXG4gIHRydW5jYXRlZDogYm9vbGVhbigndHJ1bmNhdGVkJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBzdGFydGVkQXQ6IHRpbWVzdGFtcCgnc3RhcnRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjb21wbGV0ZWRBdDogdGltZXN0YW1wKCdjb21wbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY2FuY2VsbGVkQXQ6IHRpbWVzdGFtcCgnY2FuY2VsbGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNhbmNlbGxlZEJ5OiB0ZXh0KCdjYW5jZWxsZWRfYnknKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBvcmdDcmVhdGVkQXRJZHg6IGluZGV4KCdjb21wbGlhbmNlX3NjYW5fb3JnX2NyZWF0ZWRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIG9yZ1N0YXR1c0lkeDogaW5kZXgoJ2NvbXBsaWFuY2Vfc2Nhbl9vcmdfc3RhdHVzX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5zdGF0dXMpLFxufSkpO1xuXG4vKipcbiAqIENyb24tYmFzZWQgcmVjdXJyaW5nIHNjYW4gc2NoZWR1bGVzLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX3NjYW5fc2NoZWR1bGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlU2NhblNjaGVkdWxlID0gcGdUYWJsZSgnY29tcGxpYW5jZV9zY2FuX3NjaGVkdWxlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB0YXJnZXQ6IHZhcmNoYXIoJ3RhcmdldCcsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIHBsdWdpbiB8IHBpcGVsaW5lIHwgYWxsXG4gIGNyb25FeHByZXNzaW9uOiB2YXJjaGFyKCdjcm9uX2V4cHJlc3Npb24nLCB7IGxlbmd0aDogMTAwIH0pLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBsYXN0UnVuQXQ6IHRpbWVzdGFtcCgnbGFzdF9ydW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgbmV4dFJ1bkF0OiB0aW1lc3RhbXAoJ25leHRfcnVuX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgYWN0aXZlTmV4dFJ1bklkeDogaW5kZXgoJ2NvbXBsaWFuY2Vfc2Nhbl9zY2hlZHVsZV9hY3RpdmVfbmV4dF9pZHgnKVxuICAgIC5vbih0YWJsZS5pc0FjdGl2ZSwgdGFibGUubmV4dFJ1bkF0KSxcbiAgb3JnSWR4OiBpbmRleCgnY29tcGxpYW5jZV9zY2FuX3NjaGVkdWxlX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8qKlxuICogUGVyLW9yZyBub3RpZmljYXRpb24gc2V0dGluZ3MgZm9yIGNvbXBsaWFuY2UgZXZlbnRzLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9wcmVmZXJlbmNlc1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9wcmVmZXJlbmNlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLnVuaXF1ZSgpLFxuICBub3RpZnlPbkJsb2NrOiBib29sZWFuKCdub3RpZnlfb25fYmxvY2snKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgbm90aWZ5T25XYXJuaW5nOiBib29sZWFuKCdub3RpZnlfb25fd2FybmluZycpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgLy8gT3B0LWluIGVtYWlsIGRlbGl2ZXJ5ICh0byBgdGFyZ2V0VXNlcnNgLCBvciBhbGwgb3JnIGFkbWlucyB3aGVuIG51bGwpLlxuICBlbWFpbEVuYWJsZWQ6IGJvb2xlYW4oJ2VtYWlsX2VuYWJsZWQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIGRpZ2VzdE1vZGU6IHZhcmNoYXIoJ2RpZ2VzdF9tb2RlJywgeyBsZW5ndGg6IDIwIH0pLmRlZmF1bHQoJ2ltbWVkaWF0ZScpLm5vdE51bGwoKSwgLy8gaW1tZWRpYXRlIHwgZGFpbHkgfCB3ZWVrbHlcbiAgZGlnZXN0U2NoZWR1bGU6IHZhcmNoYXIoJ2RpZ2VzdF9zY2hlZHVsZScsIHsgbGVuZ3RoOiAxMDAgfSksXG4gIGxhc3REaWdlc3RBdDogdGltZXN0YW1wKCdsYXN0X2RpZ2VzdF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB0YXJnZXRVc2VyczoganNvbmIoJ3RhcmdldF91c2VycycpLiR0eXBlPHN0cmluZ1tdPigpLCAvLyBudWxsID0gYWxsIG9yZyBhZG1pbnNcbiAgd2ViaG9va1VybDogdmFyY2hhcignd2ViaG9va191cmwnLCB7IGxlbmd0aDogNTAwIH0pLFxuICB3ZWJob29rU2VjcmV0OiB2YXJjaGFyKCd3ZWJob29rX3NlY3JldCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogTG9nIG9mIGFsbCBjb21wbGlhbmNlIG5vdGlmaWNhdGlvbnMgc2VudC5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9ub3RpZmljYXRpb25fbG9nXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlTm90aWZpY2F0aW9uTG9nID0gcGdUYWJsZSgnY29tcGxpYW5jZV9ub3RpZmljYXRpb25fbG9nJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGNoYW5uZWw6IHZhcmNoYXIoJ2NoYW5uZWwnLCB7IGxlbmd0aDogMjAgfSkubm90TnVsbCgpLCAvLyBpbi1hcHAgfCB3ZWJob29rIHwgZGlnZXN0XG4gIHN0YXR1czogdmFyY2hhcignc3RhdHVzJywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gc2VudCB8IGZhaWxlZCB8IHBlbmRpbmdcbiAgcGF5bG9hZDoganNvbmIoJ3BheWxvYWQnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKS5ub3ROdWxsKCksXG4gIHdlYmhvb2tSZXNwb25zZUNvZGU6IGludGVnZXIoJ3dlYmhvb2tfcmVzcG9uc2VfY29kZScpLFxuICB3ZWJob29rRXJyb3I6IHRleHQoJ3dlYmhvb2tfZXJyb3InKSxcbiAgLy8gYHJldHJ5X2NvdW50YCwgYG5leHRfcmV0cnlfYXRgIGFuZCBgcmVsYXRlZF9hdWRpdF9pZGAgd2VyZSBERUxFVEVEIGhlcmUuIFRoZXkgd2VyZVxuICAvLyBhIGRhdGFiYXNlLWJhY2tlZCByZXRyeSBxdWV1ZSB0aGF0IG5vdGhpbmcgZXZlciBkcm92ZSDigJQgbm8gd29ya2VyIHJlYWRcbiAgLy8gYG5leHRfcmV0cnlfYXRgLCBhbmQgdHdvIGluZGV4ZXMgZXhpc3RlZCBvbmx5IHRvIHNlcnZlIGl0LCBjb3N0aW5nIGV2ZXJ5IHdyaXRlIGZvclxuICAvLyBub3RoaW5nLiBSZXRyeSBpcyB0aGUgZHVyYWJsZSBSZWRpcyBzcG9vbCdzIGpvYiAoc2VlIHRoZSBhdWRpdCBzcG9vbCksIGFuZCBhIHNlY29uZFxuICAvLyByZXRyeSBtb2RlbCB0aGF0IG5ldmVyIHJ1bnMgaXMgaG93IGEgZmFpbGVkIG5vdGlmaWNhdGlvbiBzaWxlbnRseSBzdGF5cyBmYWlsZWQuXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnQ3JlYXRlZEF0SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ub3RpZmljYXRpb25fb3JnX2NyZWF0ZWRfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRBdCksXG59KSk7XG5cbi8vIGBjb21wbGlhbmNlX3JvbGVzYCB3YXMgREVMRVRFRCBoZXJlLCBhbmQgaXQgd2FzIHRoZSBtb3JlIGRhbmdlcm91cyBvZiB0aGUgdHdvLlxuLy8gSXQgZGVjbGFyZWQgYSBwYXJhbGxlbCBhdXRob3JpemF0aW9uIG1vZGVsIChjb21wbGlhbmNlLXZpZXdlciAvIC1lZGl0b3IgLyAtYWRtaW4pXG4vLyB0aGF0IG5vIHNlcnZpY2UsIHJvdXRlIG9yIGdhdGUgZXZlciByZWFkOiB0aGUgbGl2ZSBhdXRob3JpdHkgaXMgdGhlIGBjb21wbGlhbmNlOnJlYWRgXG4vLyAvIGBjb21wbGlhbmNlOndyaXRlYCBwZXJtaXNzaW9ucyBvbiB0aGUgb3JnJ3Mgcm9sZXMuIEEgc2Vjb25kLCB1bndpcmVkIHNvdXJjZSBvZlxuLy8gYXV0aG9yaXR5IGlzIG5vdCBtZXJlbHkgZGVhZCB3ZWlnaHQg4oCUIGl0IGlzIHNvbWV0aGluZyBhIGxhdGVyIGNoYW5nZSBjYW4gc3RhcnRcbi8vIGhvbm91cmluZywgYXQgd2hpY2ggcG9pbnQgdHdvIHN5c3RlbXMgZGlzYWdyZWUgYWJvdXQgd2hvIG1heSBlZGl0IGEgcnVsZS4gSXQgd2FzXG4vLyBkb2N1bWVudGVkIGluIGRvY3MvY29tcGxpYW5jZS5tZCBhcyByZWFsLCB3aGljaCBpcyBob3cgaXQgd291bGQgaGF2ZSBiZWVuIGZvdW5kLlxuLy9cbi8vIGBjb21wbGlhbmNlX3JlcG9ydHNgIHdhcyBERUxFVEVEIGhlcmUgdG9vOiByZXBvcnRfdHlwZSwgY29tcGFyZV9mcm9tL3RvIGFuZCBhIEpTT05CXG4vLyBgZGF0YWAgYmxvYiBmb3IgYSByZXBvcnQgbm90aGluZyBnZW5lcmF0ZWQgYW5kIG5vIHJvdXRlIHNlcnZlZC4gQ29tcGxpYW5jZSBwb3N0dXJlIGlzXG4vLyByZWFkIGxpdmUgKGBHRVQgL2NvbXBsaWFuY2UvcG9zdHVyZWApIGFuZCB0aGUgbWFuYWdlci1mYWNpbmcgcmVwb3J0IGlzIHRoZSBzdGFrZWhvbGRlclxuLy8gcmVwb3J0LCB3aGljaCBvd25zIGl0cyBvd24gc25hcHNob3RzIGluIGByZXBvcnRfcnVuc2AuXG5cbi8vIGBjb21wbGlhbmNlX3JlcG9ydF9zY2hlZHVsZXNgIHdhcyBERUxFVEVEIGhlcmUuIEl0IHdhcyBkZWNsYXJlZCAoY3Jvbixcbi8vIG5leHRSdW5BdCwgZGVsaXZlclRvKSBidXQgbm90aGluZyBldmVyIHJlYWQgb3IgcmFuIGl0IOKAlCBubyBzZXJ2aWNlLCBubyByb3V0ZSwgbm9cbi8vIHNjaGVkdWxlciDigJQgc28gaXQgd2FzIGEgc2Vjb25kLCBkZWFkIHNjaGVkdWxpbmcgbW9kZWwgc2l0dGluZyBuZXh0IHRvIHRoZSBvbmVcbi8vIHRoYXQgd29ya3MuIFN0YWtlaG9sZGVyIHJlcG9ydHMgb3duIHNjaGVkdWxpbmcgbm93LCB2aWEgYHJlcG9ydF9kZWZpbml0aW9uc2AuXG5cbi8vIENvbXBsaWFuY2UgdHlwZXNcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVBvbGljeSA9IHR5cGVvZiBjb21wbGlhbmNlUG9saWN5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VQb2xpY3lJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVBvbGljeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlSW5zZXJ0ID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJ1bGVIaXN0b3J5ID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlSGlzdG9yeS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUnVsZUhpc3RvcnlJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJ1bGVIaXN0b3J5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZUF1ZGl0TG9nID0gdHlwZW9mIGNvbXBsaWFuY2VBdWRpdExvZy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlQXVkaXRMb2dJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZUF1ZGl0TG9nLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZUV4ZW1wdGlvbiA9IHR5cGVvZiBjb21wbGlhbmNlRXhlbXB0aW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VFeGVtcHRpb25JbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZUV4ZW1wdGlvbi4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uSW5zZXJ0ID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW4gPSB0eXBlb2YgY29tcGxpYW5jZVNjYW4uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW5JbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVNjYW4uJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlU2NhblNjaGVkdWxlID0gdHlwZW9mIGNvbXBsaWFuY2VTY2FuU2NoZWR1bGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW5TY2hlZHVsZUluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlU2NhblNjaGVkdWxlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UgPSB0eXBlb2YgY29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2VJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlTm90aWZpY2F0aW9uTG9nID0gdHlwZW9mIGNvbXBsaWFuY2VOb3RpZmljYXRpb25Mb2cuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZU5vdGlmaWNhdGlvbkxvZ0luc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlTm90aWZpY2F0aW9uTG9nLiRpbmZlckluc2VydDtcblxuXG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InstallVersionPolicy, PluginScanFlag, HealthComponentScore } from '@pipeline-builder/api-core';
|
|
1
|
+
import type { InstallVersionPolicy, PluginScanFlag, PluginScanSummary, HealthComponentScore } from '@pipeline-builder/api-core';
|
|
2
2
|
import type { PluginIcon, PluginSecret, PluginUploadedIcon } from './plugin.js';
|
|
3
3
|
/**
|
|
4
4
|
* Per-component health scores, as STORED. The component score shape is
|
|
@@ -1130,6 +1130,25 @@ export declare const pluginListingVersion: import("drizzle-orm/pg-core").PgTable
|
|
|
1130
1130
|
}, {}, {
|
|
1131
1131
|
$type: PluginScanFlag;
|
|
1132
1132
|
}>;
|
|
1133
|
+
scanSummary: import("drizzle-orm/pg-core").PgColumn<{
|
|
1134
|
+
name: "scan_summary";
|
|
1135
|
+
tableName: "plugin_listing_versions";
|
|
1136
|
+
dataType: "json";
|
|
1137
|
+
columnType: "PgJsonb";
|
|
1138
|
+
data: PluginScanSummary;
|
|
1139
|
+
driverParam: unknown;
|
|
1140
|
+
notNull: false;
|
|
1141
|
+
hasDefault: false;
|
|
1142
|
+
isPrimaryKey: false;
|
|
1143
|
+
isAutoincrement: false;
|
|
1144
|
+
hasRuntimeDefault: false;
|
|
1145
|
+
enumValues: undefined;
|
|
1146
|
+
baseColumn: never;
|
|
1147
|
+
identity: undefined;
|
|
1148
|
+
generated: undefined;
|
|
1149
|
+
}, {}, {
|
|
1150
|
+
$type: PluginScanSummary;
|
|
1151
|
+
}>;
|
|
1133
1152
|
baseImageCreatedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
1134
1153
|
name: "base_image_created_at";
|
|
1135
1154
|
tableName: "plugin_listing_versions";
|
|
@@ -2282,160 +2301,6 @@ export declare const ecosystemSetting: import("drizzle-orm/pg-core").PgTableWith
|
|
|
2282
2301
|
};
|
|
2283
2302
|
dialect: 'pg';
|
|
2284
2303
|
}>;
|
|
2285
|
-
/**
|
|
2286
|
-
* Curated directory collections ("Featured", "Security scanners", …).
|
|
2287
|
-
*
|
|
2288
|
-
* @table ecosystem_collections
|
|
2289
|
-
*/
|
|
2290
|
-
export declare const ecosystemCollection: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
2291
|
-
name: "ecosystem_collections";
|
|
2292
|
-
schema: undefined;
|
|
2293
|
-
columns: {
|
|
2294
|
-
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
2295
|
-
name: "id";
|
|
2296
|
-
tableName: "ecosystem_collections";
|
|
2297
|
-
dataType: "string";
|
|
2298
|
-
columnType: "PgUUID";
|
|
2299
|
-
data: string;
|
|
2300
|
-
driverParam: string;
|
|
2301
|
-
notNull: true;
|
|
2302
|
-
hasDefault: true;
|
|
2303
|
-
isPrimaryKey: true;
|
|
2304
|
-
isAutoincrement: false;
|
|
2305
|
-
hasRuntimeDefault: false;
|
|
2306
|
-
enumValues: undefined;
|
|
2307
|
-
baseColumn: never;
|
|
2308
|
-
identity: undefined;
|
|
2309
|
-
generated: undefined;
|
|
2310
|
-
}, {}, {}>;
|
|
2311
|
-
slug: import("drizzle-orm/pg-core").PgColumn<{
|
|
2312
|
-
name: "slug";
|
|
2313
|
-
tableName: "ecosystem_collections";
|
|
2314
|
-
dataType: "string";
|
|
2315
|
-
columnType: "PgVarchar";
|
|
2316
|
-
data: string;
|
|
2317
|
-
driverParam: string;
|
|
2318
|
-
notNull: true;
|
|
2319
|
-
hasDefault: false;
|
|
2320
|
-
isPrimaryKey: false;
|
|
2321
|
-
isAutoincrement: false;
|
|
2322
|
-
hasRuntimeDefault: false;
|
|
2323
|
-
enumValues: [string, ...string[]];
|
|
2324
|
-
baseColumn: never;
|
|
2325
|
-
identity: undefined;
|
|
2326
|
-
generated: undefined;
|
|
2327
|
-
}, {}, {
|
|
2328
|
-
length: 100;
|
|
2329
|
-
}>;
|
|
2330
|
-
title: import("drizzle-orm/pg-core").PgColumn<{
|
|
2331
|
-
name: "title";
|
|
2332
|
-
tableName: "ecosystem_collections";
|
|
2333
|
-
dataType: "string";
|
|
2334
|
-
columnType: "PgVarchar";
|
|
2335
|
-
data: string;
|
|
2336
|
-
driverParam: string;
|
|
2337
|
-
notNull: true;
|
|
2338
|
-
hasDefault: false;
|
|
2339
|
-
isPrimaryKey: false;
|
|
2340
|
-
isAutoincrement: false;
|
|
2341
|
-
hasRuntimeDefault: false;
|
|
2342
|
-
enumValues: [string, ...string[]];
|
|
2343
|
-
baseColumn: never;
|
|
2344
|
-
identity: undefined;
|
|
2345
|
-
generated: undefined;
|
|
2346
|
-
}, {}, {
|
|
2347
|
-
length: 255;
|
|
2348
|
-
}>;
|
|
2349
|
-
description: import("drizzle-orm/pg-core").PgColumn<{
|
|
2350
|
-
name: "description";
|
|
2351
|
-
tableName: "ecosystem_collections";
|
|
2352
|
-
dataType: "string";
|
|
2353
|
-
columnType: "PgText";
|
|
2354
|
-
data: string;
|
|
2355
|
-
driverParam: string;
|
|
2356
|
-
notNull: false;
|
|
2357
|
-
hasDefault: false;
|
|
2358
|
-
isPrimaryKey: false;
|
|
2359
|
-
isAutoincrement: false;
|
|
2360
|
-
hasRuntimeDefault: false;
|
|
2361
|
-
enumValues: [string, ...string[]];
|
|
2362
|
-
baseColumn: never;
|
|
2363
|
-
identity: undefined;
|
|
2364
|
-
generated: undefined;
|
|
2365
|
-
}, {}, {}>;
|
|
2366
|
-
listingIds: import("drizzle-orm/pg-core").PgColumn<{
|
|
2367
|
-
name: "listing_ids";
|
|
2368
|
-
tableName: "ecosystem_collections";
|
|
2369
|
-
dataType: "json";
|
|
2370
|
-
columnType: "PgJsonb";
|
|
2371
|
-
data: string[];
|
|
2372
|
-
driverParam: unknown;
|
|
2373
|
-
notNull: true;
|
|
2374
|
-
hasDefault: true;
|
|
2375
|
-
isPrimaryKey: false;
|
|
2376
|
-
isAutoincrement: false;
|
|
2377
|
-
hasRuntimeDefault: false;
|
|
2378
|
-
enumValues: undefined;
|
|
2379
|
-
baseColumn: never;
|
|
2380
|
-
identity: undefined;
|
|
2381
|
-
generated: undefined;
|
|
2382
|
-
}, {}, {
|
|
2383
|
-
$type: string[];
|
|
2384
|
-
}>;
|
|
2385
|
-
position: import("drizzle-orm/pg-core").PgColumn<{
|
|
2386
|
-
name: "position";
|
|
2387
|
-
tableName: "ecosystem_collections";
|
|
2388
|
-
dataType: "number";
|
|
2389
|
-
columnType: "PgInteger";
|
|
2390
|
-
data: number;
|
|
2391
|
-
driverParam: string | number;
|
|
2392
|
-
notNull: true;
|
|
2393
|
-
hasDefault: true;
|
|
2394
|
-
isPrimaryKey: false;
|
|
2395
|
-
isAutoincrement: false;
|
|
2396
|
-
hasRuntimeDefault: false;
|
|
2397
|
-
enumValues: undefined;
|
|
2398
|
-
baseColumn: never;
|
|
2399
|
-
identity: undefined;
|
|
2400
|
-
generated: undefined;
|
|
2401
|
-
}, {}, {}>;
|
|
2402
|
-
updatedBy: import("drizzle-orm/pg-core").PgColumn<{
|
|
2403
|
-
name: "updated_by";
|
|
2404
|
-
tableName: "ecosystem_collections";
|
|
2405
|
-
dataType: "string";
|
|
2406
|
-
columnType: "PgText";
|
|
2407
|
-
data: string;
|
|
2408
|
-
driverParam: string;
|
|
2409
|
-
notNull: false;
|
|
2410
|
-
hasDefault: false;
|
|
2411
|
-
isPrimaryKey: false;
|
|
2412
|
-
isAutoincrement: false;
|
|
2413
|
-
hasRuntimeDefault: false;
|
|
2414
|
-
enumValues: [string, ...string[]];
|
|
2415
|
-
baseColumn: never;
|
|
2416
|
-
identity: undefined;
|
|
2417
|
-
generated: undefined;
|
|
2418
|
-
}, {}, {}>;
|
|
2419
|
-
updatedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
2420
|
-
name: "updated_at";
|
|
2421
|
-
tableName: "ecosystem_collections";
|
|
2422
|
-
dataType: "date";
|
|
2423
|
-
columnType: "PgTimestamp";
|
|
2424
|
-
data: Date;
|
|
2425
|
-
driverParam: string;
|
|
2426
|
-
notNull: true;
|
|
2427
|
-
hasDefault: true;
|
|
2428
|
-
isPrimaryKey: false;
|
|
2429
|
-
isAutoincrement: false;
|
|
2430
|
-
hasRuntimeDefault: false;
|
|
2431
|
-
enumValues: undefined;
|
|
2432
|
-
baseColumn: never;
|
|
2433
|
-
identity: undefined;
|
|
2434
|
-
generated: undefined;
|
|
2435
|
-
}, {}, {}>;
|
|
2436
|
-
};
|
|
2437
|
-
dialect: 'pg';
|
|
2438
|
-
}>;
|
|
2439
2304
|
/**
|
|
2440
2305
|
* A listing review. `authorOrgId` feeds the integrity rules (no
|
|
2441
2306
|
* self-review, per-org rate limit, verified use) and is NEVER exposed. GDPR
|
|
@@ -6990,8 +6855,6 @@ export type EcosystemReservedName = typeof ecosystemReservedName.$inferSelect;
|
|
|
6990
6855
|
export type EcosystemReservedNameInsert = typeof ecosystemReservedName.$inferInsert;
|
|
6991
6856
|
export type EcosystemSetting = typeof ecosystemSetting.$inferSelect;
|
|
6992
6857
|
export type EcosystemSettingInsert = typeof ecosystemSetting.$inferInsert;
|
|
6993
|
-
export type EcosystemCollection = typeof ecosystemCollection.$inferSelect;
|
|
6994
|
-
export type EcosystemCollectionInsert = typeof ecosystemCollection.$inferInsert;
|
|
6995
6858
|
export type PluginReview = typeof pluginReview.$inferSelect;
|
|
6996
6859
|
export type PluginReviewInsert = typeof pluginReview.$inferInsert;
|
|
6997
6860
|
export type PluginReviewReply = typeof pluginReviewReply.$inferSelect;
|