react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
246 lines (222 loc) • 29.8 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
// ACTIONS project
export var NEW_PROJECT = 'NEW_PROJECT';
export var LOAD_PROJECT = 'LOAD_PROJECT';
export var SAVE_PROJECT = 'SAVE_PROJECT';
export var OPEN_CATALOG = 'OPEN_CATALOG';
export var SELECT_TOOL_EDIT = 'SELECT_TOOL_EDIT';
export var UNSELECT_ALL = 'UNSELECT_ALL';
export var SET_PROPERTIES = 'SET_PROPERTIES';
export var SET_ITEMS_ATTRIBUTES = 'SET_ITEMS_ATTRIBUTES';
export var SET_LINES_ATTRIBUTES = 'SET_LINES_ATTRIBUTES';
export var SET_HOLES_ATTRIBUTES = 'SET_HOLES_ATTRIBUTES';
export var REMOVE = 'REMOVE';
export var UNDO = 'UNDO';
export var ROLLBACK = 'ROLLBACK';
export var SET_PROJECT_PROPERTIES = 'SET_PROJECT_PROPERTIES';
export var OPEN_PROJECT_CONFIGURATOR = 'OPEN_PROJECT_CONFIGURATOR';
export var INIT_CATALOG = 'INIT_CATALOG';
export var UPDATE_MOUSE_COORDS = 'UPDATE_MOUSE_COORDS';
export var UPDATE_ZOOM_SCALE = 'UPDATE_ZOOM_SCALE';
export var TOGGLE_SNAP = 'TOGGLE_SNAP';
export var CHANGE_CATALOG_PAGE = 'CHANGE_CATALOG_PAGE';
export var GO_BACK_TO_CATALOG_PAGE = 'GO_BACK_TO_CATALOG_PAGE';
export var THROW_ERROR = 'THROW_ERROR';
export var THROW_WARNING = 'THROW_WARNING';
export var COPY_PROPERTIES = 'COPY_PROPERTIES';
export var PASTE_PROPERTIES = 'PASTE_PROPERTIES';
export var PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY = 'PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY';
// ACTIONS viewer2D
export var SELECT_TOOL_ZOOM_IN = 'SELECT_TOOL_ZOOM_IN';
export var SELECT_TOOL_ZOOM_OUT = 'SELECT_TOOL_ZOOM_OUT';
export var SELECT_TOOL_PAN = 'SELECT_TOOL_PAN';
export var UPDATE_2D_CAMERA = 'UPDATE_2D_CAMERA';
//ACTIONS viewer3D
export var SELECT_TOOL_3D_VIEW = 'SELECT_TOOL_3D_VIEW';
export var SELECT_TOOL_3D_FIRST_PERSON = 'SELECT_TOOL_3D_FIRST_PERSON';
//ACTIONS items
export var SELECT_TOOL_DRAWING_ITEM = 'SELECT_TOOL_DRAWING_ITEM';
export var UPDATE_DRAWING_ITEM = 'UPDATE_DRAWING_ITEM';
export var END_DRAWING_ITEM = 'END_DRAWING_ITEM';
export var BEGIN_DRAGGING_ITEM = 'BEGIN_DRAGGING_ITEM';
export var UPDATE_DRAGGING_ITEM = 'UPDATE_DRAGGING_ITEM';
export var END_DRAGGING_ITEM = 'END_DRAGGING_ITEM';
export var BEGIN_ROTATING_ITEM = 'BEGIN_ROTATING_ITEM';
export var UPDATE_ROTATING_ITEM = 'UPDATE_ROTATING_ITEM';
export var END_ROTATING_ITEM = 'END_ROTATING_ITEM';
//ACTION drawings
export var SELECT_HOLE = 'SELECT_HOLE';
export var SELECT_AREA = 'SELECT_AREA';
export var SELECT_ITEM = 'SELECT_ITEM';
export var SELECT_LINE = 'SELECT_LINE';
export var SELECT_TOOL_DRAWING_LINE = 'SELECT_TOOL_DRAWING_LINE';
export var BEGIN_DRAWING_LINE = 'BEGIN_DRAWING_LINE';
export var UPDATE_DRAWING_LINE = 'UPDATE_DRAWING_LINE';
export var END_DRAWING_LINE = 'END_DRAWING_LINE';
export var SELECT_TOOL_DRAWING_HOLE = 'SELECT_TOOL_DRAWING_HOLE';
export var UPDATE_DRAWING_HOLE = 'UPDATE_DRAWING_HOLE';
export var END_DRAWING_HOLE = 'END_DRAWING_HOLE';
export var BEGIN_DRAGGING_LINE = 'BEGIN_DRAGGING_LINE';
export var UPDATE_DRAGGING_LINE = 'UPDATE_DRAGGING_LINE';
export var END_DRAGGING_LINE = 'END_DRAGGING_LINE';
export var SELECT_TOOL_UPLOAD_IMAGE = 'SELECT_TOOL_UPLOAD_IMAGE';
export var BEGIN_UPLOADING_IMAGE = 'BEGIN_UPLOADING_IMAGE';
export var END_UPLOADING_IMAGE = 'END_UPLOADING_IMAGE';
export var BEGIN_FITTING_IMAGE = 'BEGIN_FITTING_IMAGE';
export var END_FITTING_IMAGE = 'END_FITTING_IMAGE';
export var BEGIN_DRAGGING_HOLE = 'BEGIN_DRAGGING_HOLE';
export var UPDATE_DRAGGING_HOLE = 'UPDATE_DRAGGING_HOLE';
export var END_DRAGGING_HOLE = 'END_DRAGGING_HOLE';
export var SHOW_HEAT_MAP_AREAS = 'SHOW_HEAT_MAP_AREAS';
//ACTIONS vertices
export var BEGIN_DRAGGING_VERTEX = 'BEGIN_DRAGGING_VERTEX';
export var UPDATE_DRAGGING_VERTEX = 'UPDATE_DRAGGING_VERTEX';
export var END_DRAGGING_VERTEX = 'END_DRAGGING_VERTEX';
//ACTIONS scene
export var SET_LAYER_PROPERTIES = 'SET_LAYER_PROPERTIES';
export var ADD_LAYER = 'ADD_LAYER';
export var SELECT_LAYER = 'SELECT_LAYER';
export var REMOVE_LAYER = 'REMOVE_LAYER';
//GROUPING ACTIONS
export var PROJECT_ACTIONS = {
NEW_PROJECT: NEW_PROJECT,
LOAD_PROJECT: LOAD_PROJECT,
SAVE_PROJECT: SAVE_PROJECT,
OPEN_CATALOG: OPEN_CATALOG,
SELECT_TOOL_EDIT: SELECT_TOOL_EDIT,
UNSELECT_ALL: UNSELECT_ALL,
SET_PROPERTIES: SET_PROPERTIES,
SET_ITEMS_ATTRIBUTES: SET_ITEMS_ATTRIBUTES,
SET_LINES_ATTRIBUTES: SET_LINES_ATTRIBUTES,
SET_HOLES_ATTRIBUTES: SET_HOLES_ATTRIBUTES,
REMOVE: REMOVE,
UNDO: UNDO,
ROLLBACK: ROLLBACK,
SET_PROJECT_PROPERTIES: SET_PROJECT_PROPERTIES,
OPEN_PROJECT_CONFIGURATOR: OPEN_PROJECT_CONFIGURATOR,
INIT_CATALOG: INIT_CATALOG,
UPDATE_MOUSE_COORDS: UPDATE_MOUSE_COORDS,
UPDATE_ZOOM_SCALE: UPDATE_ZOOM_SCALE,
TOGGLE_SNAP: TOGGLE_SNAP,
CHANGE_CATALOG_PAGE: CHANGE_CATALOG_PAGE,
GO_BACK_TO_CATALOG_PAGE: GO_BACK_TO_CATALOG_PAGE,
THROW_ERROR: THROW_ERROR,
THROW_WARNING: THROW_WARNING,
COPY_PROPERTIES: COPY_PROPERTIES,
PASTE_PROPERTIES: PASTE_PROPERTIES,
PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY: PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY
};
export var VIEWER2D_ACTIONS = {
SELECT_TOOL_ZOOM_IN: SELECT_TOOL_ZOOM_IN,
SELECT_TOOL_ZOOM_OUT: SELECT_TOOL_ZOOM_OUT,
SELECT_TOOL_PAN: SELECT_TOOL_PAN,
UPDATE_2D_CAMERA: UPDATE_2D_CAMERA
};
export var VIEWER3D_ACTIONS = {
SELECT_TOOL_3D_VIEW: SELECT_TOOL_3D_VIEW,
SELECT_TOOL_3D_FIRST_PERSON: SELECT_TOOL_3D_FIRST_PERSON
};
export var ITEMS_ACTIONS = {
SELECT_ITEM: SELECT_ITEM,
SELECT_TOOL_DRAWING_ITEM: SELECT_TOOL_DRAWING_ITEM,
UPDATE_DRAWING_ITEM: UPDATE_DRAWING_ITEM,
END_DRAWING_ITEM: END_DRAWING_ITEM,
BEGIN_DRAGGING_ITEM: BEGIN_DRAGGING_ITEM,
UPDATE_DRAGGING_ITEM: UPDATE_DRAGGING_ITEM,
END_DRAGGING_ITEM: END_DRAGGING_ITEM,
BEGIN_ROTATING_ITEM: BEGIN_ROTATING_ITEM,
UPDATE_ROTATING_ITEM: UPDATE_ROTATING_ITEM,
END_ROTATING_ITEM: END_ROTATING_ITEM
};
export var HOLE_ACTIONS = {
SELECT_HOLE: SELECT_HOLE,
SELECT_TOOL_DRAWING_HOLE: SELECT_TOOL_DRAWING_HOLE,
UPDATE_DRAWING_HOLE: UPDATE_DRAWING_HOLE,
END_DRAWING_HOLE: END_DRAWING_HOLE,
BEGIN_DRAGGING_HOLE: BEGIN_DRAGGING_HOLE,
UPDATE_DRAGGING_HOLE: UPDATE_DRAGGING_HOLE,
END_DRAGGING_HOLE: END_DRAGGING_HOLE
};
export var LINE_ACTIONS = {
SELECT_LINE: SELECT_LINE,
SELECT_TOOL_DRAWING_LINE: SELECT_TOOL_DRAWING_LINE,
BEGIN_DRAWING_LINE: BEGIN_DRAWING_LINE,
UPDATE_DRAWING_LINE: UPDATE_DRAWING_LINE,
END_DRAWING_LINE: END_DRAWING_LINE,
BEGIN_DRAGGING_LINE: BEGIN_DRAGGING_LINE,
UPDATE_DRAGGING_LINE: UPDATE_DRAGGING_LINE,
END_DRAGGING_LINE: END_DRAGGING_LINE
};
export var AREA_ACTIONS = {
SELECT_AREA: SELECT_AREA,
SHOW_HEAT_MAP_AREAS: SHOW_HEAT_MAP_AREAS
};
export var SCENE_ACTIONS = {
ADD_LAYER: ADD_LAYER,
SET_LAYER_PROPERTIES: SET_LAYER_PROPERTIES,
SELECT_LAYER: SELECT_LAYER,
REMOVE_LAYER: REMOVE_LAYER
};
export var VERTEX_ACTIONS = {
BEGIN_DRAGGING_VERTEX: BEGIN_DRAGGING_VERTEX,
UPDATE_DRAGGING_VERTEX: UPDATE_DRAGGING_VERTEX,
END_DRAGGING_VERTEX: END_DRAGGING_VERTEX
};
export var ALL_ACTIONS = _extends({}, AREA_ACTIONS, PROJECT_ACTIONS, VIEWER2D_ACTIONS);
//MODES
export var MODE_IDLE = 'MODE_IDLE';
export var MODE_2D_ZOOM_IN = 'MODE_2D_ZOOM_IN';
export var MODE_2D_ZOOM_OUT = 'MODE_2D_ZOOM_OUT';
export var MODE_2D_PAN = 'MODE_2D_PAN';
export var MODE_3D_VIEW = 'MODE_3D_VIEW';
export var MODE_3D_FIRST_PERSON = 'MODE_3D_FIRST_PERSON';
export var MODE_WAITING_DRAWING_LINE = 'MODE_WAITING_DRAWING_LINE';
export var MODE_DRAGGING_LINE = 'MODE_DRAGGING_LINE';
export var MODE_DRAGGING_VERTEX = 'MODE_DRAGGING_VERTEX';
export var MODE_DRAGGING_ITEM = 'MODE_DRAGGING_ITEM';
export var MODE_DRAGGING_HOLE = 'MODE_DRAGGING_HOLE';
export var MODE_DRAWING_LINE = 'MODE_DRAWING_LINE';
export var MODE_DRAWING_HOLE = 'MODE_DRAWING_HOLE';
export var MODE_DRAWING_ITEM = 'MODE_DRAWING_ITEM';
export var MODE_ROTATING_ITEM = 'MODE_ROTATING_ITEM';
export var MODE_UPLOADING_IMAGE = 'MODE_UPLOADING_IMAGE';
export var MODE_FITTING_IMAGE = 'MODE_FITTING_IMAGE';
export var MODE_VIEWING_CATALOG = 'MODE_VIEWING_CATALOG';
export var MODE_CONFIGURING_PROJECT = 'MODE_CONFIGURING_PROJECT';
//Thinking about it...
//https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Proxy
/*
let MODE_DEF = [
'IDLE',
'2D_ZOOM_IN',
'2D_ZOOM_OUT',
'2D_PAN',
'3D_VIEW',
'3D_FIRST_PERSON',
'WAITING_DRAWING_LINE',
'DRAGGING_LINE',
'DRAGGING_VERTEX',
'DRAGGING_ITEM',
'DRAGGING_HOLE',
'DRAWING_LINE',
'DRAWING_HOLE',
'DRAWING_ITEM',
'ROTATING_ITEM',
'UPLOADING_IMAGE',
'FITTING_IMAGE',
'VIEWING_CATALOG',
'CONFIGURING_PROJECT',
];
export const MODE = new Proxy( MODE_DEF, { get: (target, name) => { return target.indexOf(name) !== -1 ? name : null } } );
*/
export var MODE_SNAPPING = [MODE_IDLE, MODE_2D_ZOOM_IN, MODE_2D_ZOOM_OUT, MODE_2D_PAN, MODE_WAITING_DRAWING_LINE, MODE_DRAWING_LINE, MODE_DRAWING_HOLE, MODE_DRAWING_ITEM, MODE_DRAGGING_LINE, MODE_DRAGGING_VERTEX, MODE_DRAGGING_ITEM, MODE_DRAGGING_HOLE, MODE_FITTING_IMAGE, MODE_UPLOADING_IMAGE, MODE_ROTATING_ITEM];
//UNITS
export var UNIT_MILLIMETER = 'mm';
export var UNIT_CENTIMETER = 'cm';
export var UNIT_METER = 'm';
export var UNIT_INCH = 'in';
export var UNIT_FOOT = 'ft';
export var UNIT_MILE = 'mi';
export var UNITS_LENGTH = [UNIT_MILLIMETER, UNIT_CENTIMETER, UNIT_METER, UNIT_INCH, UNIT_FOOT, UNIT_MILE];
export var EPSILON = 1e-6;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiTkVXX1BST0pFQ1QiLCJMT0FEX1BST0pFQ1QiLCJTQVZFX1BST0pFQ1QiLCJPUEVOX0NBVEFMT0ciLCJTRUxFQ1RfVE9PTF9FRElUIiwiVU5TRUxFQ1RfQUxMIiwiU0VUX1BST1BFUlRJRVMiLCJTRVRfSVRFTVNfQVRUUklCVVRFUyIsIlNFVF9MSU5FU19BVFRSSUJVVEVTIiwiU0VUX0hPTEVTX0FUVFJJQlVURVMiLCJSRU1PVkUiLCJVTkRPIiwiUk9MTEJBQ0siLCJTRVRfUFJPSkVDVF9QUk9QRVJUSUVTIiwiT1BFTl9QUk9KRUNUX0NPTkZJR1VSQVRPUiIsIklOSVRfQ0FUQUxPRyIsIlVQREFURV9NT1VTRV9DT09SRFMiLCJVUERBVEVfWk9PTV9TQ0FMRSIsIlRPR0dMRV9TTkFQIiwiQ0hBTkdFX0NBVEFMT0dfUEFHRSIsIkdPX0JBQ0tfVE9fQ0FUQUxPR19QQUdFIiwiVEhST1dfRVJST1IiLCJUSFJPV19XQVJOSU5HIiwiQ09QWV9QUk9QRVJUSUVTIiwiUEFTVEVfUFJPUEVSVElFUyIsIlBVU0hfTEFTVF9TRUxFQ1RFRF9DQVRBTE9HX0VMRU1FTlRfVE9fSElTVE9SWSIsIlNFTEVDVF9UT09MX1pPT01fSU4iLCJTRUxFQ1RfVE9PTF9aT09NX09VVCIsIlNFTEVDVF9UT09MX1BBTiIsIlVQREFURV8yRF9DQU1FUkEiLCJTRUxFQ1RfVE9PTF8zRF9WSUVXIiwiU0VMRUNUX1RPT0xfM0RfRklSU1RfUEVSU09OIiwiU0VMRUNUX1RPT0xfRFJBV0lOR19JVEVNIiwiVVBEQVRFX0RSQVdJTkdfSVRFTSIsIkVORF9EUkFXSU5HX0lURU0iLCJCRUdJTl9EUkFHR0lOR19JVEVNIiwiVVBEQVRFX0RSQUdHSU5HX0lURU0iLCJFTkRfRFJBR0dJTkdfSVRFTSIsIkJFR0lOX1JPVEFUSU5HX0lURU0iLCJVUERBVEVfUk9UQVRJTkdfSVRFTSIsIkVORF9ST1RBVElOR19JVEVNIiwiU0VMRUNUX0hPTEUiLCJTRUxFQ1RfQVJFQSIsIlNFTEVDVF9JVEVNIiwiU0VMRUNUX0xJTkUiLCJTRUxFQ1RfVE9PTF9EUkFXSU5HX0xJTkUiLCJCRUdJTl9EUkFXSU5HX0xJTkUiLCJVUERBVEVfRFJBV0lOR19MSU5FIiwiRU5EX0RSQVdJTkdfTElORSIsIlNFTEVDVF9UT09MX0RSQVdJTkdfSE9MRSIsIlVQREFURV9EUkFXSU5HX0hPTEUiLCJFTkRfRFJBV0lOR19IT0xFIiwiQkVHSU5fRFJBR0dJTkdfTElORSIsIlVQREFURV9EUkFHR0lOR19MSU5FIiwiRU5EX0RSQUdHSU5HX0xJTkUiLCJTRUxFQ1RfVE9PTF9VUExPQURfSU1BR0UiLCJCRUdJTl9VUExPQURJTkdfSU1BR0UiLCJFTkRfVVBMT0FESU5HX0lNQUdFIiwiQkVHSU5fRklUVElOR19JTUFHRSIsIkVORF9GSVRUSU5HX0lNQUdFIiwiQkVHSU5fRFJBR0dJTkdfSE9MRSIsIlVQREFURV9EUkFHR0lOR19IT0xFIiwiRU5EX0RSQUdHSU5HX0hPTEUiLCJTSE9XX0hFQVRfTUFQX0FSRUFTIiwiQkVHSU5fRFJBR0dJTkdfVkVSVEVYIiwiVVBEQVRFX0RSQUdHSU5HX1ZFUlRFWCIsIkVORF9EUkFHR0lOR19WRVJURVgiLCJTRVRfTEFZRVJfUFJPUEVSVElFUyIsIkFERF9MQVlFUiIsIlNFTEVDVF9MQVlFUiIsIlJFTU9WRV9MQVlFUiIsIlBST0pFQ1RfQUNUSU9OUyIsIlZJRVdFUjJEX0FDVElPTlMiLCJWSUVXRVIzRF9BQ1RJT05TIiwiSVRFTVNfQUNUSU9OUyIsIkhPTEVfQUNUSU9OUyIsIkxJTkVfQUNUSU9OUyIsIkFSRUFfQUNUSU9OUyIsIlNDRU5FX0FDVElPTlMiLCJWRVJURVhfQUNUSU9OUyIsIkFMTF9BQ1RJT05TIiwiTU9ERV9JRExFIiwiTU9ERV8yRF9aT09NX0lOIiwiTU9ERV8yRF9aT09NX09VVCIsIk1PREVfMkRfUEFOIiwiTU9ERV8zRF9WSUVXIiwiTU9ERV8zRF9GSVJTVF9QRVJTT04iLCJNT0RFX1dBSVRJTkdfRFJBV0lOR19MSU5FIiwiTU9ERV9EUkFHR0lOR19MSU5FIiwiTU9ERV9EUkFHR0lOR19WRVJURVgiLCJNT0RFX0RSQUdHSU5HX0lURU0iLCJNT0RFX0RSQUdHSU5HX0hPTEUiLCJNT0RFX0RSQVdJTkdfTElORSIsIk1PREVfRFJBV0lOR19IT0xFIiwiTU9ERV9EUkFXSU5HX0lURU0iLCJNT0RFX1JPVEFUSU5HX0lURU0iLCJNT0RFX1VQTE9BRElOR19JTUFHRSIsIk1PREVfRklUVElOR19JTUFHRSIsIk1PREVfVklFV0lOR19DQVRBTE9HIiwiTU9ERV9DT05GSUdVUklOR19QUk9KRUNUIiwiTU9ERV9TTkFQUElORyIsIlVOSVRfTUlMTElNRVRFUiIsIlVOSVRfQ0VOVElNRVRFUiIsIlVOSVRfTUVURVIiLCJVTklUX0lOQ0giLCJVTklUX0ZPT1QiLCJVTklUX01JTEUiLCJVTklUU19MRU5HVEgiLCJFUFNJTE9OIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0EsT0FBTyxJQUFNQSxjQUFjLGFBQXBCO0FBQ1AsT0FBTyxJQUFNQyxlQUFlLGNBQXJCO0FBQ1AsT0FBTyxJQUFNQyxlQUFlLGNBQXJCO0FBQ1AsT0FBTyxJQUFNQyxlQUFlLGNBQXJCO0FBQ1AsT0FBTyxJQUFNQyxtQkFBbUIsa0JBQXpCO0FBQ1AsT0FBTyxJQUFNQyxlQUFlLGNBQXJCO0FBQ1AsT0FBTyxJQUFNQyxpQkFBaUIsZ0JBQXZCO0FBQ1AsT0FBTyxJQUFNQyx1QkFBdUIsc0JBQTdCO0FBQ1AsT0FBTyxJQUFNQyx1QkFBdUIsc0JBQTdCO0FBQ1AsT0FBTyxJQUFNQyx1QkFBdUIsc0JBQTdCO0FBQ1AsT0FBTyxJQUFNQyxTQUFTLFFBQWY7QUFDUCxPQUFPLElBQU1DLE9BQU8sTUFBYjtBQUNQLE9BQU8sSUFBTUMsV0FBVyxVQUFqQjtBQUNQLE9BQU8sSUFBTUMseUJBQXlCLHdCQUEvQjtBQUNQLE9BQU8sSUFBTUMsNEJBQTRCLDJCQUFsQztBQUNQLE9BQU8sSUFBTUMsZUFBZSxjQUFyQjtBQUNQLE9BQU8sSUFBTUMsc0JBQXNCLHFCQUE1QjtBQUNQLE9BQU8sSUFBTUMsb0JBQW9C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QkFGbkIsRUFHM0JDLGlCQUgyQixFQUdSTixrQkFIUSxFQUdZQyxvQkFIWixFQUkzQkMsa0JBSjJCLEVBSVBDLGtCQUpPLEVBSWFNLGtCQUpiLEVBSzNCRCxvQkFMMkIsRUFLTEQsa0JBTEssQ0FBdEI7O0FBUVA7QUFDQSxPQUFPLElBQU1NLGtCQUFrQixJQUF4QjtBQUNQLE9BQU8sSUFBTUMsa0JBQWtCLElBQXhCO0FBQ1AsT0FBTyxJQUFNQyxhQUFhLEdBQW5CO0FBQ1AsT0FBTyxJQUFNQyxZQUFZLElBQWxCO0FBQ1AsT0FBTyxJQUFNQyxZQUFZLElBQWxCO0FBQ1AsT0FBTyxJQUFNQyxZQUFZLElBQWxCOztBQUVQLE9BQU8sSUFBTUMsZUFBZSxDQUMxQk4sZUFEMEIsRUFFMUJDLGVBRjBCLEVBRzFCQyxVQUgwQixFQUkxQkMsU0FKMEIsRUFLMUJDLFNBTDBCLEVBTTFCQyxTQU4wQixDQUFyQjs7QUFTUCxPQUFPLElBQU1FLFVBQVUsSUFBaEIiLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQUNUSU9OUyBwcm9qZWN0XG5leHBvcnQgY29uc3QgTkVXX1BST0pFQ1QgPSAnTkVXX1BST0pFQ1QnO1xuZXhwb3J0IGNvbnN0IExPQURfUFJPSkVDVCA9ICdMT0FEX1BST0pFQ1QnO1xuZXhwb3J0IGNvbnN0IFNBVkVfUFJPSkVDVCA9ICdTQVZFX1BST0pFQ1QnO1xuZXhwb3J0IGNvbnN0IE9QRU5fQ0FUQUxPRyA9ICdPUEVOX0NBVEFMT0cnO1xuZXhwb3J0IGNvbnN0IFNFTEVDVF9UT09MX0VESVQgPSAnU0VMRUNUX1RPT0xfRURJVCc7XG5leHBvcnQgY29uc3QgVU5TRUxFQ1RfQUxMID0gJ1VOU0VMRUNUX0FMTCc7XG5leHBvcnQgY29uc3QgU0VUX1BST1BFUlRJRVMgPSAnU0VUX1BST1BFUlRJRVMnO1xuZXhwb3J0IGNvbnN0IFNFVF9JVEVNU19BVFRSSUJVVEVTID0gJ1NFVF9JVEVNU19BVFRSSUJVVEVTJztcbmV4cG9ydCBjb25zdCBTRVRfTElORVNfQVRUUklCVVRFUyA9ICdTRVRfTElORVNfQVRUUklCVVRFUyc7XG5leHBvcnQgY29uc3QgU0VUX0hPTEVTX0FUVFJJQlVURVMgPSAnU0VUX0hPTEVTX0FUVFJJQlVURVMnO1xuZXhwb3J0IGNvbnN0IFJFTU9WRSA9ICdSRU1PVkUnO1xuZXhwb3J0IGNvbnN0IFVORE8gPSAnVU5ETyc7XG5leHBvcnQgY29uc3QgUk9MTEJBQ0sgPSAnUk9MTEJBQ0snO1xuZXhwb3J0IGNvbnN0IFNFVF9QUk9KRUNUX1BST1BFUlRJRVMgPSAnU0VUX1BST0pFQ1RfUFJPUEVSVElFUyc7XG5leHBvcnQgY29uc3QgT1BFTl9QUk9KRUNUX0NPTkZJR1VSQVRPUiA9ICdPUEVOX1BST0pFQ1RfQ09ORklHVVJBVE9SJztcbmV4cG9ydCBjb25zdCBJTklUX0NBVEFMT0cgPSAnSU5JVF9DQVRBTE9HJztcbmV4cG9ydCBjb25zdCBVUERBVEVfTU9VU0VfQ09PUkRTID0gJ1VQREFURV9NT1VTRV9DT09SRFMnO1xuZXhwb3J0IGNvbnN0IFVQREFURV9aT09NX1NDQUxFID0gJ1VQREFURV9aT09NX1NDQUxFJztcbmV4cG9ydCBjb25zdCBUT0dHTEVfU05BUCA9ICdUT0dHTEVfU05BUCc7XG5leHBvcnQgY29uc3QgQ0hBTkdFX0NBVEFMT0dfUEFHRSA9ICdDSEFOR0VfQ0FUQUxPR19QQUdFJztcbmV4cG9ydCBjb25zdCBHT19CQUNLX1RPX0NBVEFMT0dfUEFHRSA9ICdHT19CQUNLX1RPX0NBVEFMT0dfUEFHRSc7XG5leHBvcnQgY29uc3QgVEhST1dfRVJST1IgPSAnVEhST1dfRVJST1InO1xuZXhwb3J0IGNvbnN0IFRIUk9XX1dBUk5JTkcgPSAnVEhST1dfV0FSTklORyc7XG5leHBvcnQgY29uc3QgQ09QWV9QUk9QRVJUSUVTID0gJ0NPUFlfUFJPUEVSVElFUyc7XG5leHBvcnQgY29uc3QgUEFTVEVfUFJPUEVSVElFUyA9ICdQQVNURV9QUk9QRVJUSUVTJztcbmV4cG9ydCBjb25zdCBQVVNIX0xBU1RfU0VMRUNURURfQ0FUQUxPR19FTEVNRU5UX1RPX0hJU1RPUlkgPSAnUFVTSF9MQVNUX1NFTEVDVEVEX0NBVEFMT0dfRUxFTUVOVF9UT19ISVNUT1JZJztcblxuLy8gQUNUSU9OUyB2aWV3ZXIyRFxuZXhwb3J0IGNvbnN0IFNFTEVDVF9UT09MX1pPT01fSU4gPSAnU0VMRUNUX1RPT0xfWk9PTV9JTic7XG5leHBvcnQgY29uc3QgU0VMRUNUX1RPT0xfWk9PTV9PVVQgPSAnU0VMRUNUX1RPT0xfWk9PTV9PVVQnO1xuZXhwb3J0IGNvbnN0IFNFTEVDVF9UT09MX1BBTiA9ICdTRUxFQ1RfVE9PTF9QQU4nO1xuZXhwb3J0IGNvbnN0IFVQREFURV8yRF9DQU1FUkEgPSAnVVBEQVRFXzJEX0NBTUVSQSc7XG5cbi8vQUNUSU9OUyB2aWV3ZXIzRFxuZXhwb3J0IGNvbnN0IFNFTEVDVF9UT09MXzNEX1ZJRVcgPSAnU0VMRUNUX1RPT0xfM0RfVklFVyc7XG5leHBvcnQgY29uc3QgU0VMRUNUX1RPT0xfM0RfRklSU1RfUEVSU09OID0gJ1NFTEVDVF9UT09MXzNEX0ZJUlNUX1BFUlNPTic7XG5cbi8vQUNUSU9OUyBpdGVtc1xuZXhwb3J0IGNvbnN0IFNFTEVDVF9UT09MX0RSQVdJTkdfSVRFTSA9ICdTRUxFQ1RfVE9PTF9EUkFXSU5HX0lURU0nO1xuZXhwb3J0IGNvbnN0IFVQREFURV9EUkFXSU5HX0lURU0gPSAnVVBEQVRFX0RSQVdJTkdfSVRFTSc7XG5leHBvcnQgY29uc3QgRU5EX0RSQVdJTkdfSVRFTSA9ICdFTkRfRFJBV0lOR19JVEVNJztcbmV4cG9ydCBjb25zdCBCRUdJTl9EUkFHR0lOR19JVEVNID0gJ0JFR0lOX0RSQUdHSU5HX0lURU0nO1xuZXhwb3J0IGNvbnN0IFVQREFURV9EUkFHR0lOR19JVEVNID0gJ1VQREFURV9EUkFHR0lOR19JVEVNJztcbmV4cG9ydCBjb25zdCBFTkRfRFJBR0dJTkdfSVRFTSA9ICdFTkRfRFJBR0dJTkdfSVRFTSc7XG5leHBvcnQgY29uc3QgQkVHSU5fUk9UQVRJTkdfSVRFTSA9ICdCRUdJTl9ST1RBVElOR19JVEVNJztcbmV4cG9ydCBjb25zdCBVUERBVEVfUk9UQVRJTkdfSVRFTSA9ICdVUERBVEVfUk9UQVRJTkdfSVRFTSc7XG5leHBvcnQgY29uc3QgRU5EX1JPVEFUSU5HX0lURU0gPSAnRU5EX1JPVEFUSU5HX0lURU0nO1xuXG4vL0FDVElPTiBkcmF3aW5nc1xuZXhwb3J0IGNvbnN0IFNFTEVDVF9IT0xFID0gJ1NFTEVDVF9IT0xFJztcbmV4cG9ydCBjb25zdCBTRUxFQ1RfQVJFQSA9ICdTRUxFQ1RfQVJFQSc7XG5leHBvcnQgY29uc3QgU0VMRUNUX0lURU0gPSAnU0VMRUNUX0lURU0nO1xuZXhwb3J0IGNvbnN0IFNFTEVDVF9MSU5FID0gJ1NFTEVDVF9MSU5FJztcbmV4cG9ydCBjb25zdCBTRUxFQ1RfVE9PTF9EUkFXSU5HX0xJTkUgPSAnU0VMRUNUX1RPT0xfRFJBV0lOR19MSU5FJztcbmV4cG9ydCBjb25zdCBCRUdJTl9EUkFXSU5HX0xJTkUgPSAnQkVHSU5fRFJBV0lOR19MSU5FJztcbmV4cG9ydCBjb25zdCBVUERBVEVfRFJBV0lOR19MSU5FID0gJ1VQREFURV9EUkFXSU5HX0xJTkUnO1xuZXhwb3J0IGNvbnN0IEVORF9EUkFXSU5HX0xJTkUgPSAnRU5EX0RSQVdJTkdfTElORSc7XG5leHBvcnQgY29uc3QgU0VMRUNUX1RPT0xfRFJBV0lOR19IT0xFID0gJ1NFTEVDVF9UT09MX0RSQVdJTkdfSE9MRSc7XG5leHBvcnQgY29uc3QgVVBEQVRFX0RSQVdJTkdfSE9MRSA9ICdVUERBVEVfRFJBV0lOR19IT0xFJztcbmV4cG9ydCBjb25zdCBFTkRfRFJBV0lOR19IT0xFID0gJ0VORF9EUkFXSU5HX0hPTEUnO1xuZXhwb3J0IGNvbnN0IEJFR0lOX0RSQUdHSU5HX0xJTkUgPSAnQkVHSU5fRFJBR0dJTkdfTElORSc7XG5leHBvcnQgY29uc3QgVVBEQVRFX0RSQUdHSU5HX0xJTkUgPSAnVVBEQVRFX0RSQUdHSU5HX0xJTkUnO1xuZXhwb3J0IGNvbnN0IEVORF9EUkFHR0lOR19MSU5FID0gJ0VORF9EUkFHR0lOR19MSU5FJztcbmV4cG9ydCBjb25zdCBTRUxFQ1RfVE9PTF9VUExPQURfSU1BR0UgPSAnU0VMRUNUX1RPT0xfVVBMT0FEX0lNQUdFJztcbmV4cG9ydCBjb25zdCBCRUdJTl9VUExPQURJTkdfSU1BR0UgPSAnQkVHSU5fVVBMT0FESU5HX0lNQUdFJztcbmV4cG9ydCBjb25zdCBFTkRfVVBMT0FESU5HX0lNQUdFID0gJ0VORF9VUExPQURJTkdfSU1BR0UnO1xuZXhwb3J0IGNvbnN0IEJFR0lOX0ZJVFRJTkdfSU1BR0UgPSAnQkVHSU5fRklUVElOR19JTUFHRSc7XG5leHBvcnQgY29uc3QgRU5EX0ZJVFRJTkdfSU1BR0UgPSAnRU5EX0ZJVFRJTkdfSU1BR0UnO1xuZXhwb3J0IGNvbnN0IEJFR0lOX0RSQUdHSU5HX0hPTEUgPSAnQkVHSU5fRFJBR0dJTkdfSE9MRSc7XG5leHBvcnQgY29uc3QgVVBEQVRFX0RSQUdHSU5HX0hPTEUgPSAnVVBEQVRFX0RSQUdHSU5HX0hPTEUnO1xuZXhwb3J0IGNvbnN0IEVORF9EUkFHR0lOR19IT0xFID0gJ0VORF9EUkFHR0lOR19IT0xFJztcbmV4cG9ydCBjb25zdCBTSE9XX0hFQVRfTUFQX0FSRUFTID0gJ1NIT1dfSEVBVF9NQVBfQVJFQVMnO1xuXG4vL0FDVElPTlMgdmVydGljZXNcbmV4cG9ydCBjb25zdCBCRUdJTl9EUkFHR0lOR19WRVJURVggPSAnQkVHSU5fRFJBR0dJTkdfVkVSVEVYJztcbmV4cG9ydCBjb25zdCBVUERBVEVfRFJBR0dJTkdfVkVSVEVYID0gJ1VQREFURV9EUkFHR0lOR19WRVJURVgnO1xuZXhwb3J0IGNvbnN0IEVORF9EUkFHR0lOR19WRVJURVggPSAnRU5EX0RSQUdHSU5HX1ZFUlRFWCc7XG5cbi8vQUNUSU9OUyBzY2VuZVxuZXhwb3J0IGNvbnN0IFNFVF9MQVlFUl9QUk9QRVJUSUVTID0gJ1NFVF9MQVlFUl9QUk9QRVJUSUVTJztcbmV4cG9ydCBjb25zdCBBRERfTEFZRVIgPSAnQUREX0xBWUVSJztcbmV4cG9ydCBjb25zdCBTRUxFQ1RfTEFZRVIgPSAnU0VMRUNUX0xBWUVSJztcbmV4cG9ydCBjb25zdCBSRU1PVkVfTEFZRVIgPSAnUkVNT1ZFX0xBWUVSJztcblxuLy9HUk9VUElORyBBQ1RJT05TXG5leHBvcnQgY29uc3QgUFJPSkVDVF9BQ1RJT05TID0ge1xuICBORVdfUFJPSkVDVCxcbiAgTE9BRF9QUk9KRUNULFxuICBTQVZFX1BST0pFQ1QsXG4gIE9QRU5fQ0FUQUxPRyxcbiAgU0VMRUNUX1RPT0xfRURJVCxcbiAgVU5TRUxFQ1RfQUxMLFxuICBTRVRfUFJPUEVSVElFUyxcbiAgU0VUX0lURU1TX0FUVFJJQlVURVMsXG4gIFNFVF9MSU5FU19BVFRSSUJVVEVTLFxuICBTRVRfSE9MRVNfQVRUUklCVVRFUyxcbiAgUkVNT1ZFLFxuICBVTkRPLFxuICBST0xMQkFDSyxcbiAgU0VUX1BST0pFQ1RfUFJPUEVSVElFUyxcbiAgT1BFTl9QUk9KRUNUX0NPTkZJR1VSQVRPUixcbiAgSU5JVF9DQVRBTE9HLFxuICBVUERBVEVfTU9VU0VfQ09PUkRTLFxuICBVUERBVEVfWk9PTV9TQ0FMRSxcbiAgVE9HR0xFX1NOQVAsXG4gIENIQU5HRV9DQVRBTE9HX1BBR0UsXG4gIEdPX0JBQ0tfVE9fQ0FUQUxPR19QQUdFLFxuICBUSFJPV19FUlJPUixcbiAgVEhST1dfV0FSTklORyxcbiAgQ09QWV9QUk9QRVJUSUVTLFxuICBQQVNURV9QUk9QRVJUSUVTLFxuICBQVVNIX0xBU1RfU0VMRUNURURfQ0FUQUxPR19FTEVNRU5UX1RPX0hJU1RPUllcbn07XG5cbmV4cG9ydCBjb25zdCBWSUVXRVIyRF9BQ1RJT05TID0ge1xuICBTRUxFQ1RfVE9PTF9aT09NX0lOLFxuICBTRUxFQ1RfVE9PTF9aT09NX09VVCxcbiAgU0VMRUNUX1RPT0xfUEFOLFxuICBVUERBVEVfMkRfQ0FNRVJBXG59O1xuXG5leHBvcnQgY29uc3QgVklFV0VSM0RfQUNUSU9OUyA9IHtcbiAgU0VMRUNUX1RPT0xfM0RfVklFVyxcbiAgU0VMRUNUX1RPT0xfM0RfRklSU1RfUEVSU09OXG59O1xuXG5leHBvcnQgY29uc3QgSVRFTVNfQUNUSU9OUyA9IHtcbiAgU0VMRUNUX0lURU0sXG4gIFNFTEVDVF9UT09MX0RSQVdJTkdfSVRFTSxcbiAgVVBEQVRFX0RSQVdJTkdfSVRFTSxcbiAgRU5EX0RSQVdJTkdfSVRFTSxcbiAgQkVHSU5fRFJBR0dJTkdfSVRFTSxcbiAgVVBEQVRFX0RSQUdHSU5HX0lURU0sXG4gIEVORF9EUkFHR0lOR19JVEVNLFxuICBCRUdJTl9ST1RBVElOR19JVEVNLFxuICBVUERBVEVfUk9UQVRJTkdfSVRFTSxcbiAgRU5EX1JPVEFUSU5HX0lURU1cbn07XG5cbmV4cG9ydCBjb25zdCBIT0xFX0FDVElPTlMgPSB7XG4gIFNFTEVDVF9IT0xFLFxuICBTRUxFQ1RfVE9PTF9EUkFXSU5HX0hPTEUsXG4gIFVQREFURV9EUkFXSU5HX0hPTEUsXG4gIEVORF9EUkFXSU5HX0hPTEUsXG4gIEJFR0lOX0RSQUdHSU5HX0hPTEUsXG4gIFVQREFURV9EUkFHR0lOR19IT0xFLFxuICBFTkRfRFJBR0dJTkdfSE9MRVxufTtcblxuZXhwb3J0IGNvbnN0IExJTkVfQUNUSU9OUyA9IHtcbiAgU0VMRUNUX0xJTkUsXG4gIFNFTEVDVF9UT09MX0RSQVdJTkdfTElORSxcbiAgQkVHSU5fRFJBV0lOR19MSU5FLFxuICBVUERBVEVfRFJBV0lOR19MSU5FLFxuICBFTkRfRFJBV0lOR19MSU5FLFxuICBCRUdJTl9EUkFHR0lOR19MSU5FLFxuICBVUERBVEVfRFJBR0dJTkdfTElORSxcbiAgRU5EX0RSQUdHSU5HX0xJTkVcbn07XG5cbmV4cG9ydCBjb25zdCBBUkVBX0FDVElPTlMgPSB7XG4gIFNFTEVDVF9BUkVBLFxuICBTSE9XX0hFQVRfTUFQX0FSRUFTLFxufTtcblxuZXhwb3J0IGNvbnN0IFNDRU5FX0FDVElPTlMgPSB7XG4gIEFERF9MQVlFUixcbiAgU0VUX0xBWUVSX1BST1BFUlRJRVMsXG4gIFNFTEVDVF9MQVlFUixcbiAgUkVNT1ZFX0xBWUVSXG59O1xuXG5leHBvcnQgY29uc3QgVkVSVEVYX0FDVElPTlMgPSB7XG4gIEJFR0lOX0RSQUdHSU5HX1ZFUlRFWCxcbiAgVVBEQVRFX0RSQUdHSU5HX1ZFUlRFWCxcbiAgRU5EX0RSQUdHSU5HX1ZFUlRFWFxufTtcblxuZXhwb3J0IGNvbnN0IEFMTF9BQ1RJT05TID0ge1xuICAuLi5BUkVBX0FDVElPTlMsXG4gIC4uLlBST0pFQ1RfQUNUSU9OUyxcbiAgLi4uVklFV0VSMkRfQUNUSU9OUyxcbn1cblxuLy9NT0RFU1xuZXhwb3J0IGNvbnN0IE1PREVfSURMRSA9ICdNT0RFX0lETEUnO1xuZXhwb3J0IGNvbnN0IE1PREVfMkRfWk9PTV9JTiA9ICdNT0RFXzJEX1pPT01fSU4nO1xuZXhwb3J0IGNvbnN0IE1PREVfMkRfWk9PTV9PVVQgPSAnTU9ERV8yRF9aT09NX09VVCc7XG5leHBvcnQgY29uc3QgTU9ERV8yRF9QQU4gPSAnTU9ERV8yRF9QQU4nO1xuZXhwb3J0IGNvbnN0IE1PREVfM0RfVklFVyA9ICdNT0RFXzNEX1ZJRVcnO1xuZXhwb3J0IGNvbnN0IE1PREVfM0RfRklSU1RfUEVSU09OID0gJ01PREVfM0RfRklSU1RfUEVSU09OJztcbmV4cG9ydCBjb25zdCBNT0RFX1dBSVRJTkdfRFJBV0lOR19MSU5FID0gJ01PREVfV0FJVElOR19EUkFXSU5HX0xJTkUnO1xuZXhwb3J0IGNvbnN0IE1PREVfRFJBR0dJTkdfTElORSA9ICdNT0RFX0RSQUdHSU5HX0xJTkUnO1xuZXhwb3J0IGNvbnN0IE1PREVfRFJBR0dJTkdfVkVSVEVYID0gJ01PREVfRFJBR0dJTkdfVkVSVEVYJztcbmV4cG9ydCBjb25zdCBNT0RFX0RSQUdHSU5HX0lURU0gPSAnTU9ERV9EUkFHR0lOR19JVEVNJztcbmV4cG9ydCBjb25zdCBNT0RFX0RSQUdHSU5HX0hPTEUgPSAnTU9ERV9EUkFHR0lOR19IT0xFJztcbmV4cG9ydCBjb25zdCBNT0RFX0RSQVdJTkdfTElORSA9ICdNT0RFX0RSQVdJTkdfTElORSc7XG5leHBvcnQgY29uc3QgTU9ERV9EUkFXSU5HX0hPTEUgPSAnTU9ERV9EUkFXSU5HX0hPTEUnO1xuZXhwb3J0IGNvbnN0IE1PREVfRFJBV0lOR19JVEVNID0gJ01PREVfRFJBV0lOR19JVEVNJztcbmV4cG9ydCBjb25zdCBNT0RFX1JPVEFUSU5HX0lURU0gPSAnTU9ERV9ST1RBVElOR19JVEVNJztcbmV4cG9ydCBjb25zdCBNT0RFX1VQTE9BRElOR19JTUFHRSA9ICdNT0RFX1VQTE9BRElOR19JTUFHRSc7XG5leHBvcnQgY29uc3QgTU9ERV9GSVRUSU5HX0lNQUdFID0gJ01PREVfRklUVElOR19JTUFHRSc7XG5leHBvcnQgY29uc3QgTU9ERV9WSUVXSU5HX0NBVEFMT0cgPSAnTU9ERV9WSUVXSU5HX0NBVEFMT0cnO1xuZXhwb3J0IGNvbnN0IE1PREVfQ09ORklHVVJJTkdfUFJPSkVDVCA9ICdNT0RFX0NPTkZJR1VSSU5HX1BST0pFQ1QnO1xuXG4vL1RoaW5raW5nIGFib3V0IGl0Li4uXG4vL2h0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2l0L2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1Byb3h5XG4vKlxubGV0IE1PREVfREVGID0gW1xuICAnSURMRScsXG4gICcyRF9aT09NX0lOJyxcbiAgJzJEX1pPT01fT1VUJyxcbiAgJzJEX1BBTicsXG4gICczRF9WSUVXJyxcbiAgJzNEX0ZJUlNUX1BFUlNPTicsXG4gICdXQUlUSU5HX0RSQVdJTkdfTElORScsXG4gICdEUkFHR0lOR19MSU5FJyxcbiAgJ0RSQUdHSU5HX1ZFUlRFWCcsXG4gICdEUkFHR0lOR19JVEVNJyxcbiAgJ0RSQUdHSU5HX0hPTEUnLFxuICAnRFJBV0lOR19MSU5FJyxcbiAgJ0RSQVdJTkdfSE9MRScsXG4gICdEUkFXSU5HX0lURU0nLFxuICAnUk9UQVRJTkdfSVRFTScsXG4gICdVUExPQURJTkdfSU1BR0UnLFxuICAnRklUVElOR19JTUFHRScsXG4gICdWSUVXSU5HX0NBVEFMT0cnLFxuICAnQ09ORklHVVJJTkdfUFJPSkVDVCcsXG5dO1xuXG5leHBvcnQgY29uc3QgTU9ERSA9IG5ldyBQcm94eSggTU9ERV9ERUYsIHsgZ2V0OiAodGFyZ2V0LCBuYW1lKSA9PiB7IHJldHVybiB0YXJnZXQuaW5kZXhPZihuYW1lKSAhPT0gLTEgPyBuYW1lIDogbnVsbCB9IH0gKTtcbiovXG5cbmV4cG9ydCBjb25zdCBNT0RFX1NOQVBQSU5HID0gW1xuICBNT0RFX0lETEUsIE1PREVfMkRfWk9PTV9JTiwgTU9ERV8yRF9aT09NX09VVCwgTU9ERV8yRF9QQU4sXG4gIE1PREVfV0FJVElOR19EUkFXSU5HX0xJTkUsIE1PREVfRFJBV0lOR19MSU5FLCBNT0RFX0RSQVdJTkdfSE9MRSxcbiAgTU9ERV9EUkFXSU5HX0lURU0sIE1PREVfRFJBR0dJTkdfTElORSwgTU9ERV9EUkFHR0lOR19WRVJURVgsXG4gIE1PREVfRFJBR0dJTkdfSVRFTSwgTU9ERV9EUkFHR0lOR19IT0xFLCBNT0RFX0ZJVFRJTkdfSU1BR0UsXG4gIE1PREVfVVBMT0FESU5HX0lNQUdFLCBNT0RFX1JPVEFUSU5HX0lURU1cbl07XG5cbi8vVU5JVFNcbmV4cG9ydCBjb25zdCBVTklUX01JTExJTUVURVIgPSAnbW0nO1xuZXhwb3J0IGNvbnN0IFVOSVRfQ0VOVElNRVRFUiA9ICdjbSc7XG5leHBvcnQgY29uc3QgVU5JVF9NRVRFUiA9ICdtJztcbmV4cG9ydCBjb25zdCBVTklUX0lOQ0ggPSAnaW4nO1xuZXhwb3J0IGNvbnN0IFVOSVRfRk9PVCA9ICdmdCc7XG5leHBvcnQgY29uc3QgVU5JVF9NSUxFID0gJ21pJztcblxuZXhwb3J0IGNvbnN0IFVOSVRTX0xFTkdUSCA9IFtcbiAgVU5JVF9NSUxMSU1FVEVSLFxuICBVTklUX0NFTlRJTUVURVIsXG4gIFVOSVRfTUVURVIsXG4gIFVOSVRfSU5DSCxcbiAgVU5JVF9GT09ULFxuICBVTklUX01JTEVcbl07XG5cbmV4cG9ydCBjb25zdCBFUFNJTE9OID0gMWUtNjtcbiJdfQ==