UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

112 lines (110 loc) 21.9 kB
/* * Copyright (c) 2019 by Filestack. * Some rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import * as utils from './utils'; import { Readable } from 'stream'; var printLog = function (status, name, value) { return "".concat(name, " should return ").concat(status, " when value is ").concat(value); }; describe('Request/Utils', function () { describe('isArray', function () { it(printLog(true, 'isArray', "['value']"), function () { return expect(utils.isArray(['value'])).toBeTruthy(); }); it(printLog(true, 'isArray', '[]'), function () { return expect(utils.isArray([])).toBeTruthy(); }); // @ts-ignore it(printLog(true, 'isArray', ''), function () { return expect(utils.isArray()).toBeFalsy(); }); // @ts-ignore it(printLog(true, 'isArray', null), function () { return expect(utils.isArray(null)).toBeFalsy(); }); }); describe('isArrayBuffer', function () { it(printLog(true, 'isArrayBuffer', 'new ArrayBuffer(10)'), function () { expect(utils.isArrayBuffer(new ArrayBuffer(10))).toBeTruthy(); }); it(printLog(true, 'isArrayBuffer', ''), function () { // @ts-ignore expect(utils.isArrayBuffer()).toBeFalsy(); }); }); // isBuffer describe('isBuffer', function () { it(printLog(true, 'isBuffer', ''), function () { // @ts-ignore expect(utils.isBuffer(null)).toBeFalsy(); }); it(printLog(true, 'isBuffer', ''), function () { // @ts-ignore expect(utils.isBuffer(Buffer.alloc(10))).toBeTruthy(); }); }); describe('isArrayBufferView', function () { it(printLog(true, 'isArrayBufferView', 'new DataView(new ArrayBuffer(10))'), function () { expect(utils.isArrayBufferView(new DataView(new ArrayBuffer(10)))).toBeTruthy(); }); it(printLog(true, 'isArrayBufferView', null), function () { // @ts-ignore expect(utils.isArrayBufferView(null)).toBeFalsy(); }); it(printLog(true, 'isArrayBufferView', null), function () { // @ts-ignore expect(utils.isArrayBufferView(Buffer.alloc(10))).toBeTruthy(); }); }); describe('isObject', function () { it(printLog(true, 'isObject', "{prop: 'value'}"), function () { return expect(utils.isObject({ prop: 'value' })).toBeTruthy(); }); it(printLog(false, 'isObject', "'value'"), function () { return expect(utils.isObject('value')).toBeFalsy(); }); it(printLog(false, 'isObject', '10'), function () { return expect(utils.isObject(10)).toBeFalsy(); }); }); describe('isString', function () { it(printLog(true, 'isString', "'value'"), function () { return expect(utils.isString('value')).toBeTruthy(); }); it(printLog(false, 'isString', '10'), function () { return expect(utils.isString(10)).toBeFalsy(); }); it(printLog(false, 'isString', '{}'), function () { return expect(utils.isString({})).toBeFalsy(); }); it(printLog(false, 'isString', '[]'), function () { return expect(utils.isString([])).toBeFalsy(); }); it(printLog(false, 'isString', 'false'), function () { return expect(utils.isString(false)).toBeFalsy(); }); }); describe('isFile', function () { it(printLog(false, 'isFile', null), function () { return expect(utils.isFile(null)).toBeFalsy(); }); }); describe('isBlob', function () { it(printLog(false, 'isBlob', null), function () { return expect(utils.isBlob(null)).toBeFalsy(); }); }); describe('isStream', function () { it(printLog(true, 'isStream', 'Stream.Readable()'), function () { var stream = new Readable(); stream._read = function () { return ''; }; stream.push('beep'); expect(utils.isStream(stream)).toBeTruthy(); }); it(printLog(true, 'isStream', "'value'"), function () { return expect(utils.isStream('value')).toBeFalsy(); }); it(printLog(true, 'isStream', '10'), function () { return expect(utils.isStream(10)).toBeFalsy(); }); it(printLog(true, 'isStream', '[]'), function () { return expect(utils.isStream([])).toBeFalsy(); }); }); describe('isURLSearchParams', function () { it(printLog(true, 'isURLSearchParams', "new URLSearchParams('q=filename=&size=12')"), function () { expect(utils.isURLSearchParams(new URLSearchParams('q=filename=&size=12'))).toBeTruthy(); }); it(printLog(true, 'isURLSearchParams', "new URLSearchParams('')"), function () { expect(utils.isURLSearchParams(new URLSearchParams(''))).toBeTruthy(); }); }); describe('isFormData', function () { it(printLog(true, 'isFormData', "'value'"), function () { return expect(utils.isFormData('value')).toBeFalsy(); }); it(printLog(true, 'isFormData', '10'), function () { return expect(utils.isFormData({})).toBeFalsy(); }); it(printLog(true, 'isFormData', '[]'), function () { return expect(utils.isFormData([])).toBeFalsy(); }); it(printLog(true, 'isFormData', '{}'), function () { return expect(utils.isFormData({})).toBeFalsy(); }); }); describe('trim', function () { it(printLog("'value' without whitespace", 'trim', "' value'"), function () { return expect(utils.trim(' value')).toEqual('value'); }); it(printLog("'value' without whitespace ", 'trim', "' value '"), function () { return expect(utils.trim(' value ')).toEqual('value'); }); }); }); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC91dGlscy5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFbEMsSUFBTSxRQUFRLEdBQUcsVUFBQyxNQUF3QixFQUFFLElBQVksRUFBRSxLQUFhLElBQWEsT0FBQSxVQUFHLElBQUksNEJBQWtCLE1BQU0sNEJBQWtCLEtBQUssQ0FBRSxFQUF4RCxDQUF3RCxDQUFDO0FBRTdJLFFBQVEsQ0FBQyxlQUFlLEVBQUU7SUFDeEIsUUFBUSxDQUFDLFNBQVMsRUFBRTtRQUNsQixFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUUsY0FBTSxPQUFBLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUE3QyxDQUE2QyxDQUFDLENBQUM7UUFFaEcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLGNBQU0sT0FBQSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUF0QyxDQUFzQyxDQUFDLENBQUM7UUFFbEYsYUFBYTtRQUNiLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxjQUFNLE9BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFuQyxDQUFtQyxDQUFDLENBQUM7UUFFN0UsYUFBYTtRQUNiLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxjQUFN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Q0FBQyxDQUFDLFNBQVMsRUFBRSxFQUEzQyxDQUEyQyxDQUFDLENBQUM7UUFFOUYsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLGNBQU0sT0FBQSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUF0QyxDQUFzQyxDQUFDLENBQUM7SUFDdEYsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsVUFBVSxFQUFFO1FBQ25CLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRSxjQUFNLE9BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBNUMsQ0FBNEMsQ0FBQyxDQUFDO1FBRTlGLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxjQUFNLE9BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBdEMsQ0FBc0MsQ0FBQyxDQUFDO1FBRXBGLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxjQUFNLE9BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBdEMsQ0FBc0MsQ0FBQyxDQUFDO1FBRXBGLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxjQUFNLE9BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBdEMsQ0FBc0MsQ0FBQyxDQUFDO1FBRXBGLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxP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QU8sQ0FBQyxPQUFPLENBQUMsRUFBOUMsQ0FBOEMsQ0FBQyxDQUFDO0lBQ3pILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoibGliL3JlcXVlc3QvdXRpbHMuc3BlYy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTkgYnkgRmlsZXN0YWNrLlxuICogU29tZSByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tICdzdHJlYW0nO1xuXG5jb25zdCBwcmludExvZyA9IChzdGF0dXM6IGJvb2xlYW4gfCBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiBgJHtuYW1lfSBzaG91bGQgcmV0dXJuICR7c3RhdHVzfSB3aGVuIHZhbHVlIGlzICR7dmFsdWV9YDtcblxuZGVzY3JpYmUoJ1JlcXVlc3QvVXRpbHMnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdpc0FycmF5JywgKCkgPT4ge1xuICAgIGl0KHByaW50TG9nKHRydWUsICdpc0FycmF5JywgXCJbJ3ZhbHVlJ11cIiksICgpID0+IGV4cGVjdCh1dGlscy5pc0FycmF5KFsndmFsdWUnXSkpLnRvQmVUcnV0aHkoKSk7XG5cbiAgICBpdChwcmludExvZyh0cnVlLCAnaXNBcnJheScsICdbXScpLCAoKSA9PiBleHBlY3QodXRpbHMuaXNBcnJheShbXSkpLnRvQmVUcnV0aHkoKSk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXQocHJpbnRMb2codHJ1ZSwgJ2lzQXJyYXknLCAnJyksICgpID0+IGV4cGVjdCh1dGlscy5pc0FycmF5KCkpLnRvQmVGYWxzeSgpKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpdChwcmludExvZyh0cnVlLCAnaXNBcnJheScsIG51bGwpLCAoKSA9PiBleHBlY3QodXRpbHMuaXNBcnJheShudWxsKSkudG9CZUZhbHN5KCkpO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNBcnJheUJ1ZmZlcicsICgpID0+IHtcbiAgICBpdChwcmludExvZyh0cnVlLCAnaXNBcnJheUJ1ZmZlcicsICduZXcgQXJyYXlCdWZmZXIoMTApJyksICgpID0+IHtcbiAgICAgIGV4cGVjdCh1dGlscy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheUJ1ZmZlcigxMCkpKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG4gICAgaXQocHJpbnRMb2codHJ1ZSwgJ2lzQXJyYXlCdWZmZXInLCAnJyksICgpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGV4cGVjdCh1dGlscy5pc0FycmF5QnVmZmVyKCkpLnRvQmVGYWxzeSgpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBpc0J1ZmZlclxuICBkZXNjcmliZSgnaXNCdWZmZXInLCAoKSA9PiB7XG4gICAgaXQocHJpbnRMb2codHJ1ZSwgJ2lzQnVmZmVyJywgJycpLCAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBleHBlY3QodXRpbHMuaXNCdWZmZXIobnVsbCkpLnRvQmVGYWxzeSgpO1xuICAgIH0pO1xuICAgIGl0KHByaW50TG9nKHRydWUsICdpc0J1ZmZlcicsICcnKSwgKCkgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZXhwZWN0KHV0aWxzLmlzQnVmZmVyKEJ1ZmZlci5hbGxvYygxMCkpKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc0FycmF5QnVmZmVyVmlldycsICgpID0+IHtcbiAgICBpdChwcmludExvZyh0cnVlLCAnaXNBcnJheUJ1ZmZlclZpZXcnLCAnbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxMCkpJyksICgpID0+IHtcbiAgICAgIGV4cGVjdCh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEwKSkpKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG5cbiAgICBpdChwcmludExvZyh0cnVlLCAnaXNBcnJheUJ1ZmZlclZpZXcnLCBudWxsKSwgKCkgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZXhwZWN0KHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KG51bGwpKS50b0JlRmFsc3koKTtcbiAgICB9KTtcblxuICAgIGl0KHByaW50TG9nKHRydWUsICdpc0FycmF5QnVmZmVyVmlldycsIG51bGwpLCAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBleHBlY3QodXRpbHMuaXNBcnJheUJ1ZmZlclZpZXcoQnVmZmVyLmFsbG9jKDEwKSkpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzT2JqZWN0JywgKCkgPT4ge1xuICAgIGl0KHByaW50TG9nKHRydWUsICdpc09iamVjdCcsIFwie3Byb3A6ICd2YWx1ZSd9XCIpLCAoKSA9PiBleHBlY3QodXRpbHMuaXNPYmplY3QoeyBwcm9wOiAndmFsdWUnIH0pKS50b0JlVHJ1dGh5KCkpO1xuXG4gICAgaXQocHJpbnRMb2coZmFsc2UsICdpc09iamVjdCcsIFwiJ3ZhbHVlJ1wiKSwgKCkgPT4gZXhwZWN0KHV0aWxzLmlzT2JqZWN0KCd2YWx1ZScpKS50b0JlRmFsc3koKSk7XG5cbiAgICBpdChwcmludExvZyhmYWxzZSwgJ2lzT2JqZWN0JywgJzEwJyksICgpID0+IGV4cGVjdCh1dGlscy5pc09iamVjdCgxMCkpLnRvQmVGYWxzeSgpKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzU3RyaW5nJywgKCkgPT4ge1xuICAgIGl0KHByaW50TG9nKHRydWUsICdpc1N0cmluZycsIFwiJ3ZhbHVlJ1wiKSwgKCkgPT4gZXhwZWN0KHV0aWxzLmlzU3RyaW5nKCd2YWx1ZScpKS50b0JlVHJ1dGh5KCkpO1xuXG4gICAgaXQocHJpbnRMb2coZmFsc2UsICdpc1N0cmluZycsICcxMCcpLCAoKSA9PiBleHBlY3QodXRpbHMuaXNTdHJpbmcoMTApKS50b0JlRmFsc3koKSk7XG5cbiAgICBpdChwcmludExvZyhmYWxzZSwgJ2lzU3RyaW5nJywgJ3t9JyksICgpID0+IGV4cGVjdCh1dGlscy5pc1N0cmluZyh7fSkpLnRvQmVGYWxzeSgpKTtcblxuICAgIGl0KHByaW50TG9nKGZhbHNlLCAnaXNTdHJpbmcnLCAnW10nKSwgKCkgPT4gZXhwZWN0KHV0aWxzLmlzU3RyaW5nKFtdKSkudG9CZUZhbHN5KCkpO1xuXG4gICAgaXQocHJpbnRMb2coZmFsc2UsICdpc1N0cmluZycsICdmYWxzZScpLCAoKSA9PiBleHBlY3QodXRpbHMuaXNTdHJpbmcoZmFsc2UpKS50b0JlRmFsc3koKSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc0ZpbGUnLCAoKSA9PiB7XG4gICAgaXQocHJpbnRMb2coZmFsc2UsICdpc0ZpbGUnLCBudWxsKSwgKCkgPT4gZXhwZWN0KHV0aWxzLmlzRmlsZShudWxsKSkudG9CZUZhbHN5KCkpO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNCbG9iJywgKCkgPT4ge1xuICAgIGl0KHByaW50TG9nKGZhbHNlLCAnaXNCbG9iJywgbnVsbCksICgpID0+IGV4cGVjdCh1dGlscy5pc0Jsb2IobnVsbCkpLnRvQmVGYWxzeSgpKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzU3RyZWFtJywgKCkgPT4ge1xuICAgIGl0KHByaW50TG9nKHRydWUsICdpc1N0cmVhbScsICdTdHJlYW0uUmVhZGFibGUoKScpLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGUoKTtcbiAgICAgIHN0cmVhbS5fcmVhZCA9ICgpID0+ICcnO1xuICAgICAgc3RyZWFtLnB1c2goJ2JlZXAnKTtcbiAgICAgIGV4cGVjdCh1dGlscy5pc1N0cmVhbShzdHJlYW0pKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG5cbiAgICBpdChwcmludExvZyh0cnVlLCAnaXNTdHJlYW0nLCBcIid2YWx1ZSdcIiksICgpID0+IGV4cGVjdCh1dGlscy5pc1N0cmVhbSgndmFsdWUnKSkudG9CZUZhbHN5KCkpO1xuXG4gICAgaXQocHJpbnRMb2codHJ1ZSwgJ2lzU3RyZWFtJywgJzEwJyksICgpID0+IGV4cGVjdCh1dGlscy5pc1N0cmVhbSgxMCkpLnRvQmVGYWxzeSgpKTtcblxuICAgIGl0KHByaW50TG9nKHRydWUsICdpc1N0cmVhbScsICdbXScpLCAoKSA9PiBleHBlY3QodXRpbHMuaXNTdHJlYW0oW10pKS50b0JlRmFsc3koKSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc1VSTFNlYXJjaFBhcmFtcycsICgpID0+IHtcbiAgICBpdChwcmludExvZyh0cnVlLCAnaXNVUkxTZWFyY2hQYXJhbXMnLCBcIm5ldyBVUkxTZWFyY2hQYXJhbXMoJ3E9ZmlsZW5hbWU9JnNpemU9MTInKVwiKSwgKCkgPT4ge1xuICAgICAgZXhwZWN0KHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMoJ3E9ZmlsZW5hbWU9JnNpemU9MTInKSkpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcblxuICAgIGl0KHByaW50TG9nKHRydWUsICdpc1VSTFNlYXJjaFBhcmFtcycsIFwibmV3IFVSTFNlYXJjaFBhcmFtcygnJylcIiksICgpID0+IHtcbiAgICAgIGV4cGVjdCh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKCcnKSkpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzRm9ybURhdGEnLCAoKSA9PiB7XG4gICAgaXQocHJpbnRMb2codHJ1ZSwgJ2lzRm9ybURhdGEnLCBcIid2YWx1ZSdcIiksICgpID0+IGV4cGVjdCh1dGlscy5pc0Zvcm1EYXRhKCd2YWx1ZScpKS50b0JlRmFsc3koKSk7XG5cbiAgICBpdChwcmludExvZyh0cnVlLCAnaXNGb3JtRGF0YScsICcxMCcpLCAoKSA9PiBleHBlY3QodXRpbHMuaXNGb3JtRGF0YSh7fSkpLnRvQmVGYWxzeSgpKTtcblxuICAgIGl0KHByaW50TG9nKHRydWUsICdpc0Zvcm1EYXRhJywgJ1tdJyksICgpID0+IGV4cGVjdCh1dGlscy5pc0Zvcm1EYXRhKFtdKSkudG9CZUZhbHN5KCkpO1xuXG4gICAgaXQocHJpbnRMb2codHJ1ZSwgJ2lzRm9ybURhdGEnLCAne30nKSwgKCkgPT4gZXhwZWN0KHV0aWxzLmlzRm9ybURhdGEoe30pKS50b0JlRmFsc3koKSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0cmltJywgKCkgPT4ge1xuICAgIGl0KHByaW50TG9nKFwiJ3ZhbHVlJyB3aXRob3V0IHdoaXRlc3BhY2VcIiwgJ3RyaW0nLCBcIicgdmFsdWUnXCIpLCAoKSA9PiBleHBlY3QodXRpbHMudHJpbSgnIHZhbHVlJykpLnRvRXF1YWwoJ3ZhbHVlJykpO1xuXG4gICAgaXQocHJpbnRMb2coXCIndmFsdWUnIHdpdGhvdXQgd2hpdGVzcGFjZSBcIiwgJ3RyaW0nLCBcIicgdmFsdWUgJ1wiKSwgKCkgPT4gZXhwZWN0KHV0aWxzLnRyaW0oJyB2YWx1ZSAnKSkudG9FcXVhbCgndmFsdWUnKSk7XG4gIH0pO1xufSk7XG4iXX0=