angular.module('degreedApp').directive('dgInputSchema', function () { return { scope: { items: '<' }, link: function (scope) { var itemList = []; // Normalize input data to schema format // Testing: https://search.google.com/structured-data/testing-tool // Supported formats: // https://schema.org/Article // https://schema.org/VideoObject // https://schema.org/Course // https://schema.org/Book // https://schema.org/OnDemandEvent function getSchema(items) { if (angular.isUndefined(items)) { return; } for (var i = 0; i < items.length; i++) { normalizeSchemaType(items[i].Name); for (var n = 0; n < items[i].Inputs.length; n++) { var data = {}, input = items[i].Inputs[n]; switch (input.InputType) { case 'Article': data = { '@type': 'ListItem', position: i + 1, item: { '@type': scope.schemaType, '@id': input.InternalUrl || input.Url, name: input.Title, headline: input.Title, thumbnailUrl: input.ImageUrl, datePublished: input.DatePublished, dateModified: input.DateModified, author: input.Author, mainEntityOfPage: { '@type': 'WebPage', '@id': input.Url }, provider: input.Author, url: input.InternalUrl || input.Url, articleBody: input.Summary, wordCount: input.DurationUnits, keywords: input.Tags } }; break; case 'Video': data = { '@type': 'ListItem', position: i + 1, item: { '@type': scope.schemaType, '@id': input.InternalUrl || input.Url, name: input.Title, author: input.Author, provider: input.ProviderName, url: input.InternalUrl, thumbnailUrl: input.ImageUrl, embedUrl: input.Url, uploadDate: input.DatePublished, description: input.Summary, duration: 'PT' + input.DurationUnits + 'S', keywords: input.Tags } }; break; case 'Course': data = { '@type': 'ListItem', position: i + 1, item: { '@type': scope.schemaType, '@id': input.InternalUrl || input.Url, name: input.Title, author: input.Author, provider: { '@type': 'Organization', name: input.ProviderName, url: input.Url, image: input.ImageUrl || '' }, url: input.InternalUrl || input.Url, description: input.Summary, thumbnailUrl: input.ImageUrl, timeRequired: 'PT' + input.DurationUnits + 'M', keywords: input.Tags } }; break; case 'Book': data = { '@type': 'ListItem', position: i + 1, item: { '@type': scope.schemaType, '@id': input.InternalUrl || input.Url, headline: input.Title, author: input.Author, url: input.InternalUrl || input.Url, thumbnailUrl: input.ImageUrl, numberOfPages: input.DurationUnits, text: input.Summary, keywords: input.Tags } }; break; case 'Episode': data = { '@type': 'ListItem', position: i + 1, item: { '@type': scope.schemaType, '@id': input.InternalUrl || input.Url, name: input.Title, performer: input.Author, director: input.ProviderName, url: input.InternalUrl || input.Url, image: { '@type': 'ImageObject', thumbnail: input.ImageUrl }, about: input.Summary, duration: 'PT' + input.DurationUnits + 'S', keywords: input.Tags } }; break; default: // http://schema.org/ItemList, or Thing generic data = { '@type': 'ListItem', position: i + 1, item: { '@type': scope.schemaType, '@id': input.InternalUrl || input.Url, name: input.Title, url: input.InternalUrl || input.Url } }; } itemList.push(data); } } var schemaData = { '@context': 'http://schema.org', '@type': ['ItemList', 'CreativeWork'], itemListElement: itemList }, inputSchemaScript = angular .element('') .html(JSON.stringify(schemaData)); angular.element('head').append(inputSchemaScript); } function normalizeSchemaType(type) { if (type === 'Video' || type === 'ExternalVideo') { scope.schemaType = 'VideoObject'; } else if (type === 'Episode' || type === 'ExternalPodcast') { scope.schemaType = 'OnDemandEvent'; } else if (type === 'ExternalBook') { scope.schemaType = 'Book'; } else { scope.schemaType = type; } } function init() { getSchema(scope.items); } init(); } }; }); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVtYS9pbnB1dHNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUU7SUFDdEQsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRSxHQUFHO1NBQ1g7UUFDRCxJQUFJLEVBQUUsVUFBUyxLQUFVO1lBQ3ZCLElBQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUVwQix3Q0FBd0M7WUFDeEMsa0VBQWtFO1lBRWxFLHFCQUFxQjtZQUNyQiw2QkFBNkI7WUFDN0IsaUNBQWlDO1lBQ2pDLDRCQUE0QjtZQUM1QiwwQkFBMEI7WUFDMUIsbUNBQW1DO1lBRW5DLFNBQVMsU0FBUyxDQUFDLEtBQUs7Z0JBQ3RCLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDOUIsT0FBTztpQkFDUjtnQkFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDckMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQy9DLElBQUksSUFBSSxHQUFHLEVBQUUsRUFDWCxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDN0IsUUFBUSxLQUFLLENBQUMsU0FBUyxFQUFFOzRCQUN2QixLQUFLLFNBQVM7Z0NBQ1osSUFBSSxHQUFHO29DQUNMLE9BQU8sRUFBRSxVQUFVO29DQUNuQixRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUM7b0NBQ2YsSUFB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Q0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO2lCQUNwQztxQkFBTSxJQUFJLElBQUksS0FBSyxjQUFjLEVBQUU7b0JBQ2xDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO2lCQUMzQjtxQkFBTTtvQkFDTCxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFDekI7WUFDSCxDQUFDO1lBRUQsU0FBUyxJQUFJO2dCQUNYLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUVELElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJzY2hlbWEvaW5wdXRTY2hlbWEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJhbmd1bGFyLm1vZHVsZSgnZGVncmVlZEFwcCcpLmRpcmVjdGl2ZSgnZGdJbnB1dFNjaGVtYScsIGZ1bmN0aW9uKCkge1xuICByZXR1cm4ge1xuICAgIHNjb3BlOiB7XG4gICAgICBpdGVtczogJzwnXG4gICAgfSxcbiAgICBsaW5rOiBmdW5jdGlvbihzY29wZTogYW55KSB7XG4gICAgICBjb25zdCBpdGVtTGlzdCA9IFtdO1xuXG4gICAgICAvLyBOb3JtYWxpemUgaW5wdXQgZGF0YSB0byBzY2hlbWEgZm9ybWF0XG4gICAgICAvLyBUZXN0aW5nOiBodHRwczovL3NlYXJjaC5nb29nbGUuY29tL3N0cnVjdHVyZWQtZGF0YS90ZXN0aW5nLXRvb2xcblxuICAgICAgLy8gU3VwcG9ydGVkIGZvcm1hdHM6XG4gICAgICAvLyBodHRwczovL3NjaGVtYS5vcmcvQXJ0aWNsZVxuICAgICAgLy8gaHR0cHM6Ly9zY2hlbWEub3JnL1ZpZGVvT2JqZWN0XG4gICAgICAvLyBodHRwczovL3NjaGVtYS5vcmcvQ291cnNlXG4gICAgICAvLyBodHRwczovL3NjaGVtYS5vcmcvQm9va1xuICAgICAgLy8gaHR0cHM6Ly9zY2hlbWEub3JnL09uRGVtYW5kRXZlbnRcblxuICAgICAgZnVuY3Rpb24gZ2V0U2NoZW1hKGl0ZW1zKSB7XG4gICAgICAgIGlmIChhbmd1bGFyLmlzVW5kZWZpbmVkKGl0ZW1zKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbm9ybWFsaXplU2NoZW1hVHlwZShpdGVtc1tpXS5OYW1lKTtcbiAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGl0ZW1zW2ldLklucHV0cy5sZW5ndGg7IG4rKykge1xuICAgICAgICAgICAgbGV0IGRhdGEgPSB7fSxcbiAgICAgICAgICAgICAgaW5wdXQgPSBpdGVtc1tpXS5JbnB1dHNbbl07XG4gICAgICAgICAgICBzd2l0Y2ggKGlucHV0LklucHV0VHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdBcnRpY2xlJzpcbiAgICAgICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0xpc3RJdGVtJyxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpICsgMSxcbiAgICAgICAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogc2NvcGUuc2NoZW1hVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgJ0BpZCc6IGlucHV0LkludGVybmFsVXJsIHx8IGlucHV0LlVybCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaW5wdXQuVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRsaW5lOiBpbnB1dC5UaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGh1bWJuYWlsVXJsOiBpbnB1dC5JbWFnZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVB1Ymxpc2hlZDogaW5wdXQuRGF0ZVB1Ymxpc2hlZCwgLy8gVE9ETzogUmVxdWlyZWQgZmllbGQsIG5lZWQgZGF0ZSBwdWJsaXNoZWRcbiAgICAgICAgICAgICAgICAgICAgZGF0ZU1vZGlmaWVkOiBpbnB1dC5EYXRlTW9kaWZpZWQsIC8vIFRPRE86IFJlY29tbWVuZGVkIGZpZWxkLCBuZWVkIGRhdGUgbW9kaWZpZWRcbiAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpbnB1dC5BdXRob3IsXG4gICAgICAgICAgICAgICAgICAgIG1haW5FbnRpdHlPZlBhZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnV2ViUGFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgJ0BpZCc6IGlucHV0LlVybFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlcjogaW5wdXQuQXV0aG9yLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGlucHV0LkludGVybmFsVXJsIHx8IGlucHV0LlVybCxcbiAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZUJvZHk6IGlucHV0LlN1bW1hcnksXG4gICAgICAgICAgICAgICAgICAgIHdvcmRDb3VudDogaW5wdXQuRHVyYXRpb25Vbml0cyxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IGlucHV0LlRhZ3NcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdWaWRlbyc6XG4gICAgICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICdAdHlwZSc6ICdMaXN0SXRlbScsXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSArIDEsXG4gICAgICAgICAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICAgICAgICAgICdAdHlwZSc6IHNjb3BlLnNjaGVtYVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICdAaWQnOiBpbnB1dC5JbnRlcm5hbFVybCB8fCBpbnB1dC5VcmwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGlucHV0LlRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBhdXRob3I6IGlucHV0LkF1dGhvcixcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXI6IGlucHV0LlByb3ZpZGVyTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpbnB1dC5JbnRlcm5hbFVybCxcbiAgICAgICAgICAgICAgICAgICAgdGh1bWJuYWlsVXJsOiBpbnB1dC5JbWFnZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW1iZWRVcmw6IGlucHV0LlVybCxcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkRGF0ZTogaW5wdXQuRGF0ZVB1Ymxpc2hlZCwgLy8gVE9ETzogUmVxdWlyZWQgZmllbGQsIG5lZWQgZGF0ZSBwdWJsaXNoZWRcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGlucHV0LlN1bW1hcnksXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAnUFQnICsgaW5wdXQuRHVyYXRpb25Vbml0cyArICdTJyxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IGlucHV0LlRhZ3NcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdDb3Vyc2UnOlxuICAgICAgICAgICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGkgKyAxLFxuICAgICAgICAgICAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiBzY29wZS5zY2hlbWFUeXBlLFxuICAgICAgICAgICAgICAgICAgICAnQGlkJzogaW5wdXQuSW50ZXJuYWxVcmwgfHwgaW5wdXQuVXJsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dC5UaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpbnB1dC5BdXRob3IsXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ09yZ2FuaXphdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogaW5wdXQuUHJvdmlkZXJOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIHVybDogaW5wdXQuVXJsLFxuICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiBpbnB1dC5JbWFnZVVybCB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGlucHV0LkludGVybmFsVXJsIHx8IGlucHV0LlVybCxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGlucHV0LlN1bW1hcnksXG4gICAgICAgICAgICAgICAgICAgIHRodW1ibmFpbFVybDogaW5wdXQuSW1hZ2VVcmwsXG4gICAgICAgICAgICAgICAgICAgIHRpbWVSZXF1aXJlZDogJ1BUJyArIGlucHV0LkR1cmF0aW9uVW5pdHMgKyAnTScsXG4gICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiBpbnB1dC5UYWdzXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnQm9vayc6XG4gICAgICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICdAdHlwZSc6ICdMaXN0SXRlbScsXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSArIDEsXG4gICAgICAgICAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICAgICAgICAgICdAdHlwZSc6IHNjb3BlLnNjaGVtYVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICdAaWQnOiBpbnB1dC5JbnRlcm5hbFVybCB8fCBpbnB1dC5VcmwsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRsaW5lOiBpbnB1dC5UaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpbnB1dC5BdXRob3IsXG4gICAgICAgICAgICAgICAgICAgIHVybDogaW5wdXQuSW50ZXJuYWxVcmwgfHwgaW5wdXQuVXJsLFxuICAgICAgICAgICAgICAgICAgICB0aHVtYm5haWxVcmw6IGlucHV0LkltYWdlVXJsLFxuICAgICAgICAgICAgICAgICAgICBudW1iZXJPZlBhZ2VzOiBpbnB1dC5EdXJhdGlvblVuaXRzLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpbnB1dC5TdW1tYXJ5LFxuICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogaW5wdXQuVGFnc1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ0VwaXNvZGUnOlxuICAgICAgICAgICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGkgKyAxLFxuICAgICAgICAgICAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiBzY29wZS5zY2hlbWFUeXBlLFxuICAgICAgICAgICAgICAgICAgICAnQGlkJzogaW5wdXQuSW50ZXJuYWxVcmwgfHwgaW5wdXQuVXJsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dC5UaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWVyOiBpbnB1dC5BdXRob3IsXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yOiBpbnB1dC5Qcm92aWRlck5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHVybDogaW5wdXQuSW50ZXJuYWxVcmwgfHwgaW5wdXQuVXJsLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZToge1xuICAgICAgICAgICAgICAgICAgICAgICdAdHlwZSc6ICdJbWFnZU9iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgdGh1bWJuYWlsOiBpbnB1dC5JbWFnZVVybFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhYm91dDogaW5wdXQuU3VtbWFyeSxcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246ICdQVCcgKyBpbnB1dC5EdXJhdGlvblVuaXRzICsgJ1MnLFxuICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogaW5wdXQuVGFnc1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL3NjaGVtYS5vcmcvSXRlbUxpc3QsIG9yIFRoaW5nIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0xpc3RJdGVtJyxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpICsgMSxcbiAgICAgICAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogc2NvcGUuc2NoZW1hVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgJ0BpZCc6IGlucHV0LkludGVybmFsVXJsIHx8IGlucHV0LlVybCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaW5wdXQuVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHVybDogaW5wdXQuSW50ZXJuYWxVcmwgfHwgaW5wdXQuVXJsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW1MaXN0LnB1c2goZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjaGVtYURhdGEgPSB7XG4gICAgICAgICAgICAnQGNvbnRleHQnOiAnaHR0cDovL3NjaGVtYS5vcmcnLFxuICAgICAgICAgICAgJ0B0eXBlJzogWydJdGVtTGlzdCcsICdDcmVhdGl2ZVdvcmsnXSxcbiAgICAgICAgICAgIGl0ZW1MaXN0RWxlbWVudDogaXRlbUxpc3RcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlucHV0U2NoZW1hU2NyaXB0ID0gYW5ndWxhclxuICAgICAgICAgICAgLmVsZW1lbnQoXG4gICAgICAgICAgICAgICc8c2NyaXB0IGlkPVwiaW5wdXRTY2hlbWFcIiB0eXBlPVwiYXBwbGljYXRpb24vbGQranNvblwiPjwvc2NyaXB0PidcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5odG1sKEpTT04uc3RyaW5naWZ5KHNjaGVtYURhdGEpKTtcbiAgICAgICAgYW5ndWxhci5lbGVtZW50KCdoZWFkJykuYXBwZW5kKGlucHV0U2NoZW1hU2NyaXB0KTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gbm9ybWFsaXplU2NoZW1hVHlwZSh0eXBlKSB7XG4gICAgICAgIGlmICh0eXBlID09PSAnVmlkZW8nIHx8IHR5cGUgPT09ICdFeHRlcm5hbFZpZGVvJykge1xuICAgICAgICAgIHNjb3BlLnNjaGVtYVR5cGUgPSAnVmlkZW9PYmplY3QnO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdFcGlzb2RlJyB8fCB0eXBlID09PSAnRXh0ZXJuYWxQb2RjYXN0Jykge1xuICAgICAgICAgIHNjb3BlLnNjaGVtYVR5cGUgPSAnT25EZW1hbmRFdmVudCc7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ0V4dGVybmFsQm9vaycpIHtcbiAgICAgICAgICBzY29wZS5zY2hlbWFUeXBlID0gJ0Jvb2snO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjb3BlLnNjaGVtYVR5cGUgPSB0eXBlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIGdldFNjaGVtYShzY29wZS5pdGVtcyk7XG4gICAgICB9XG5cbiAgICAgIGluaXQoKTtcbiAgICB9XG4gIH07XG59KTtcbiJdfQ==