Files
speckle-server/scratch/edge-debug-selection/Default/Cache/Cache_Data/f_00007b
T

392 lines
40 KiB
Plaintext

import { flatMap } from "/_nuxt/node_modules/.cache/vite/client/deps/lodash-es.js?v=e4f18c29";
/**
* Speckle role constants
* - Stream - user roles in the context of a specific stream
* - Server - user roles in the context of the entire server
*/
export const Roles = Object.freeze({
Stream: {
Owner: 'stream:owner',
Contributor: 'stream:contributor',
Reviewer: 'stream:reviewer'
},
Workspace: {
Admin: 'workspace:admin',
Member: 'workspace:member',
Guest: 'workspace:guest'
},
Server: {
Admin: 'server:admin',
User: 'server:user',
Guest: 'server:guest',
ArchivedUser: 'server:archived-user'
}
});
export const RoleInfo = Object.freeze({
Stream: {
[Roles.Stream.Owner]: {
title: 'Owner',
description: 'Can edit project, including settings, collaborators and all models',
weight: 1000
},
[Roles.Stream.Contributor]: {
title: 'Can edit',
description: 'Can publish and load models from connectors and view and comment in the web viewer',
weight: 500
},
[Roles.Stream.Reviewer]: {
title: 'Can view',
description: 'Can view and comment on models in the web viewer',
weight: 100
}
},
Server: {
[Roles.Server.Admin]: {
title: 'Admin',
description: 'Can edit server, including settings, users and all projects',
weight: 1000
},
[Roles.Server.User]: {
title: 'User',
description: 'Can create and own projects',
weight: 100
},
[Roles.Server.Guest]: {
title: 'Guest',
description: "Can contribute to projects they're invited to",
weight: 50
},
[Roles.Server.ArchivedUser]: {
title: 'Archived',
description: 'Can no longer access server',
weight: 10
}
},
Workspace: {
[Roles.Workspace.Admin]: {
title: 'Admin',
description: 'Can edit workspace, including settings, members and all projects',
weight: 1000
},
[Roles.Workspace.Member]: {
title: 'Member',
description: 'Can create and own projects',
weight: 100
},
[Roles.Workspace.Guest]: {
title: 'Guest',
description: "Can contribute to projects they're invited to",
weight: 50
}
}
});
/**
* Workspace seat type constants
*/
export const SeatTypes = Object.freeze({
Editor: 'editor',
Viewer: 'viewer'
});
/**
* Speckle scope constants
* - Scopes define what kind of access has a user approved for a specific access token
*/
export const Scopes = Object.freeze({
Streams: {
Read: 'streams:read',
Write: 'streams:write'
},
Profile: {
Read: 'profile:read',
Write: 'profile:write',
Email: 'profile:email',
Delete: 'profile:delete'
},
Users: {
Read: 'users:read',
Email: 'users:email',
Invite: 'users:invite'
},
Server: {
Stats: 'server:stats',
Setup: 'server:setup'
},
Tokens: {
Read: 'tokens:read',
Write: 'tokens:write'
},
Apps: {
Read: 'apps:read',
Write: 'apps:write'
},
Automate: {
ReportResults: 'automate:report-results'
},
AutomateFunctions: {
Read: 'automate-functions:read',
Write: 'automate-functions:write'
},
Workspaces: {
Create: 'workspace:create',
Read: 'workspace:read',
Update: 'workspace:update',
Delete: 'workspace:delete'
},
Gatekeeper: {
WorkspaceBilling: 'workspace:billing'
}
});
/**
* All scopes
*/
export const AllScopes = flatMap(Scopes, (v) => Object.values(v));
export const isScope = (scope) => !!(scope && AllScopes.includes(scope));
export const SourceAppNames = [
'Advance Steel',
'Dynamo',
'Revit',
'AutoCAD',
'Civil3D',
'Blender',
'Rhino',
'Grasshopper',
'GSA',
'Excel',
'Unity',
'Unreal',
'Python',
'.NET',
'IFC',
'QGIS',
'ArcGIS',
'ETABS',
'PowerBI',
'SketchUp',
'SAP2000',
'CSiBridge',
'SAFE',
'Archicad',
'Tekla Structures',
'OpenRoads',
'OpenRail',
'OpenBuildings',
'MicroStation',
'Navisworks',
'Speckle Automate',
'TopSolid',
'File Import',
'Acc integration'
];
export const SourceApps = [
// ordering of the list is important.
// this will match all acc file importers
{ searchKey: '-acc', name: 'Acc integration', short: 'ACC', bgColor: '#3091e7' },
{
// this will match all rhino based file importers
searchKey: '-rhino-importer',
name: 'File Import',
short: '',
bgColor: '#3091e7'
},
{ searchKey: 'advancesteel', name: 'Advance Steel', short: 'AS', bgColor: '#a438b6' },
// deliberately keeping dynamo in front of revit, so it preceeds it when resolving from the host app name
{ searchKey: 'dynamo', name: 'Dynamo', short: 'DYN', bgColor: '#a438b6' },
{ searchKey: 'revit', name: 'Revit', short: 'RVT', bgColor: '#3091e7' },
{ searchKey: 'autocad', name: 'AutoCAD', short: 'ACAD', bgColor: '#f0605e' },
{ searchKey: 'civil3d', name: 'Civil3D', short: 'C3D', bgColor: '#14c1d7' },
{ searchKey: 'blender', name: 'Blender', short: 'BLEND', bgColor: '#fb9514' },
{ searchKey: 'rhino', name: 'Rhino', short: 'RH', bgColor: '#141414' },
{ searchKey: 'grasshopper', name: 'Grasshopper', short: 'GH', bgColor: '#48974b' },
{ searchKey: 'excel', name: 'Excel', short: 'XLSX', bgColor: '#72c076' },
{ searchKey: 'unity', name: 'Unity', short: 'UNITY', bgColor: '#149e91' },
{ searchKey: 'unreal', name: 'Unreal', short: 'UE', bgColor: '#846256' },
{ searchKey: 'python', name: 'Python', short: 'PY', bgColor: '#fddb45' },
{ searchKey: 'net', name: '.NET', short: '.NET', bgColor: '#8531a9' },
{ searchKey: 'ifc', name: 'IFC', short: 'IFC', bgColor: '#bd2e2e' },
{ searchKey: 'qgis', name: 'QGIS', short: 'QGIS', bgColor: '#70e029' },
{ searchKey: 'gsa', name: 'GSA', short: 'GSA', bgColor: '#70e029' },
{ searchKey: 'arcgis', name: 'ArcGIS', short: 'AGIS', bgColor: '#3a6eff' },
{ searchKey: 'etabs', name: 'ETABS', short: 'EDB', bgColor: '#6d6d6d' },
{ searchKey: 'powerbi', name: 'PowerBI', short: 'PBI', bgColor: '#ffff96' },
{ searchKey: 'sketchup', name: 'SketchUp', short: 'SKP', bgColor: '#8cb7ff' },
{ searchKey: 'sap2000', name: 'SAP2000', short: 'SAP', bgColor: '#6d6d6d' },
{ searchKey: 'csibridge', name: 'CSiBridge', short: 'CSIB', bgColor: '#6d6d6d' },
{ searchKey: 'safe', name: 'SAFE', short: 'SAFE', bgColor: '#6d6d6d' },
{ searchKey: 'archicad', name: 'Archicad', short: 'ARCHI', bgColor: '#3091e7' },
{ searchKey: 'topsolid', name: 'TopSolid', short: 'TOPS', bgColor: '#3091e7' },
{
searchKey: 'teklastructures',
name: 'Tekla Structures',
short: 'TKL',
bgColor: '#3a6eff'
},
{ searchKey: 'openroads', name: 'OpenRoads', short: 'OROAD', bgColor: '#846256' },
{ searchKey: 'openrail', name: 'OpenRail', short: 'ORAIL', bgColor: '#846256' },
{
searchKey: 'openbuildings',
name: 'OpenBuildings',
short: 'OBUILD',
bgColor: '#846256'
},
{
searchKey: 'microstation',
name: 'MicroStation',
short: 'MICRO',
bgColor: '#846256'
},
{ searchKey: 'navisworks', name: 'Navisworks', bgColor: '#3e8742', short: 'NAVIS' },
{
searchKey: 'automate',
name: 'Speckle Automate',
bgColor: '#f85c56',
short: 'ATMAT'
}
];
export const WebhookTriggers = Object.freeze({
StreamUpdate: 'stream_update',
StreamDelete: 'stream_delete',
BranchCreate: 'branch_create',
BranchUpdate: 'branch_update',
BranchDelete: 'branch_delete',
CommitCreate: 'commit_create',
CommitUpdate: 'commit_update',
CommitReceive: 'commit_receive',
CommitDelete: 'commit_delete',
CommentCreated: 'comment_created',
CommentArchived: 'comment_archived',
CommentReplied: 'comment_replied',
StreamPermissionsAdd: 'stream_permissions_add',
StreamPermissionsRemove: 'stream_permissions_remove'
});
export const blockedDomains = [
// Common Free Email Providers
'gmail.com',
'yahoo.com',
'hotmail.com',
'outlook.com',
'live.com',
'aol.com',
'ymail.com',
'mail.com',
'protonmail.com',
'icloud.com',
'zoho.com',
'gmx.com',
'me.com',
'inbox.com',
// Temporary/Disposable Email Providers
'mailinator.com',
'10minutemail.com',
'guerrillamail.com',
'tempmail.com',
'yopmail.com',
'throwawaymail.com',
'temp-mail.org',
'maildrop.cc',
'getairmail.com',
'mintemail.com',
'fakemail.net',
'temp-mail.ru',
'moakt.com',
'emailondeck.com',
'spamgourmet.com',
'mailcatch.com',
'sharklasers.com',
'trashmail.com',
'mytrashmail.com',
'emailfake.com',
'fakeinbox.com',
'spamex.com',
'spambox.us',
'mailsac.com',
'fakemailgenerator.com',
'33mail.com',
'anonmails.de',
'anonbox.net',
'anonymousspeech.com',
'boun.cr',
'guerrillamailblock.com',
'mailfreeonline.com',
'temp-email.com',
'mailnesia.com',
'hmamail.com',
'fastmail.com',
'tmailinator.com',
'spam4.me',
'fakebox.com',
'emkei.cz',
'dispostable.com',
'mytemp.email',
'deadaddress.com',
'spamdecoy.net',
'0wnd.net',
'0wnd.org',
'10mail.org',
'20mail.it',
'20mail.in',
'24hourmail.com',
'2prong.com',
'3d-painting.com',
'4warding.com',
'4warding.net',
'4warding.org',
'5mail.cf',
'60minutemail.com',
'675hosting.com',
'675hosting.net',
'675hosting.org',
'6ip.us',
'6url.com',
'75hosting.com',
'75hosting.net',
'75hosting.org',
'7tags.com',
'9ox.net',
'a-bc.net',
'afrobacon.com',
'ajaxapp.net',
'amilegit.com',
'anonbox.net',
'antichef.com',
'antichef.net',
'antireg.ru',
'antispam.de',
'baxomale.ht.cx',
'beefmilk.com',
'binkmail.com',
'bio-muesli.net',
'bobmail.info',
'bofthew.com',
'brefmail.com',
'bsnow.net',
'bugmenot.com',
'bumpymail.com',
'casualdx.com',
'chogmail.com',
'cool.fr.nf',
'correo.blogos.net',
'cosmorph.com',
'courriel.fr.nf',
'cubiclink.com',
'curryworld.de',
'dacoolest.com',
'dandikmail.com',
'deadspam.com',
'despam.it',
'devnullmail.com',
'dfgh.net',
'digitalsanctuary.com',
'discardmail.com',
'dispose.it',
'disposableaddress.com',
'disposeamail.com',
'dispostable.com',
'dodgeit.com',
'dodgit.com',
'dodgit.org',
'dontreg.com',
'dontsendmespam.de'
];
export const blockedSlugs = ['actions'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFakM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFRO0lBQ3hDLE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRSxjQUFjO1FBQ3JCLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsUUFBUSxFQUFFLGlCQUFpQjtLQUM1QjtJQUNELFNBQVMsRUFBRTtRQUNULEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixLQUFLLEVBQUUsaUJBQWlCO0tBQ3pCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFLGNBQWM7UUFDckIsSUFBSSxFQUFFLGFBQWE7UUFDbkIsS0FBSyxFQUFFLGNBQWM7UUFDckIsWUFBWSxFQUFFLHNCQUFzQjtLQUNyQztDQUNGLENBQUMsQ0FBQTtBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFRO0lBQzNDLE1BQU0sRUFBRTtRQUNOLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQixLQUFLLEVBQUUsT0FBTztZQUNkLFdBQVcsRUFBRSxvRUFBb0U7WUFDakYsTUFBTSxFQUFFLElBQUk7U0FDYjtRQUNELENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMxQixLQUFLLEVBQUUsVUFBVTtZQUNqQixXQUFXLEVBQ1Qsb0ZBQW9GO1lBQ3RGLE1BQU0sRUFBRSxHQUFHO1NBQ1o7UUFDRCxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdkIsS0FBSyxFQUFFLFVBQVU7WUFDakIsV0FBVyxFQUFFLGtE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LEVBQUUsU0FBUyxFQUFFO0lBQ3pFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtJQUN4RSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7SUFDeEUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO0lBQ3JFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtJQUNuRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7SUFDdEUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO0lBQ25FLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtJQUMxRSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7SUFDdkUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO0lBQzNFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFL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QixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixlQUFlO0lBQ2YsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsV0FBVztJQUNYLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1Ysc0JBQXNCO0lBQ3RCLGlCQUFpQjtJQUNqQixZQUFZO0lBQ1osdUJBQXVCO0lBQ3ZCLGtCQUFrQjtJQUNsQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVk7SUFDWixZQUFZO0lBQ1osYUFBYTtJQUNiLG1CQUFtQjtDQUNwQixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFhLENBQUMsU0FBUyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbGF0TWFwIH0gZnJvbSAnI2xvZGFzaCdcclxuXHJcbi8qKlxyXG4gKiBTcGVja2xlIHJvbGUgY29uc3RhbnRzXHJcbiAqIC0gU3RyZWFtIC0gdXNlciByb2xlcyBpbiB0aGUgY29udGV4dCBvZiBhIHNwZWNpZmljIHN0cmVhbVxyXG4gKiAtIFNlcnZlciAtIHVzZXIgcm9sZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGVudGlyZSBzZXJ2ZXJcclxuICovXHJcbmV4cG9ydCBjb25zdCBSb2xlcyA9IE9iamVjdC5mcmVlemUoPGNvbnN0PntcclxuICBTdHJlYW06IHtcclxuICAgIE93bmVyOiAnc3RyZWFtOm93bmVyJyxcclxuICAgIENvbnRyaWJ1dG9yOiAnc3RyZWFtOmNvbnRyaWJ1dG9yJyxcclxuICAgIFJldmlld2VyOiAnc3RyZWFtOnJldmlld2VyJ1xyXG4gIH0sXHJcbiAgV29ya3NwYWNlOiB7XHJcbiAgICBBZG1pbjogJ3dvcmtzcGFjZTphZG1pbicsXHJcbiAgICBNZW1iZXI6ICd3b3Jrc3BhY2U6bWVtYmVyJyxcclxuICAgIEd1ZXN0OiAnd29ya3NwYWNlOmd1ZXN0J1xyXG4gIH0sXHJcbiAgU2VydmVyOiB7XHJcbiAgICBBZG1pbjogJ3NlcnZlcjphZG1pbicsXHJcbiAgICBVc2VyOiAnc2VydmVyOnVzZXInLFxyXG4gICAgR3Vlc3Q6ICdzZXJ2ZXI6Z3Vlc3QnLFxyXG4gICAgQXJjaGl2ZWRVc2VyOiAnc2VydmVyOmFyY2hpdmVkLXVzZXInXHJcbiAgfVxyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFJvbGVJbmZvID0gT2JqZWN0LmZyZWV6ZSg8Y29uc3Q+e1xyXG4gIFN0cmVhbToge1xyXG4gICAgW1JvbGVzLlN0cmVhbS5Pd25lcl06IHtcclxuICAgICAgdGl0bGU6ICdPd25lcicsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ2FuIGVkaXQgcHJvamVjdCwgaW5jbHVkaW5nIHNldHRpbmdzLCBjb2xsYWJvcmF0b3JzIGFuZCBhbGwgbW9kZWxzJyxcclxuICAgICAgd2VpZ2h0OiAxMDAwXHJcbiAgICB9LFxyXG4gICAgW1JvbGVzLlN0cmVhbS5Db250cmlidXRvcl06IHtcclxuICAgICAgdGl0bGU6ICdDYW4gZWRpdCcsXHJcbiAgICAgIGRlc2NyaXB0aW9uOlxyXG4gICAgICAgICdDYW4gcHVibGlzaCBhbmQgbG9hZCBtb2RlbHMgZnJvbSBjb25uZWN0b3JzIGFuZCB2aWV3IGFuZCBjb21tZW50IGluIHRoZSB3ZWIgdmlld2VyJyxcclxuICAgICAgd2VpZ2h0OiA1MDBcclxuICAgIH0sXHJcbiAgICBbUm9sZXMuU3RyZWFtLlJldmlld2VyXToge1xyXG4gICAgICB0aXRsZTogJ0NhbiB2aWV3JyxcclxuICAgICAgZGVzY3JpcHRpb246ICdDYW4gdmlldyBhbmQgY29tbWVudCBvbiBtb2RlbHMgaW4gdGhlIHdlYiB2aWV3ZXInLFxyXG4gICAgICB3ZWlnaHQ6IDEwMFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgU2VydmVyOiB7XHJcbiAgICBbUm9sZXMuU2VydmVyLkFkbWluXToge1xyXG4gICAgICB0aXRsZTogJ0FkbWluJyxcclxuICAgICAgZGVzY3JpcHRpb246ICdDYW4gZWRpdCBzZXJ2ZXIsIGluY2x1ZGluZyBzZXR0aW5ncywgdXNlcnMgYW5kIGFsbCBwcm9qZWN0cycsXHJcbiAgICAgIHdlaWdodDogMTAwMFxyXG4gICAgfSxcclxuICAgIFtSb2xlcy5TZXJ2ZXIuVXNlcl06IHtcclxuICAgICAgdGl0bGU6ICdVc2VyJyxcclxuICAgICAgZGVzY3JpcHRpb246ICdDYW4gY3JlYXRlIGFuZCBvd24gcHJvamVjdHMnLFxyXG4gICAgICB3ZWlnaHQ6IDEwMFxyXG4gICAgfSxcclxuICAgIFtSb2xlcy5TZXJ2ZXIuR3Vlc3RdOiB7XHJcbiAgICAgIHRpdGxlOiAnR3Vlc3QnLFxyXG4gICAgICBkZXNjcmlwdGlvbjogXCJDYW4gY29udHJpYnV0ZSB0byBwcm9qZWN0cyB0aGV5J3JlIGludml0ZWQgdG9cIixcclxuICAgICAgd2VpZ2h0OiA1MFxyXG4gICAgfSxcclxuICAgIFtSb2xlcy5TZXJ2ZXIuQXJjaGl2ZWRVc2VyXToge1xyXG4gICAgICB0aXRsZTogJ0FyY2hpdmVkJyxcclxuICAgICAgZGVzY3JpcHRpb246ICdDYW4gbm8gbG9uZ2VyIGFjY2VzcyBzZXJ2ZXInLFxyXG4gICAgICB3ZWlnaHQ6IDEwXHJcbiAgICB9XHJcbiAgfSxcclxuICBXb3Jrc3BhY2U6IHtcclxuICAgIFtSb2xlcy5Xb3Jrc3BhY2UuQWRtaW5dOiB7XHJcbiAgICAgIHRpdGxlOiAnQWRtaW4nLFxyXG4gICAgICBkZXNjcmlwdGlvbjogJ0NhbiBlZGl0IHdvcmtzcGFjZSwgaW5jbHVkaW5nIHNldHRpbmdzLCBtZW1iZXJzIGFuZCBhbGwgcHJvamVjdHMnLFxyXG4gICAgICB3ZWlnaHQ6IDEwMDBcclxuICAgIH0sXHJcbiAgICBbUm9sZXMuV29ya3NwYWNlLk1lbWJlcl06IHtcclxuICAgICAgdGl0bGU6ICdNZW1iZXInLFxyXG4gICAgICBkZXNjcmlwdGlvbjogJ0NhbiBjcmVhdGUgYW5kIG93biBwcm9qZWN0cycsXHJcbiAgICAgIHdlaWdodDogMTAwXHJcbiAgICB9LFxyXG4gICAgW1JvbGVzLldvcmtzcGFjZS5HdWVzdF06IHtcclxuICAgICAgdGl0bGU6ICdHdWVzdCcsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbiBjb250cmlidXRlIHRvIHByb2plY3RzIHRoZXkncmUgaW52aXRlZCB0b1wiLFxyXG4gICAgICB3ZWlnaHQ6IDUwXHJcbiAgICB9XHJcbiAgfVxyXG59KVxyXG5cclxuZXhwb3J0IHR5cGUgU2VydmVyUm9sZXMgPSAodHlwZW9mIFJvbGVzKVsnU2VydmVyJ11ba2V5b2YgKHR5cGVvZiBSb2xlcylbJ1NlcnZlciddXVxyXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VSb2xlcyA9XHJcbiAgKHR5cGVvZiBSb2xlcylbJ1dvcmtzcGFjZSddW2tleW9mICh0eXBlb2YgUm9sZXMpWydXb3Jrc3BhY2UnXV1cclxuZXhwb3J0IHR5cGUgU3RyZWFtUm9sZXMgPSAodHlwZW9mIFJvbGVzKVsnU3RyZWFtJ11ba2V5b2YgKHR5cGVvZiBSb2xlcylbJ1N0cmVhbSddXVxyXG5cclxuZXhwb3J0IHR5cGUgQXZhaWxhYmxlUm9sZXMgPSBTZXJ2ZXJSb2xlcyB8IFN0cmVhbVJvbGVzIHwgV29ya3NwYWNlUm9sZXNcclxuXHJcbi8qKlxyXG4gKiBXb3Jrc3BhY2Ugc2VhdCB0eXBlIGNvbnN0YW50c1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFNlYXRUeXBlcyA9IE9iamVjdC5mcmVlemUoPGNvbnN0PntcclxuICBFZGl0b3I6ICdlZGl0b3InLFxyXG4gIFZpZXdlcjogJ3ZpZXdlcidcclxufSlcclxuXHJcbmV4cG9ydCB0eXBlIFdvcmtzcGFjZVNlYXRUeXBlID0gKHR5cGVvZiBTZWF0VHlwZXMpW2tleW9mIHR5cGVvZiBTZWF0VHlwZXNdXHJcblxyXG4vKipcclxuICogU3BlY2tsZSBzY29wZSBjb25zdGFudHNcclxuICogLSBTY29wZXMgZGVmaW5lIHdoYXQga2luZCBvZiBhY2Nlc3MgaGFzIGEgdXNlciBhcHByb3ZlZCBmb3IgYSBzcGVjaWZpYyBhY2Nlc3MgdG9rZW5cclxuICovXHJcbmV4cG9ydCBjb25zdCBTY29wZXMgPSBPYmplY3QuZnJlZXplKDxjb25zdD57XHJcbiAgU3RyZWFtczoge1xyXG4gICAgUmVhZDogJ3N0cmVhbXM6cmVhZCcsXHJcbiAgICBXcml0ZTogJ3N0cmVhbXM6d3JpdGUnXHJcbiAgfSxcclxuICBQcm9maWxlOiB7XHJcbiAgICBSZWFkOiAncHJvZmlsZTpyZWFkJyxcclxuICAgIFdyaXRlOiAncHJvZmlsZTp3cml0ZScsXHJcbiAgICBFbWFpbDogJ3Byb2ZpbGU6ZW1haWwnLFxyXG4gICAgRGVsZXRlOiAncHJvZmlsZTpkZWxldGUnXHJcbiAgfSxcclxuICBVc2Vyczoge1xyXG4gICAgUmVhZDogJ3VzZXJzOnJlYWQnLFxyXG4gICAgRW1haWw6ICd1c2VyczplbWFpbCcsXHJcbiAgICBJbnZpdGU6ICd1c2VyczppbnZpdGUnXHJcbiAgfSxcclxuICBTZXJ2ZXI6IHtcclxuICAgIFN0YXRzOiAnc2VydmVyOnN0YXRzJyxcclxuICAgIFNldHVwOiAnc2VydmVyOnNldHVwJ1xyXG4gIH0sXHJcbiAgVG9rZW5zOiB7XHJcbiAgICBSZWFkOiAndG9rZW5zOnJlYWQnLFxyXG4gICAgV3JpdGU6ICd0b2tlbnM6d3JpdGUnXHJcbiAgfSxcclxuICBBcHBzOiB7XHJcbiAgICBSZWFkOiAnYXBwczpyZWFkJyxcclxuICAgIFdyaXRlOiAnYXBwczp3cml0ZSdcclxuICB9LFxyXG4gIEF1dG9tYXRlOiB7XHJcbiAgICBSZXBvcnRSZXN1bHRzOiAnYXV0b21hdGU6cmVwb3J0LXJlc3VsdHMnXHJcbiAgfSxcclxuICBBdXRvbWF0ZUZ1bmN0aW9uczoge1xyXG4gICAgUmVhZDogJ2F1dG9tYXRlLWZ1bmN0aW9uczpyZWFkJyxcclxuICAgIFdyaXRlOiAnYXV0b21hdGUtZnVuY3Rpb25zOndyaXRlJ1xyXG4gIH0sXHJcbiAgV29ya3NwYWNlczoge1xyXG4gICAgQ3JlYXRlOiAnd29ya3NwYWNlOmNyZWF0ZScsXHJcbiAgICBSZWFkOiAnd29ya3NwYWNlOnJlYWQnLFxyXG4gICAgVXBkYXRlOiAnd29ya3NwYWNlOnVwZGF0ZScsXHJcbiAgICBEZWxldGU6ICd3b3Jrc3BhY2U6ZGVsZXRlJ1xyXG4gIH0sXHJcbiAgR2F0ZWtlZXBlcjoge1xyXG4gICAgV29ya3NwYWNlQmlsbGluZzogJ3dvcmtzcGFjZTpiaWxsaW5nJ1xyXG4gIH1cclxufSlcclxuXHJcbmV4cG9ydCB0eXBlIFN0cmVhbVNjb3BlcyA9ICh0eXBlb2YgU2NvcGVzKVsnU3RyZWFtcyddW2tleW9mICh0eXBlb2YgU2NvcGVzKVsnU3RyZWFtcyddXVxyXG5leHBvcnQgdHlwZSBQcm9maWxlU2NvcGVzID0gKHR5cGVvZiBTY29wZXMpWydQcm9maWxlJ11ba2V5b2YgKHR5cGVvZiBTY29wZXMpWydQcm9maWxlJ11dXHJcbmV4cG9ydCB0eXBlIFVzZXJTY29wZXMgPSAodHlwZW9mIFNjb3BlcylbJ1VzZXJzJ11ba2V5b2YgKHR5cGVvZiBTY29wZXMpWydVc2VycyddXVxyXG5leHBvcnQgdHlwZSBTZXJ2ZXJTY29wZXMgPSAodHlwZW9mIFNjb3BlcylbJ1NlcnZlciddW2tleW9mICh0eXBlb2YgU2NvcGVzKVsnU2VydmVyJ11dXHJcbmV4cG9ydCB0eXBlIFRva2VuU2NvcGVzID0gKHR5cGVvZiBTY29wZXMpWydUb2tlbnMnXVtrZXlvZiAodHlwZW9mIFNjb3BlcylbJ1Rva2VucyddXVxyXG5leHBvcnQgdHlwZSBBcHBTY29wZXMgPSAodHlwZW9mIFNjb3BlcylbJ0FwcHMnXVtrZXlvZiAodHlwZW9mIFNjb3BlcylbJ0FwcHMnXV1cclxuZXhwb3J0IHR5cGUgQXV0b21hdGVTY29wZXMgPVxyXG4gICh0eXBlb2YgU2NvcGVzKVsnQXV0b21hdGUnXVtrZXlvZiAodHlwZW9mIFNjb3BlcylbJ0F1dG9tYXRlJ11dXHJcbmV4cG9ydCB0eXBlIEF1dG9tYXRlRnVuY3Rpb25TY29wZXMgPVxyXG4gICh0eXBlb2YgU2NvcGVzKVsnQXV0b21hdGVGdW5jdGlvbnMnXVtrZXlvZiAodHlwZW9mIFNjb3BlcylbJ0F1dG9tYXRlRnVuY3Rpb25zJ11dXHJcbmV4cG9ydCB0eXBlIFdvcmtzcGFjZVNjb3BlcyA9XHJcbiAgKHR5cGVvZiBTY29wZXMpWydXb3Jrc3BhY2VzJ11ba2V5b2YgKHR5cGVvZiBTY29wZXMpWydXb3Jrc3BhY2VzJ11dXHJcbmV4cG9ydCB0eXBlIEdhdGVrZWVwZXJTY29wZXMgPVxyXG4gICh0eXBlb2YgU2NvcGVzKVsnR2F0ZWtlZXBlciddW2tleW9mICh0eXBlb2YgU2NvcGVzKVsnR2F0ZWtlZXBlciddXVxyXG5cclxuZXhwb3J0IHR5cGUgQXZhaWxhYmxlU2NvcGVzID1cclxuICB8IFN0cmVhbVNjb3Blc1xyXG4gIHwgUHJvZmlsZVNjb3Blc1xyXG4gIHwgVXNlclNjb3Blc1xyXG4gIHwgU2VydmVyU2NvcGVzXHJcbiAgfCBUb2tlblNjb3Blc1xyXG4gIHwgQXBwU2NvcGVzXHJcbiAgfCBBdXRvbWF0ZVNjb3Blc1xyXG4gIHwgQXV0b21hdGVGdW5jdGlvblNjb3Blc1xyXG4gIHwgV29ya3NwYWNlU2NvcGVzXHJcblxyXG4vKipcclxuICogQWxsIHNjb3Blc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEFsbFNjb3BlcyA9IGZsYXRNYXAoU2NvcGVzLCAodikgPT4gT2JqZWN0LnZhbHVlcyh2KSlcclxuXHJcbmV4cG9ydCB0eXBlIFNlcnZlclNjb3BlID0gKHR5cGVvZiBBbGxTY29wZXMpW251bWJlcl1cclxuXHJcbmV4cG9ydCBjb25zdCBpc1Njb3BlID0gKHNjb3BlOiB1bmtub3duKTogc2NvcGUgaXMgU2VydmVyU2NvcGUgPT5cclxuICAhIShzY29wZSAmJiAoQWxsU2NvcGVzIGFzIHVua25vd25bXSkuaW5jbHVkZXMoc2NvcGUpKVxyXG5cclxuZXhwb3J0IGNvbnN0IFNvdXJjZUFwcE5hbWVzID0gW1xyXG4gICdBZHZhbmNlIFN0ZWVsJyxcclxuICAnRHluYW1vJyxcclxuICAnUmV2aXQnLFxyXG4gICdBdXRvQ0FEJyxcclxuICAnQ2l2aWwzRCcsXHJcbiAgJ0JsZW5kZXInLFxyXG4gICdSaGlubycsXHJcbiAgJ0dyYXNzaG9wcGVyJyxcclxuICAnR1NBJyxcclxuICAnRXhjZWwnLFxyXG4gICdVbml0eScsXHJcbiAgJ1VucmVhbCcsXHJcbiAgJ1B5dGhvbicsXHJcbiAgJy5ORVQnLFxyXG4gICdJRkMnLFxyXG4gICdRR0lTJyxcclxuICAnQXJjR0lTJyxcclxuICAnRVRBQlMnLFxyXG4gICdQb3dlckJJJyxcclxuICAnU2tldGNoVXAnLFxyXG4gICdTQVAyMDAwJyxcclxuICAnQ1NpQnJpZGdlJyxcclxuICAnU0FGRScsXHJcbiAgJ0FyY2hpY2FkJyxcclxuICAnVGVrbGEgU3RydWN0dXJlcycsXHJcbiAgJ09wZW5Sb2FkcycsXHJcbiAgJ09wZW5SYWlsJyxcclxuICAnT3BlbkJ1aWxkaW5ncycsXHJcbiAgJ01pY3JvU3RhdGlvbicsXHJcbiAgJ05hdmlzd29ya3MnLFxyXG4gICdTcGVja2xlIEF1dG9tYXRlJyxcclxuICAnVG9wU29saWQnLFxyXG4gICdGaWxlIEltcG9ydCcsXHJcbiAgJ0FjYyBpbnRlZ3JhdGlvbidcclxuXSBhcyBjb25zdFxyXG5cclxuZXhwb3J0IHR5cGUgU291cmNlQXBwTmFtZSA9ICh0eXBlb2YgU291cmNlQXBwTmFtZXMpW251bWJlcl1cclxuXHJcbmV4cG9ydCB0eXBlIFNvdXJjZUFwcERlZmluaXRpb24gPSB7XHJcbiAgLyoqXHJcbiAgICogU3RyaW5nIHRvIGxvb2sgZm9yIGluIGlucHV0IGFwcCBuYW1lcyB0byBtYXRjaCB0aGVtIHRvIGEgc3BlY2lmaWMgc291cmNlIGFwcFxyXG4gICAqIHRoaXMgaXMgYW4gZXFpdXZhbGVudCBvZiB0aGUgY29ubmVjdG9yIHNsdWdcclxuICAgKi9cclxuICBzZWFyY2hLZXk6IHN0cmluZ1xyXG5cclxuICAvKipcclxuICAgKiBGdWxsIG5hbWVcclxuICAgKi9cclxuICBuYW1lOiBTb3VyY2VBcHBOYW1lXHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3J0ZW5lZCBuYW1lXHJcbiAgICovXHJcbiAgc2hvcnQ6IHN0cmluZ1xyXG5cclxuICAvKipcclxuICAgKiBCRyBjb2xvciBoZXggY29kZSBmb3IgYmFkZ2VzXHJcbiAgICovXHJcbiAgYmdDb2xvcjogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBTb3VyY2VBcHBzOiBTb3VyY2VBcHBEZWZpbml0aW9uW10gPSBbXHJcbiAgLy8gb3JkZXJpbmcgb2YgdGhlIGxpc3QgaXMgaW1wb3J0YW50LlxyXG4gIC8vIHRoaXMgd2lsbCBtYXRjaCBhbGwgYWNjIGZpbGUgaW1wb3J0ZXJzXHJcbiAgeyBzZWFyY2hLZXk6ICctYWNjJywgbmFtZTogJ0FjYyBpbnRlZ3JhdGlvbicsIHNob3J0OiAnQUNDJywgYmdDb2xvcjogJyMzMDkxZTcnIH0sXHJcbiAge1xyXG4gICAgLy8gdGhpcyB3aWxsIG1hdGNoIGFsbCByaGlubyBiYXNlZCBmaWxlIGltcG9ydGVyc1xyXG4gICAgc2VhcmNoS2V5OiAnLXJoaW5vLWltcG9ydGVyJyxcclxuICAgIG5hbWU6ICdGaWxlIEltcG9ydCcsXHJcbiAgICBzaG9ydDogJycsXHJcbiAgICBiZ0NvbG9yOiAnIzMwOTFlNydcclxuICB9LFxyXG4gIHsgc2VhcmNoS2V5OiAnYWR2YW5jZXN0ZWVsJywgbmFtZTogJ0FkdmFuY2UgU3RlZWwnLCBzaG9ydDogJ0FTJywgYmdDb2xvcjogJyNhNDM4YjYnIH0sXHJcbiAgLy8gZGVsaWJlcmF0ZWx5IGtlZXBpbmcgZHluYW1vIGluIGZyb250IG9mIHJldml0LCBzbyBpdCBwcmVjZWVkcyBpdCB3aGVuIHJlc29sdmluZyBmcm9tIHRoZSBob3N0IGFwcCBuYW1lXHJcbiAgeyBzZWFyY2hLZXk6ICdkeW5hbW8nLCBuYW1lOiAnRHluYW1vJywgc2hvcnQ6ICdEWU4nLCBiZ0NvbG9yOiAnI2E0MzhiNicgfSxcclxuICB7IHNlYXJjaEtleTogJ3Jldml0JywgbmFtZTogJ1Jldml0Jywgc2hvcnQ6ICdSVlQnLCBiZ0NvbG9yOiAnIzMwOTFlNycgfSxcclxuICB7IHNlYXJjaEtleTogJ2F1dG9jYWQnLCBuYW1lOiAnQXV0b0NBRCcsIHNob3J0OiAnQUNBRCcsIGJnQ29sb3I6ICcjZjA2MDVlJyB9LFxyXG4gIHsgc2VhcmNoS2V5OiAnY2l2aWwzZCcsIG5hbWU6ICdDaXZpbDNEJywgc2hvcnQ6ICdDM0QnLCBiZ0NvbG9yOiAnIzE0YzFkNycgfSxcclxuICB7IHNlYXJjaEtleTogJ2JsZW5kZXInLCBuYW1lOiAnQmxlbmRlcicsIHNob3J0OiAnQkxFTkQnLCBiZ0NvbG9yOiAnI2ZiOTUxNCcgfSxcclxuICB7IHNlYXJjaEtleTogJ3JoaW5vJywgbmFtZTogJ1JoaW5vJywgc2hvcnQ6ICdSSCcsIGJnQ29sb3I6ICcjMTQxNDE0JyB9LFxyXG4gIHsgc2VhcmNoS2V5OiAnZ3Jhc3Nob3BwZXInLCBuYW1lOiAnR3Jhc3Nob3BwZXInLCBzaG9ydDogJ0dIJywgYmdDb2xvcjogJyM0ODk3NGInIH0sXHJcbiAgeyBzZWFyY2hLZXk6ICdleGNlbCcsIG5hbWU6ICdFeGNlbCcsIHNob3J0OiAnWExTWCcsIGJnQ29sb3I6ICcjNzJjMDc2JyB9LFxyXG4gIHsgc2VhcmNoS2V5OiAndW5pdHknLCBuYW1lOiAnVW5pdHknLCBzaG9ydDogJ1VOSVRZJywgYmdDb2xvcjogJyMxNDllOTEnIH0sXHJcbiAgeyBzZWFyY2hLZXk6ICd1bnJlYWwnLCBuYW1lOiAnVW5yZWFsJywgc2hvcnQ6ICdVRScsIGJnQ29sb3I6ICcjODQ2MjU2JyB9LFxyXG4gIHsgc2VhcmNoS2V5OiAncHl0aG9uJywgbmFtZTogJ1B5dGhvbicsIHNob3J0OiAnUFknLCBiZ0NvbG9yOiAnI2ZkZGI0NScgfSxcclxuICB7IHNlYXJjaEtleTogJ25ldCcsIG5hbWU6ICcuTkVUJywgc2hvcnQ6ICcuTkVUJywgYmdDb2xvcjogJyM4NTMxYTknIH0sXHJcbiAgeyBzZWFyY2hLZXk6ICdpZmMnLCBuYW1lOiAnSUZDJywgc2hvcnQ6ICdJRkMnLCBiZ0NvbG9yOiAnI2JkMmUyZScgfSxcclxuICB7IHNlYXJjaEtleTogJ3FnaXMnLCBuYW1lOiAnUUdJUycsIHNob3J0OiAnUUdJUycsIGJnQ29sb3I6ICcjNzBlMDI5JyB9LFxyXG4gIHsgc2VhcmNoS2V5OiAnZ3NhJywgbmFtZTogJ0dTQScsIHNob3J0OiAnR1NBJywgYmdDb2xvcjogJyM3MGUwMjknIH0sXHJcbiAgeyBzZWFyY2hLZXk6ICdhcmNnaXMnLCBuYW1lOiAnQXJjR0lTJywgc2hvcnQ6ICdBR0lTJywgYmdDb2xvcjogJyMzYTZlZmYnIH0sXHJcbiAgeyBzZWFyY2hLZXk6ICdldGFicycsIG5hbWU6ICdFVEFCUycsIHNob3J0OiAnRURCJywgYmdDb2xvcjogJyM2ZDZkNmQnIH0sXHJcbiAgeyBzZWFyY2hLZXk6ICdwb3dlcmJpJywgbmFtZTogJ1Bvd2VyQkknLCBzaG9ydDogJ1BCSScsIGJnQ29sb3I6ICcjZmZmZjk2JyB9LFxyXG4gIHsgc2VhcmNoS2V5OiAnc2tldGNodXAnLCBuYW1lOiAnU2tldGNoVXAnLCBzaG9ydDogJ1NLUCcsIGJnQ29sb3I6ICcjOGNiN2ZmJyB9LFxyXG4gIHsgc2VhcmNoS2V5OiAnc2FwMjAwMCcsIG5hbWU6ICdTQVAyMDAwJywgc2hvcnQ6ICdTQVAnLCBiZ0NvbG9yOiAnIzZkNmQ2ZCcgfSxcclxuICB7IHNlYXJjaEtleTogJ2NzaWJyaWRnZScsIG5hbWU6ICdDU2lCcmlkZ2UnLCBzaG9ydDogJ0NTSUInLCBiZ0NvbG9yOiAnIzZkNmQ2ZCcgfSxcclxuICB7IHNlYXJjaEtleTogJ3NhZmUnLCBuYW1lOiAnU0FGRScsIHNob3J0OiAnU0FGRScsIGJnQ29sb3I6ICcjNmQ2ZDZkJyB9LFxyXG4gIHsgc2VhcmNoS2V5OiAnYXJjaGljYWQnLCBuYW1lOiAnQXJjaGljYWQnLCBzaG9ydDogJ0FSQ0hJJywgYmdDb2xvcjogJyMzMDkxZTcnIH0sXHJcbiAgeyBzZWFyY2hLZXk6ICd0b3Bzb2xpZCcsIG5hbWU6ICdUb3BTb2xpZCcsIHNob3J0OiAnVE9QUycsIGJnQ29sb3I6ICcjMzA5MWU3JyB9LFxyXG4gIHtcclxuICAgIHNlYXJjaEtleTogJ3Rla2xhc3RydWN0dXJlcycsXHJcbiAgICBuYW1lOiAnVGVrbGEgU3RydWN0dXJlcycsXHJcbiAgICBzaG9ydDogJ1RLTCcsXHJcbiAgICBiZ0NvbG9yOiAnIzNhNmVmZidcclxuICB9LFxyXG4gIHsgc2VhcmNoS2V5OiAnb3BlbnJvYWRzJywgbmFtZTogJ09wZW5Sb2FkcycsIHNob3J0OiAnT1JPQUQnLCBiZ0NvbG9yOiAnIzg0NjI1NicgfSxcclxuICB7IHNlYXJjaEtleTogJ29wZW5yYWlsJywgbmFtZTogJ09wZW5SYWlsJywgc2hvcnQ6ICdPUkFJTCcsIGJnQ29sb3I6ICcjODQ2MjU2JyB9LFxyXG4gIHtcclxuICAgIHNlYXJjaEtleTogJ29wZW5idWlsZGluZ3MnLFxyXG4gICAgbmFtZTogJ09wZW5CdWlsZGluZ3MnLFxyXG4gICAgc2hvcnQ6ICdPQlVJTEQnLFxyXG4gICAgYmdDb2xvcjogJyM4NDYyNTYnXHJcbiAgfSxcclxuICB7XHJcbiAgICBzZWFyY2hLZXk6ICdtaWNyb3N0YXRpb24nLFxyXG4gICAgbmFtZTogJ01pY3JvU3RhdGlvbicsXHJcbiAgICBzaG9ydDogJ01JQ1JPJyxcclxuICAgIGJnQ29sb3I6ICcjODQ2MjU2J1xyXG4gIH0sXHJcbiAgeyBzZWFyY2hLZXk6ICduYXZpc3dvcmtzJywgbmFtZTogJ05hdmlzd29ya3MnLCBiZ0NvbG9yOiAnIzNlODc0MicsIHNob3J0OiAnTkFWSVMnIH0sXHJcbiAge1xyXG4gICAgc2VhcmNoS2V5OiAnYXV0b21hdGUnLFxyXG4gICAgbmFtZTogJ1NwZWNrbGUgQXV0b21hdGUnLFxyXG4gICAgYmdDb2xvcjogJyNmODVjNTYnLFxyXG4gICAgc2hvcnQ6ICdBVE1BVCdcclxuICB9XHJcbl1cclxuXHJcbmV4cG9ydCBjb25zdCBXZWJob29rVHJpZ2dlcnMgPSBPYmplY3QuZnJlZXplKDxjb25zdD57XHJcbiAgU3RyZWFtVXBkYXRlOiAnc3RyZWFtX3VwZGF0ZScsXHJcbiAgU3RyZWFtRGVsZXRlOiAnc3RyZWFtX2RlbGV0ZScsXHJcbiAgQnJhbmNoQ3JlYXRlOiAnYnJhbmNoX2NyZWF0ZScsXHJcbiAgQnJhbmNoVXBkYXRlOiAnYnJhbmNoX3VwZGF0ZScsXHJcbiAgQnJhbmNoRGVsZXRlOiAnYnJhbmNoX2RlbGV0ZScsXHJcbiAgQ29tbWl0Q3JlYXRlOiAnY29tbWl0X2NyZWF0ZScsXHJcbiAgQ29tbWl0VXBkYXRlOiAnY29tbWl0X3VwZGF0ZScsXHJcbiAgQ29tbWl0UmVjZWl2ZTogJ2NvbW1pdF9yZWNlaXZlJyxcclxuICBDb21taXREZWxldGU6ICdjb21taXRfZGVsZXRlJyxcclxuICBDb21tZW50Q3JlYXRlZDogJ2NvbW1lbnRfY3JlYXRlZCcsXHJcbiAgQ29tbWVudEFyY2hpdmVkOiAnY29tbWVudF9hcmNoaXZlZCcsXHJcbiAgQ29tbWVudFJlcGxpZWQ6ICdjb21tZW50X3JlcGxpZWQnLFxyXG4gIFN0cmVhbVBlcm1pc3Npb25zQWRkOiAnc3RyZWFtX3Blcm1pc3Npb25zX2FkZCcsXHJcbiAgU3RyZWFtUGVybWlzc2lvbnNSZW1vdmU6ICdzdHJlYW1fcGVybWlzc2lvbnNfcmVtb3ZlJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IGJsb2NrZWREb21haW5zOiBzdHJpbmdbXSA9IFtcclxuICAvLyBDb21tb24gRnJlZSBFbWFpbCBQcm92aWRlcnNcclxuICAnZ21haWwuY29tJyxcclxuICAneWFob28uY29tJyxcclxuICAnaG90bWFpbC5jb20nLFxyXG4gICdvdXRsb29rLmNvbScsXHJcbiAgJ2xpdmUuY29tJyxcclxuICAnYW9sLmNvbScsXHJcbiAgJ3ltYWlsLmNvbScsXHJcbiAgJ21haWwuY29tJyxcclxuICAncHJvdG9ubWFpbC5jb20nLFxyXG4gICdpY2xvdWQuY29tJyxcclxuICAnem9oby5jb20nLFxyXG4gICdnbXguY29tJyxcclxuICAnbWUuY29tJyxcclxuICAnaW5ib3guY29tJyxcclxuXHJcbiAgLy8gVGVtcG9yYXJ5L0Rpc3Bvc2FibGUgRW1haWwgUHJvdmlkZXJzXHJcbiAgJ21haWxpbmF0b3IuY29tJyxcclxuICAnMTBtaW51dGVtYWlsLmNvbScsXHJcbiAgJ2d1ZXJyaWxsYW1haWwuY29tJyxcclxuICAndGVtcG1haWwuY29tJyxcclxuICAneW9wbWFpbC5jb20nLFxyXG4gICd0aHJvd2F3YXltYWlsLmNvbScsXHJcbiAgJ3RlbXAtbWFpbC5vcmcnLFxyXG4gICdtYWlsZHJvcC5jYycsXHJcbiAgJ2dldGFpcm1haWwuY29tJyxcclxuICAnbWludGVtYWlsLmNvbScsXHJcbiAgJ2Zha2VtYWlsLm5ldCcsXHJcbiAgJ3RlbXAtbWFpbC5ydScsXHJcbiAgJ21vYWt0LmNvbScsXHJcbiAgJ2VtYWlsb25kZWNrLmNvbScsXHJcbiAgJ3NwYW1nb3VybWV0LmNvbScsXHJcbiAgJ21haWxjYXRjaC5jb20nLFxyXG4gICdzaGFya2xhc2Vycy5jb20nLFxyXG4gICd0cmFzaG1haWwuY29tJyxcclxuICAnbXl0cmFzaG1haWwuY29tJyxcclxuICAnZW1haWxmYWtlLmNvbScsXHJcbiAgJ2Zha2VpbmJveC5jb20nLFxyXG4gICdzcGFtZXguY29tJyxcclxuICAnc3BhbWJveC51cycsXHJcbiAgJ21haWxzYWMuY29tJyxcclxuICAnZmFrZW1haWxnZW5lcmF0b3IuY29tJyxcclxuICAnMzNtYWlsLmNvbScsXHJcbiAgJ2Fub25tYWlscy5kZScsXHJcbiAgJ2Fub25ib3gubmV0JyxcclxuICAnYW5vbnltb3Vzc3BlZWNoLmNvbScsXHJcbiAgJ2JvdW4uY3InLFxyXG4gICdndWVycmlsbGFtYWlsYmxvY2suY29tJyxcclxuICAnbWFpbGZyZWVvbmxpbmUuY29tJyxcclxuICAndGVtcC1lbWFpbC5jb20nLFxyXG4gICdtYWlsbmVzaWEuY29tJyxcclxuICAnaG1hbWFpbC5jb20nLFxyXG4gICdmYXN0bWFpbC5jb20nLFxyXG4gICd0bWFpbGluYXRvci5jb20nLFxyXG4gICdzcGFtNC5tZScsXHJcbiAgJ2Zha2Vib3guY29tJyxcclxuICAnZW1rZWkuY3onLFxyXG4gICdkaXNwb3N0YWJsZS5jb20nLFxyXG4gICdteXRlbXAuZW1haWwnLFxyXG4gICdkZWFkYWRkcmVzcy5jb20nLFxyXG4gICdzcGFtZGVjb3kubmV0JyxcclxuICAnMHduZC5uZXQnLFxyXG4gICcwd25kLm9yZycsXHJcbiAgJzEwbWFpbC5vcmcnLFxyXG4gICcyMG1haWwuaXQnLFxyXG4gICcyMG1haWwuaW4nLFxyXG4gICcyNGhvdXJtYWlsLmNvbScsXHJcbiAgJzJwcm9uZy5jb20nLFxyXG4gICczZC1wYWludGluZy5jb20nLFxyXG4gICc0d2FyZGluZy5jb20nLFxyXG4gICc0d2FyZGluZy5uZXQnLFxyXG4gICc0d2FyZGluZy5vcmcnLFxyXG4gICc1bWFpbC5jZicsXHJcbiAgJzYwbWludXRlbWFpbC5jb20nLFxyXG4gICc2NzVob3N0aW5nLmNvbScsXHJcbiAgJzY3NWhvc3RpbmcubmV0JyxcclxuICAnNjc1aG9zdGluZy5vcmcnLFxyXG4gICc2aXAudXMnLFxyXG4gICc2dXJsLmNvbScsXHJcbiAgJzc1aG9zdGluZy5jb20nLFxyXG4gICc3NWhvc3RpbmcubmV0JyxcclxuICAnNzVob3N0aW5nLm9yZycsXHJcbiAgJzd0YWdzLmNvbScsXHJcbiAgJzlveC5uZXQnLFxyXG4gICdhLWJjLm5ldCcsXHJcbiAgJ2Fmcm9iYWNvbi5jb20nLFxyXG4gICdhamF4YXBwLm5ldCcsXHJcbiAgJ2FtaWxlZ2l0LmNvbScsXHJcbiAgJ2Fub25ib3gubmV0JyxcclxuICAnYW50aWNoZWYuY29tJyxcclxuICAnYW50aWNoZWYubmV0JyxcclxuICAnYW50aXJlZy5ydScsXHJcbiAgJ2FudGlzcGFtLmRlJyxcclxuICAnYmF4b21hbGUuaHQuY3gnLFxyXG4gICdiZWVmbWlsay5jb20nLFxyXG4gICdiaW5rbWFpbC5jb20nLFxyXG4gICdiaW8tbXVlc2xpLm5ldCcsXHJcbiAgJ2JvYm1haWwuaW5mbycsXHJcbiAgJ2JvZnRoZXcuY29tJyxcclxuICAnYnJlZm1haWwuY29tJyxcclxuICAnYnNub3cubmV0JyxcclxuICAnYnVnbWVub3QuY29tJyxcclxuICAnYnVtcHltYWlsLmNvbScsXHJcbiAgJ2Nhc3VhbGR4LmNvbScsXHJcbiAgJ2Nob2dtYWlsLmNvbScsXHJcbiAgJ2Nvb2wuZnIubmYnLFxyXG4gICdjb3JyZW8uYmxvZ29zLm5ldCcsXHJcbiAgJ2Nvc21vcnBoLmNvbScsXHJcbiAgJ2NvdXJyaWVsLmZyLm5mJyxcclxuICAnY3ViaWNsaW5rLmNvbScsXHJcbiAgJ2N1cnJ5d29ybGQuZGUnLFxyXG4gICdkYWNvb2xlc3QuY29tJyxcclxuICAnZGFuZGlrbWFpbC5jb20nLFxyXG4gICdkZWFkc3BhbS5jb20nLFxyXG4gICdkZXNwYW0uaXQnLFxyXG4gICdkZXZudWxsbWFpbC5jb20nLFxyXG4gICdkZmdoLm5ldCcsXHJcbiAgJ2RpZ2l0YWxzYW5jdHVhcnkuY29tJyxcclxuICAnZGlzY2FyZG1haWwuY29tJyxcclxuICAnZGlzcG9zZS5pdCcsXHJcbiAgJ2Rpc3Bvc2FibGVhZGRyZXNzLmNvbScsXHJcbiAgJ2Rpc3Bvc2VhbWFpbC5jb20nLFxyXG4gICdkaXNwb3N0YWJsZS5jb20nLFxyXG4gICdkb2RnZWl0LmNvbScsXHJcbiAgJ2RvZGdpdC5jb20nLFxyXG4gICdkb2RnaXQub3JnJyxcclxuICAnZG9udHJlZy5jb20nLFxyXG4gICdkb250c2VuZG1lc3BhbS5kZSdcclxuXVxyXG5cclxuZXhwb3J0IGNvbnN0IGJsb2NrZWRTbHVnczogc3RyaW5nW10gPSBbJ2FjdGlvbnMnXVxyXG4iXX0=