UNPKG

ng-cw-v12

Version:

Angular UI component library

623 lines 153 kB
import { Component, Input } from '@angular/core';
import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
import { RoomEnvironment } from 'three/examples/jsm/environments/RoomEnvironment';
import { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader';
import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';
import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min';
import * as i0 from "@angular/core";
import * as i1 from "./local.service";
import * as i2 from "@angular/common";
export class GltfViewerComponent {
    constructor(eleRef, ls) {
        this.eleRef = eleRef;
        this.ls = ls;
        this.tipsMode = false;
        this.controlMode = false;
        this.alphaMode = false;
        this.parametersOk = true;
        this.gltfUrl = '';
        this.showLoading = false;
        this.domId = '#gltfViewer';
        this.cameraPlacement = 'default';
        this.size = 0;
        //动画
        this.mixer = null;
        this.clock = new THREE.Clock();
        this.state = {
            toneMapping: THREE.LinearToneMapping,
            toneMappingExposure: 0,
            background: false,
            backgroundColor: '#191919',
            axesHelper: false,
            wireframe: false,
            autoRotate: false,
            animationIndex: -1,
            ambientLight: true,
            ambientLightColor: '#FFFFFF',
            ambientLightIntensity: 2,
            directionalLight: false,
            directionalLightColor: '#FFFFFF',
            directionalLightIntensity: 1,
            directionalLightPosition: {
                x: 0,
                y: 0,
                z: 0
            },
            directionalLightHelper: false,
            pointLight: false,
            pointLightColor: '#FFFFFF',
            pointLightIntensity: 1,
            pointLightDistance: 0,
            pointLightDecay: 0.1,
            pointLightPosition: {
                x: 0,
                y: 0,
                z: 0
            },
            pointLightHelper: false
        };
    }
    //模型地址
    set ncUrl(value) {
        this.gltfUrl = value;
        setTimeout(() => {
            //加延迟,防止其他传入参数未获取到
            if (this.scene) {
                this.updateModel();
            }
        });
    }
    ;
    //摄像机初始方位default,left,right,top,bottom,back,front
    set ncCameraPlacement(value) {
        this.cameraPlacement = value;
        if (this.scene) {
            this.setCameraPlacement();
        }
    }
    ;
    //是否启用背景色
    set ncBg(value) {
        this.state.background = value !== null && value !== undefined && value !== false && value !== 'false';
        if (this.scene) {
            this.updateBackground();
        }
    }
    //背景色值
    set ncBgColor(value) {
        this.state.backgroundColor = value;
        if (this.scene) {
            this.updateBackground();
        }
    }
    //操作提示
    set ncTips(value) {
        this.tipsMode = value !== null && value !== undefined && value !== false && value !== 'false';
    }
    //控制面板
    set ncControl(value) {
        this.controlMode = value !== null && value !== undefined && value !== false && value !== 'false';
    }
    //背景是否透明
    set ncAlpha(value) {
        this.alphaMode = value !== null && value !== undefined && value !== false && value !== 'false';
    }
    ngOnInit() {
        if (this.gltfUrl == '') {
            this.parametersOk = false;
            console.error('ncUrl为空');
        }
        if (!this.parametersOk) {
            return;
        }
        this.onWindowResize = this.onWindowResize.bind(this);
        this.animate = this.animate.bind(this);
        if (this.ls.isBrowser) {
            window.addEventListener('resize', this.onWindowResize);
        }
        setTimeout(() => {
            this.init();
        }, 20);
    }
    ngOnDestroy() {
        if (this.ls.isBrowser) {
            window.removeEventListener('resize', this.onWindowResize);
        }
        this.webglLoseContext();
    }
    init() {
        if (!this.parametersOk) {
            return;
        }
        let gltfArea = this.eleRef.nativeElement.querySelector(this.domId);
        this.domWidth = gltfArea.offsetWidth;
        this.domHeight = gltfArea.offsetHeight;
        this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: this.alphaMode });
        this.renderer.setPixelRatio(gltfArea.devicePixelRatio);
        this.renderer.setSize(this.domWidth, this.domHeight);
        this.renderer.outputColorSpace = THREE.SRGBColorSpace;
        gltfArea.appendChild(this.renderer.domElement);
        this.scene = new THREE.Scene();
        const environment = new RoomEnvironment();
        const pmremGenerator = new THREE.PMREMGenerator(this.renderer);
        this.scene.environment = pmremGenerator.fromScene(environment).texture;
        const ktx2Loader = new KTX2Loader().setTranscoderPath('js/libs/basis/').detectSupport(this.renderer);
        this.loader = new GLTFLoader(new THREE.LoadingManager());
        this.loader.setKTX2Loader(ktx2Loader);
        this.loader.setMeshoptDecoder(MeshoptDecoder);
        this.updateModel();
        requestAnimationFrame(this.animate);
    }
    render() {
        this.renderer.render(this.scene, this.camera);
    }
    animate() {
        requestAnimationFrame(this.animate);
        // required if controls.enableDamping or controls.autoRotate are set to true
        if (this.controls) {
            this.controls.update();
        }
        if (this.scene && this.camera) {
            this.render();
        }
        const delta = this.clock.getDelta();
        // 更新动画混合器
        if (this.mixer) {
            this.mixer.update(delta);
        }
    }
    onWindowResize() {
        setTimeout(() => {
            let gltfArea = this.eleRef.nativeElement.querySelector(this.domId);
            const width = gltfArea.offsetWidth;
            const height = gltfArea.offsetHeight;
            this.renderer.setPixelRatio(gltfArea.devicePixelRatio);
            this.renderer.setSize(width, height);
            this.render();
        });
    }
    //更新模型
    updateModel() {
        this.showLoading = true;
        if (this.gltf) {
            this.scene.remove(this.gltf.scene);
            this.gltf = null;
        }
        this.loader.load(this.gltfUrl, (gltf) => {
            this.showLoading = false;
            this.gltf = gltf;
            const box = new THREE.Box3().setFromObject(this.gltf.scene);
            this.size = box.getSize(new THREE.Vector3()).length();
            this.center = box.getCenter(new THREE.Vector3());
            //将坐标系原点设置在模型中心
            this.gltf.scene.position.x -= this.center.x;
            this.gltf.scene.position.y -= this.center.y;
            this.gltf.scene.position.z -= this.center.z;
            //PerspectiveCamera( fov : Number, aspect : Number, near : Number, far : Number )
            // fov — 摄像机视锥体垂直视野角度,眼睛张开的角度,0闭眼
            // aspect — 摄像机视锥体长宽比
            // near — 摄像机视锥体近端面,能看到的最近垂直距离
            // far — 摄像机视锥体远端面,能看到的最远垂直距离
            this.camera = new THREE.PerspectiveCamera(50, this.domWidth / this.domHeight, this.size / 100, this.size * 100);
            this.camera.updateProjectionMatrix();
            //position-摄像机位置
            //lookAt-摄像机望向位置  
            this.setCameraPlacement();
            //controls
            this.controls = new OrbitControls(this.camera, this.renderer.domElement);
            //根据模型size初始化state部分参数
            this.state.directionalLightPosition.x = 0;
            this.state.directionalLightPosition.y = this.size / 2;
            this.state.directionalLightPosition.z = 0;
            this.state.pointLightPosition.x = this.size / 2;
            this.state.pointLightPosition.y = 0;
            this.state.pointLightPosition.z = 0;
            this.state.pointLightDistance = this.size;
            //有动画默认播放第一个动画
            if (this.gltf.animations && this.gltf.animations.length) {
                this.state.animationIndex = 0;
            }
            else {
                this.state.animationIndex = -1;
            }
            //添加GUI控制面板
            if (this.controlMode) {
                this.addGUI();
            }
            else {
                if (this.gui) {
                    this.gui.destroy();
                    this.gui = null;
                }
            }
            //根据state参数初始化相关设置
            this.updateToneMapping();
            this.updateToneMappingExposure();
            this.updateBackground();
            this.toggleAxesHelper();
            this.toggleWireframe();
            this.toggleAutoRotate();
            this.updateAnimation();
            this.toggleAmbientLight();
            // this.updateAmbientLight();
            this.toggleDirectionalLight();
            // this.updateDirectionalLight();
            this.toggleDirectionalLightHelper();
            this.togglePointLight();
            // this.updatePointLight();
            this.togglePointLightHelper();
            this.scene.add(this.gltf.scene);
        });
    }
    //设置相机角度和望向位置
    setCameraPlacement() {
        switch (this.cameraPlacement) {
            case 'left': //x-红
                this.camera.position.set(-this.size, 0, 0);
                this.camera.lookAt(0, 0, 0);
                break;
            case 'right': //x-红
                this.camera.position.set(this.size, 0, 0);
                this.camera.lookAt(0, 0, 0);
                break;
            case 'top': //y-绿
                this.camera.position.set(0, this.size, 0);
                this.camera.lookAt(0, 0, 0);
                break;
            case 'bottom': //y-绿
                this.camera.position.set(0, -this.size, 0);
                this.camera.lookAt(0, 0, 0);
                break;
            case 'front': //z-蓝
                this.camera.position.set(0, 0, this.size);
                this.camera.lookAt(0, 0, 0);
                break;
            case 'back': //z-蓝
                this.camera.position.set(0, 0, -this.size);
                this.camera.lookAt(0, 0, 0);
                break;
            default:
                this.camera.position.copy(this.center);
                // this.camera.position.set(0, 0, 0);
                this.camera.position.x += this.size / 2;
                this.camera.position.y += this.size / 5;
                this.camera.position.z += this.size / 2;
                this.camera.lookAt(this.center);
                break;
        }
    }
    //add GUI
    addGUI() {
        //折叠参数
        let closeState = {
            gui: false,
            displayFolder: false,
            ambientLightFolder: true,
            directionalLightFolder: true,
            directionalLightHelperFolder: false,
            pointLightFolder: true,
            pointlLightHelperFolder: false
        };
        if (this.gui) {
            //记录上个gui的面板折叠值
            closeState = {
                gui: this.gui._closed,
                displayFolder: this.gui.children[0]._closed,
                ambientLightFolder: this.gui.children[1]._closed,
                directionalLightFolder: this.gui.children[2]._closed,
                directionalLightHelperFolder: this.gui.children[2].children[3]._closed,
                pointLightFolder: this.gui.children[3]._closed,
                pointlLightHelperFolder: this.gui.children[3].children[5]._closed
            };
            this.gui.destroy();
            this.gui = null;
        }
        this.gui = new GUI({ title: '控制面板', container: this.eleRef.nativeElement.querySelector('#control') });
        if (closeState.gui) {
            this.gui.close();
        }
        const displayFolder = this.gui.addFolder('显示设置');
        if (closeState.displayFolder) {
            displayFolder.close();
        }
        displayFolder.add(this.state, 'toneMapping', {
            'ACESFilmic': THREE.ACESFilmicToneMapping,
            'Linear': THREE.LinearToneMapping,
            'Reinhard': THREE.ReinhardToneMapping,
            'Cineon': THREE.CineonToneMapping,
            'AgX': THREE.AgXToneMapping,
            'Neutral': THREE.NeutralToneMapping
        }).name('色调').onChange(() => this.updateToneMapping());
        displayFolder.add(this.state, 'toneMappingExposure', -10, 5, 0.01).name('曝光').onChange(() => this.updateToneMappingExposure());
        displayFolder.add(this.state, 'background').name('启用背景').listen().onChange(() => this.updateBackground());
        displayFolder.addColor(this.state, 'backgroundColor').name('背景色').listen().onChange(() => this.updateBackground());
        displayFolder.add(this.state, 'axesHelper').name('坐标系').onChange(() => this.toggleAxesHelper());
        displayFolder.add(this.state, 'wireframe').name('线框模式').onChange(() => this.toggleWireframe());
        displayFolder.add(this.state, 'autoRotate').name('自动旋转').onChange(() => this.toggleAutoRotate());
        let animationList = { '无': -1 };
        if (this.gltf.animations && this.gltf.animations.length) {
            this.gltf.animations.map((animation, index) => {
                animationList[animation.name ? animation.name : '动画' + (index + 1)] = index;
            });
        }
        displayFolder.add(this.state, 'animationIndex', animationList).listen().name('动画').onChange(() => this.updateAnimation());
        const ambientLightFolder = this.gui.addFolder('环境光');
        if (closeState.ambientLightFolder) {
            ambientLightFolder.close();
        }
        ambientLightFolder.add(this.state, 'ambientLight').name('启用').onChange(() => this.toggleAmbientLight());
        ambientLightFolder.addColor(this.state, 'ambientLightColor').name('颜色').onChange(() => this.updateAmbientLight());
        ambientLightFolder.add(this.state, 'ambientLightIntensity', 0, 10, 0.1).name('强度').onChange(() => this.updateAmbientLight());
        const directionalLightFolder = this.gui.addFolder('定向光');
        if (closeState.directionalLightFolder) {
            directionalLightFolder.close();
        }
        directionalLightFolder.add(this.state, 'directionalLight').name('启用').onChange(() => this.toggleDirectionalLight());
        directionalLightFolder.addColor(this.state, 'directionalLightColor').name('颜色').onChange(() => this.updateDirectionalLight());
        directionalLightFolder.add(this.state, 'directionalLightIntensity', 0, 10, 0.1).name('强度').onChange(() => this.updateDirectionalLight());
        const directionalLightHelperFolder = directionalLightFolder.addFolder('定向光位置');
        if (closeState.directionalLightHelperFolder) {
            directionalLightHelperFolder.close();
        }
        directionalLightHelperFolder.add(this.state, 'directionalLightHelper').listen().name('位置模拟').onChange(() => this.toggleDirectionalLightHelper());
        directionalLightHelperFolder.add(this.state.directionalLightPosition, 'x', -this.size, this.size).name('x(坐标系-红)').decimals(2).onChange(() => this.updateDirectionalLight());
        directionalLightHelperFolder.add(this.state.directionalLightPosition, 'y', -this.size, this.size).name('y(坐标系-绿)').decimals(2).onChange(() => this.updateDirectionalLight());
        directionalLightHelperFolder.add(this.state.directionalLightPosition, 'z', -this.size, this.size).name('z(坐标系-蓝)').decimals(2).onChange(() => this.updateDirectionalLight());
        const pointLightFolder = this.gui.addFolder('点光源');
        if (closeState.pointLightFolder) {
            pointLightFolder.close();
        }
        pointLightFolder.add(this.state, 'pointLight').name('启用').onChange(() => this.togglePointLight());
        pointLightFolder.addColor(this.state, 'pointLightColor').name('颜色').onChange(() => this.updatePointLight());
        pointLightFolder.add(this.state, 'pointLightIntensity', 0, 10, 0.1).name('强度').onChange(() => this.updatePointLight());
        pointLightFolder.add(this.state, 'pointLightDistance', 0, this.size).name('范围').decimals(2).onChange(() => this.updatePointLight());
        pointLightFolder.add(this.state, 'pointLightDecay', 0, 2, 0.1).name('衰减').onChange(() => this.updatePointLight());
        const pointlLightHelperFolder = pointLightFolder.addFolder('点光源位置');
        if (closeState.pointlLightHelperFolder) {
            pointlLightHelperFolder.close();
        }
        pointlLightHelperFolder.add(this.state, 'pointLightHelper').listen().name('位置模拟').onChange(() => this.togglePointLightHelper());
        pointlLightHelperFolder.add(this.state.pointLightPosition, 'x', -this.size, this.size).name('x(坐标系-红)').decimals(2).onChange(() => this.updatePointLight());
        pointlLightHelperFolder.add(this.state.pointLightPosition, 'y', -this.size, this.size).name('y(坐标系-绿)').decimals(2).onChange(() => this.updatePointLight());
        pointlLightHelperFolder.add(this.state.pointLightPosition, 'z', -this.size, this.size).name('z(坐标系-蓝)').decimals(2).onChange(() => this.updatePointLight());
    }
    //色调
    updateToneMapping() {
        this.renderer.toneMapping = this.state.toneMapping;
    }
    //曝光
    updateToneMappingExposure() {
        this.renderer.toneMappingExposure = Math.pow(2, this.state.toneMappingExposure);
    }
    //背景
    updateBackground() {
        if (this.state.background) {
            this.scene.background = new THREE.Color(this.state.backgroundColor);
        }
        else {
            this.scene.background = null;
        }
    }
    toggleAxesHelper() {
        //x-红,y-绿,z-蓝
        if (this.state.axesHelper) {
            if (this.axesHelper) {
                this.scene.remove(this.axesHelper);
                this.axesHelper = null;
            }
            this.axesHelper = new THREE.AxesHelper(this.size);
            this.scene.add(this.axesHelper);
        }
        else {
            if (this.axesHelper) {
                this.scene.remove(this.axesHelper);
                this.axesHelper = null;
            }
        }
    }
    //线框模式
    toggleWireframe() {
        this.traverseMaterials(this.gltf.scene, (material) => {
            material.wireframe = this.state.wireframe;
            if (material instanceof THREE.PointsMaterial) {
                material.size = 1;
            }
        });
    }
    //遍历材质
    traverseMaterials(object, callback) {
        object.traverse((node) => {
            if (!node.geometry)
                return;
            const materials = Array.isArray(node.material) ? node.material : [node.material];
            materials.forEach(callback);
        });
    }
    //自动旋转
    toggleAutoRotate() {
        this.controls.autoRotate = this.state.autoRotate;
    }
    //开关动画
    updateAnimation() {
        //先停止所有动画,否者关闭动画后会存在动作残留
        if (this.mixer) {
            this.mixer.stopAllAction();
            this.mixer = null;
        }
        if (this.gltf.animations && this.gltf.animations.length && this.state.animationIndex != -1) {
            this.mixer = new THREE.AnimationMixer(this.gltf.scene);
            let animation = this.gltf.animations[this.state.animationIndex];
            if (this.mixer) {
                this.mixer.clipAction(animation).play();
            }
        }
    }
    toggleAmbientLight() {
        if (this.state.ambientLight) {
            if (this.ambientLight) {
                this.scene.remove(this.ambientLight);
                this.ambientLight = null;
            }
            this.ambientLight = new THREE.AmbientLight(this.state.ambientLightColor, this.state.ambientLightIntensity);
            this.scene.add(this.ambientLight);
        }
        else {
            if (this.ambientLight) {
                this.scene.remove(this.ambientLight);
                this.ambientLight = null;
            }
        }
    }
    //更新环境光
    updateAmbientLight() {
        if (this.state.ambientLight) {
            this.ambientLight.color.set(this.state.ambientLightColor);
            this.ambientLight.intensity = this.state.ambientLightIntensity;
        }
    }
    toggleDirectionalLight() {
        if (this.state.directionalLight) {
            if (this.directionalLight) {
                this.scene.remove(this.directionalLight);
                this.directionalLight = null;
            }
            this.directionalLight = new THREE.DirectionalLight(this.state.directionalLightColor, this.state.directionalLightIntensity);
            this.directionalLight.position.set(this.state.directionalLightPosition.x, this.state.directionalLightPosition.y, this.state.directionalLightPosition.z);
            this.scene.add(this.directionalLight);
        }
        else {
            if (this.directionalLight) {
                this.scene.remove(this.directionalLight);
                this.directionalLight = null;
            }
            //关闭位置模拟
            this.state.directionalLightHelper = false;
            this.toggleDirectionalLightHelper();
        }
    }
    //更新定向光
    updateDirectionalLight() {
        if (this.state.directionalLight) {
            this.directionalLight.color.set(this.state.directionalLightColor);
            this.directionalLight.intensity = this.state.directionalLightIntensity;
            this.directionalLight.position.set(this.state.directionalLightPosition.x, this.state.directionalLightPosition.y, this.state.directionalLightPosition.z);
            if (this.directionalLightHelper) {
                this.directionalLightHelper.update();
            }
        }
    }
    toggleDirectionalLightHelper() {
        if (this.state.directionalLightHelper) {
            if (this.directionalLight) { //开启定向光才能开启位置模拟
                if (this.directionalLightHelper) {
                    this.scene.remove(this.directionalLightHelper);
                    this.directionalLightHelper = null;
                }
                this.directionalLightHelper = new THREE.DirectionalLightHelper(this.directionalLight, this.size / 20, 0xff0000);
                this.scene.add(this.directionalLightHelper);
            }
            else {
                this.state.directionalLightHelper = false;
            }
        }
        else {
            if (this.directionalLightHelper) {
                this.scene.remove(this.directionalLightHelper);
                this.directionalLightHelper = null;
            }
        }
    }
    togglePointLight() {
        if (this.state.pointLight) {
            if (this.pointLight) {
                this.scene.remove(this.pointLight);
                this.pointLight = null;
            }
            //PointLight( color : Integer, intensity : Float, distance : Number, decay : Float )
            this.pointLight = new THREE.PointLight(this.state.pointLightColor, this.state.pointLightIntensity, this.state.pointLightDistance, this.state.pointLightDecay);
            this.pointLight.position.set(this.state.pointLightPosition.x, this.state.pointLightPosition.y, this.state.pointLightPosition.z);
            this.scene.add(this.pointLight);
        }
        else {
            if (this.pointLight) {
                this.scene.remove(this.pointLight);
                this.pointLight = null;
            }
            //关闭位置模拟
            this.state.pointLightHelper = false;
            this.togglePointLightHelper();
        }
    }
    //更新点光源
    updatePointLight() {
        if (this.state.pointLight) {
            this.pointLight.color.set(this.state.pointLightColor);
            this.pointLight.intensity = this.state.pointLightIntensity;
            this.pointLight.decay = this.state.pointLightDecay;
            this.pointLight.distance = this.state.pointLightDistance;
            this.pointLight.position.set(this.state.pointLightPosition.x, this.state.pointLightPosition.y, this.state.pointLightPosition.z);
            if (this.pointLightHelper) {
                this.pointLightHelper.update();
            }
        }
    }
    togglePointLightHelper() {
        if (this.state.pointLightHelper) {
            if (this.pointLight) { //开启点光源才能开启位置模拟
                if (this.pointLightHelper) {
                    this.scene.remove(this.pointLightHelper);
                    this.pointLightHelper = null;
                }
                this.pointLightHelper = new THREE.PointLightHelper(this.pointLight, this.size / 20, 0x2bff00);
                this.scene.add(this.pointLightHelper);
            }
            else {
                this.state.pointLightHelper = false;
            }
        }
        else {
            if (this.pointLightHelper) {
                this.scene.remove(this.pointLightHelper);
                this.pointLightHelper = null;
            }
        }
    }
    //webgl销毁
    webglLoseContext() {
        let gltfCanvasDom = this.eleRef.nativeElement.querySelector(`${this.domId} canvas`);
        if (gltfCanvasDom) {
            //手动销毁WebGL context对象(最多16个,超出的话最先加载的会被移除)
            let gl = gltfCanvasDom.getContext('webgl2');
            gl.getExtension('WEBGL_lose_context').loseContext();
            //dom移除
            gltfCanvasDom.remove();
        }
    }
}
GltfViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: GltfViewerComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalService }], target: i0.ɵɵFactoryTarget.Component });
GltfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: GltfViewerComponent, selector: "nc-gltf-viewer", inputs: { ncUrl: "ncUrl", ncCameraPlacement: "ncCameraPlacement", ncBg: "ncBg", ncBgColor: "ncBgColor", ncTips: "ncTips", ncControl: "ncControl", ncAlpha: "ncAlpha" }, ngImport: i0, template: "<div id=\"gltfViewer\" *ngIf=\"parametersOk\">\r\n    <div class=\"loading\" *ngIf=\"showLoading\">\r\n        <div class=\"nc-loading\">\r\n            <div class=\"spin29_default\"></div>\r\n            <div style=\"color: 'rgb(255,165,91)';font-weight: 400;\" class=\"ncTips_default\">\u6A21\u578B\u52A0\u8F7D\u4E2D...</div>\r\n        </div>\r\n    </div>\r\n    <div id=\"tips\" *ngIf=\"tipsMode\">\r\n        <div class=\"tip-row\">\r\n            <div class=\"row-img\">\r\n                <img\r\n                    src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSI2NHB4IgogICBoZWlnaHQ9IjY0cHgiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTW91c2VMZWZ0LnN2ZyI+PG1ldGFkYXRhCiAgIGlkPSJtZXRhZGF0YTIxIj48cmRmOlJERj48Y2M6V29yawogICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlIC8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgIGlkPSJkZWZzMTkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICBib3JkZXJvcGFjaXR5PSIxIgogICBvYmplY3R0b2xlcmFuY2U9IjEwIgogICBncmlkdG9sZXJhbmNlPSIxMCIKICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxMjgyIgogICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4ODYiCiAgIGlkPSJuYW1lZHZpZXcxNyIKICAgc2hvd2dyaWQ9ImZhbHNlIgogICBpbmtzY2FwZTp6b29tPSIzLjY4NzUiCiAgIGlua3NjYXBlOmN4PSItMTAuMzA1MDg1IgogICBpbmtzY2FwZTpjeT0iMzIiCiAgIGlua3NjYXBlOndpbmRvdy14PSIxMDQiCiAgIGlua3NjYXBlOndpbmRvdy15PSIxMzYiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImczIiAvPgo8ZwogICBpZD0iZzMiPgoJPGcKICAgaWQ9Imc1IgogICBzdHlsZT0iZmlsbDojNGQ0ZDRkO3N0cm9rZTojNGQ0ZDRkIj4KCQk8cGF0aAogICBmaWxsPSIjMDIwMjAyIgogICBkPSJNMzIuODU0LDIwLjAyOGMtMC4wMTUtMS4yNzQsMC41NzYtMi4yNjksMS4xNTEtMy4yMzZjMC43NTgtMS4yNzgsMS41NDMtMi42LDAuOTk3LTQuNDE3ICAgIGMtMC41NTUtMS42NjctMS42MDctMi40ODUtMi41MzktMy4yMTJjLTEuMjU0LTAuOTczLTIuMTU5LTEuNjc2LTEuNjg3LTQuMzQzbDAuMDQxLTAuMjI5bC0xLjM1LTAuMjM4TDI5LjQyNyw0LjU4ICAgIGMtMC42MTUsMy40ODQsMC44NzgsNC42NDMsMi4xOTUsNS42NjZjMC44NSwwLjY2MywxLjY1MywxLjI4OCwyLjA3MiwyLjU0MmMwLjM2NiwxLjIyNC0wLjE4LDIuMTQzLTAuODY5LDMuMzA2ICAgIGMtMC42NDEsMS4wODEtMS4zNjYsMi4zLTEuMzQ5LDMuOTMzYy02LjgzNywwLjAwNy0xMy44MjMsMC4yOTEtMTMuODIzLDI0LjU5YzAsMTAuOTUxLDguNzk5LDE1LjAzMiwxNC4zNDcsMTUuMDMyICAgIGM1LjU0NSwwLDE0LjM0Ny00LjA4MSwxNC4zNDctMTUuMDMyQzQ2LjM0NywyMC4zNDcsMzkuMjI4LDIwLjA0OCwzMi44NTQsMjAuMDI4eiBNMzIuNjg1LDIxLjM5OSAgICBjNS42NDMsMC4wMTIsMTAuOTI3LDAuMjM2LDEyLjA2MywxNi4xNTNjLTMuODYsMS44MDUtNy45MTYsMi43NjUtMTIuMDYzLDIuODZ2LTIuOTY2YzAuODQ1LTAuMTYyLDEuNDgxLTAuOTA5LDEuNDgxLTEuNzgydi04Ljk1NiAgICBjMC0wLjg3Ni0wLjYzNy0xLjYyMS0xLjQ4MS0xLjc4NFYyMS4zOTl6IE0zMS42NTgsMjYuMjU0aDAuNjg1YzAuMjQ5LDAsMC40NTMsMC4yMDUsMC40NTMsMC40NTR2OC45NTYgICAgYzAsMC4yNDktMC4yMDQsMC40NDktMC40NTMsMC40NDloLTAuNjg1Yy0wLjI0OSwwLTAuNDUyLTAuMi0wLjQ1Mi0wLjQ0OXYtOC45NTZDMzEuMjA2LDI2LjQ1OSwzMS40MDksMjYuMjU0LDMxLjY1OCwyNi4yNTR6ICAgICBNMzEuMzEzLDIxLjM5OXYzLjUyNWMtMC44NDUsMC4xNjMtMS40NzksMC45MS0xLjQ3OSwxLjc4NHY4Ljk1NmMwLDAuODczLDAuNjM0LDEuNjIsMS40NzksMS43ODJ2Mi45NjYgICAgYy02LjMxMS0wLjE0OC0xMC45MDUtMi4yNTItMTIuMDYzLTIuODM5QzIwLjM4MSwyMS42MzMsMjUuNjY4LDIxLjQxMSwzMS4zMTMsMjEuMzk5eiBNMzIsNTguMjc0ICAgIGMtNS4wMTYsMC0xMi45NzYtMy43MDctMTIuOTc2LTEzLjY1OGMwLTEuOTgzLDAuMDQ1LTMuODUzLDAuMTM0LTUuNTYzYzIuMDAzLDAuOTI5LDYuNjk2LDIuNzQsMTIuODY4LDIuNzQgICAgYzQuMzk0LDAsOC43MDQtMC45MzQsMTIuODEzLTIuNzcxYzAuMDg5LDEuNzE4LDAuMTM1LDMuNiwwLjEzNSw1LjU5NUM0NC45NzQsNTQuNTY3LDM3LjAxNiw1OC4yNzQsMzIsNTguMjc0eiIKICAgaWQ9InBhdGg3IgogICBzdHlsZT0iZmlsbDojNGQ0ZDRkO3N0cm9rZTojNGQ0ZDRkIiAvPgoJPC9nPgoJCgkKPHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0NCIKICAgZD0ibSAzMi45MjIwMzQsMzguOTUwNzkzIGMgMCwtMS4xMzU4MjUgMC4xMTQ5MTksLTEuNDU4MDQ1IDAuNjc3OTY2LC0xLjkwMDkzOCBsIDAuNjc3OTY2LC0wLjUzMzI4OCAwLC01LjI4MDc4IGMgMCwtNS4yNzEyNDkgLTAuMDAxMiwtNS4yODIwMDMgLTAuNjc3OTY2LC01Ljk1ODc0NSAtMC41NTc0MzksLTAuNTU3NDM5IC0wLjY3Nzk2NiwtMC45NDA5MzUgLTAuNjc3OTY2LC0yLjE1NzE2NSBsIDAsLTEuNDc5MTk5IDEuNTM1NDg3LDAgYyA1LjY1NzU1NCwwIDguNTg0MzM4LDMuNzI4NTI5IDkuNzE4NTUsMTIuMzgwNzkxIDAuNDk4NDM0LDMuODAyMjY1IDAuNTAzNDgsMy41MjU3MzEgLTAuMDY3NiwzLjcwNDU3MiAtMC4yNjEwMTcsMC4wODE3NCAtMS41Mjg2OTQsMC41MTIwMTYgLTIuODE3MDU5LDAuOTU2MTY3IC0yLjAzNzIwNiwwLjcwMjMwNiAtNC4wNDgwMzIsMS4xMTMwNDQgLTcuNDg4MDI2LDEuNTI5NTI4IGwgLTAuODgxMzU2LDAuMTA2NzA3IDAsLTEuMzY3NjUgeiIKICAgaWQ9InBhdGgzNzY4IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMzEuNDg1MDgxLDM1Ljg0MjE0MyBjIC0wLjEwNDU5MSwtMC4xMDQ1OTEgLTAuMTkwMTY2LC0yLjIzMTM0NyAtMC4xOTAxNjYsLTQuNzI2MTIzIDAsLTMuOTgzOTk0IDAuMDU1MDIsLTQuNTU3MDcxIDAuNDUyMTI3LC00LjcwOTQ1NiAwLjI0ODY3LC0wLjA5NTQyIDAuNTU2ODAyLC0wLjA2ODgyIDAuNjg0NzM4LDAuMDU5MTIgMC4xMjc5MzcsMC4xMjc5MzYgMC4xOTkwNTYsMi4yOTY0ODEgMC4xNTgwNDMsNC44MTg5ODggLTAuMDYzMTksMy44ODY0MDUgLTAuMTM4NjcsNC41OTg2ODMgLTAuNDk0NTcyLDQuNjY3MDA5IC0wLjIzMTAwMywwLjA0NDM1IC0wLjUwNTU3OSwtMC4wMDQ5IC0wLjYxMDE3LC0wLjEwOTUzMyBsIDAsMCB6IgogICBpZD0icGF0aDM3NzAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0NCIKICAgZD0ibSAzMC40NDA0MzMsNTcuOTQ1MzE2IGMgLTMuMDY0MDUzLC0wLjQyMTEzIC02Ljc3NzIzLC0yLjQ3NDk1MyAtOC40NTc2MjEsLTQuNjc4MDYgLTIuMTU4OCwtMi44MzAzMzMgLTMuMTEzOTE4LC02LjczNzcxNiAtMi43Njk1OTIsLTExLjMzMDM4NSBsIDAuMTkzMTIxLC0yLjU3NTg3MiAyLjA3OTg4LDAuNzM1NjI4IGMgMy41MjcwMjYsMS4yNDc0NjYgNi4zMzc3MDEsMS43MTkwNjggMTAuMjE1NDc0LDEuNzE0MDUgNC4xNzE3NzEsLTAuMDA1NCA2LjY0Mjk4MSwtMC4zODg2OCAxMC4yNTgzNiwtMS41OTEwNTggMi4xNzg5NzMsLTAuNzI0NjY4IDIuNjkyMTkzLC0wLjgxNTg1NiAyLjgxMzQ0NCwtMC40OTk4ODMgMC4wODE1NywwLjIxMjU2IDAuMDg2NjQsMi4xMTk4NjQgMC4wMTEyNyw0LjIzODQ1MyAtMC4xMDYyMTcsMi45ODU4MSAtMC4yNjY1MzEsNC4yMTI5MzggLTAuNzEyOTM1LDUuNDU3MjA4IC0xLjQ1MDIxNyw0LjA0MjIwNiAtNC40MDExMTgsNi44NDQxNTYgLTguNDM3OTM4LDguMDEyMDE3IC0yLjMxNDc0NywwLjY2OTY2MSAtMy4zNDMxNCwwLjc3MjIxNSAtNS4xOTM0NjUsMC41MTc5MDIgeiIKICAgaWQ9InBhdGgzNzcyIgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjwvZz4KPHBhdGgKICAgc3R5bGU9ImZpbGw6IzY2Q0NGRjtzdHJva2U6IzY2Q0NGRjtzdHJva2Utd2lkdGg6MC4yNzExODY0Mzk5OTk5OTk5NyIKICAgZD0ibSAyOC43NDA1NTYsNDAuMDYzNjgyIGMgLTIuNDU3Nzk1LC0wLjI4NDk5NSAtNS4yOTE1MjIsLTAuOTc2ODgxIC03LjQ3OTUzOSwtMS44MjYyMTIgLTAuOTY5NDkyLC0wLjM3NjMzMiAtMS43OTI5MzksLTAuNzA0OTYxIC0xLjgyOTg4NCwtMC43MzAyODcgLTAuMTUyNTY0LC0wLjEwNDU4NCAwLjc2NjAxNiwtNi4yNDI1NDEgMS4xNjgwMSwtNy44MDQ2NTYgMS40MjExOTEsLTUuNTIyNjMxIDQuMzA0NDc3LC04LjA2MTg0OSA5LjE1NDI0MSwtOC4wNjE4NDkgbCAxLjU0MTUzMSwwIDAsMS42MjcxMTkgYyAwLDEuMjM3MTI1IC0wLjA5MzgxLDEuNjI3MTE4IC0wLjM5MTQwMiwxLjYyNzExOCAtMC4yMTUyNzEsMCAtMC41ODEzNzMsMC4yNzEyMjEgLTAuODEzNTU5LDAuNjAyNzE0IC0wLjM0NTg4OSwwLjQ5MzgyNiAtMC40MjIxNTcsMS41Mjc1MjQgLTAuNDIyMTU3LDUuNzIxNzA2IGwgMCw1LjExODk5MiAwLjgxMzU1OSwwLjc1OTk3OCBjIDAuNjc1ODQ2LDAuNjMxMzM1IDAuODEzNTU5LDAuOTcxMDgzIDAuODEzNTU5LDIuMDA3MTA4IDAsMC44MzU5MjEgLTAuMTExNzcxLDEuMjM1Mzc4IC0wLjMzODk4MywxLjIxMTQ4OSAtMC4xODY0NCwtMC4wMTk2IC0xLjE4MzM2LC0wLjEzMzU1MSAtMi4yMTUzNzYsLTAuMjUzMjIgbCAwLDAgeiIKICAgaWQ9InBhdGgzNzY2IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjwvc3ZnPg==\">\r\n            </div>\r\n            <div class=\"row-word\">\u65CB\u8F6C</div>\r\n        </div>\r\n        <div class=\"tip-row\">\r\n            <div class=\"row-img\">\r\n                <img\r\n                    src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSI2NHB4IgogICBoZWlnaHQ9IjY0cHgiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTW91c2VSaWdodC5zdmciPjxtZXRhZGF0YQogICBpZD0ibWV0YWRhdGEyMSI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPjxkYzp0aXRsZSAvPjwvY2M6V29yaz48L3JkZjpSREY+PC9tZXRhZGF0YT48ZGVmcwogICBpZD0iZGVmczE5IiAvPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgYm9yZGVyb3BhY2l0eT0iMSIKICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgIGd1aWRldG9sZXJhbmNlPSIxMCIKICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTI4MiIKICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iODg2IgogICBpZD0ibmFtZWR2aWV3MTciCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iMy42ODc1IgogICBpbmtzY2FwZTpjeD0iMzIiCiAgIGlua3NjYXBlOmN5PSIzMiIKICAgaW5rc2NhcGU6d2luZG93LXg9IjMxIgogICBpbmtzY2FwZTp3aW5kb3cteT0iMTUiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImczIiAvPgo8ZwogICBpZD0iZzMiPgoJPGcKICAgaWQ9Imc1IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIj4KCQk8cGF0aAogICBmaWxsPSIjMDIwMjAyIgogICBkPSJNMzIuODU0LDIwLjAyOGMtMC4wMTUtMS4yNzQsMC41NzYtMi4yNjksMS4xNTEtMy4yMzZjMC43NTgtMS4yNzgsMS41NDMtMi42LDAuOTk3LTQuNDE3ICAgIGMtMC41NTUtMS42NjctMS42MDctMi40ODUtMi41MzktMy4yMTJjLTEuMjU0LTAuOTczLTIuMTU5LTEuNjc2LTEuNjg3LTQuMzQzbDAuMDQxLTAuMjI5bC0xLjM1LTAuMjM4TDI5LjQyNyw0LjU4ICAgIGMtMC42MTUsMy40ODQsMC44NzgsNC42NDMsMi4xOTUsNS42NjZjMC44NSwwLjY2MywxLjY1MywxLjI4OCwyLjA3MiwyLjU0MmMwLjM2NiwxLjIyNC0wLjE4LDIuMTQzLTAuODY5LDMuMzA2ICAgIGMtMC42NDEsMS4wODEtMS4zNjYsMi4zLTEuMzQ5LDMuOTMzYy02LjgzNywwLjAwNy0xMy44MjMsMC4yOTEtMTMuODIzLDI0LjU5YzAsMTAuOTUxLDguNzk5LDE1LjAzMiwxNC4zNDcsMTUuMDMyICAgIGM1LjU0NSwwLDE0LjM0Ny00LjA4MSwxNC4zNDctMTUuMDMyQzQ2LjM0NywyMC4zNDcsMzkuMjI4LDIwLjA0OCwzMi44NTQsMjAuMDI4eiBNMzIuNjg1LDIxLjM5OSAgICBjNS42NDMsMC4wMTIsMTAuOTI3LDAuMjM2LDEyLjA2MywxNi4xNTNjLTMuODYsMS44MDUtNy45MTYsMi43NjUtMTIuMDYzLDIuODZ2LTIuOTY2YzAuODQ1LTAuMTYyLDEuNDgxLTAuOTA5LDEuNDgxLTEuNzgydi04Ljk1NiAgICBjMC0wLjg3Ni0wLjYzNy0xLjYyMS0xLjQ4MS0xLjc4NFYyMS4zOTl6IE0zMS42NTgsMjYuMjU0aDAuNjg1YzAuMjQ5LDAsMC40NTMsMC4yMDUsMC40NTMsMC40NTR2OC45NTYgICAgYzAsMC4yNDktMC4yMDQsMC40NDktMC40NTMsMC40NDloLTAuNjg1Yy0wLjI0OSwwLTAuNDUyLTAuMi0wLjQ1Mi0wLjQ0OXYtOC45NTZDMzEuMjA2LDI2LjQ1OSwzMS40MDksMjYuMjU0LDMxLjY1OCwyNi4yNTR6ICAgICBNMzEuMzEzLDIxLjM5OXYzLjUyNWMtMC44NDUsMC4xNjMtMS40NzksMC45MS0xLjQ3OSwxLjc4NHY4Ljk1NmMwLDAuODczLDAuNjM0LDEuNjIsMS40NzksMS43ODJ2Mi45NjYgICAgYy02LjMxMS0wLjE0OC0xMC45MDUtMi4yNTItMTIuMDYzLTIuODM5QzIwLjM4MSwyMS42MzMsMjUuNjY4LDIxLjQxMSwzMS4zMTMsMjEuMzk5eiBNMzIsNTguMjc0ICAgIGMtNS4wMTYsMC0xMi45NzYtMy43MDctMTIuOTc2LTEzLjY1OGMwLTEuOTgzLDAuMDQ1LTMuODUzLDAuMTM0LTUuNTYzYzIuMDAzLDAuOTI5LDYuNjk2LDIuNzQsMTIuODY4LDIuNzQgICAgYzQuMzk0LDAsOC43MDQtMC45MzQsMTIuODEzLTIuNzcxYzAuMDg5LDEuNzE4LDAuMTM1LDMuNiwwLjEzNSw1LjU5NUM0NC45NzQsNTQuNTY3LDM3LjAxNiw1OC4yNzQsMzIsNTguMjc0eiIKICAgaWQ9InBhdGg3IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIiAvPgoJPC9nPgoJCgkKPHBhdGgKICAgc3R5bGU9ImZpbGw6IzY1RkQwMDtzdHJva2U6IzY1RkQwMDtzdHJva2Utd2lkdGg6MC4yNzExODY0Mzk5OTk5OTk5NyIKICAgZD0ibSAzMi45MjIwMzQsMzguOTUwNzkzIGMgMCwtMS4xMzU4MjUgMC4xMTQ5MTksLTEuNDU4MDQ1IDAuNjc3OTY2LC0xLjkwMDkzOCBsIDAuNjc3OTY2LC0wLjUzMzI4OCAwLC01LjI4MDc4IGMgMCwtNS4yNzEyNDkgLTAuMDAxMiwtNS4yODIwMDMgLTAuNjc3OTY2LC01Ljk1ODc0NSAtMC41NTc0MzksLTAuNTU3NDM5IC0wLjY3Nzk2NiwtMC45NDA5MzUgLTAuNjc3OTY2LC0yLjE1NzE2NSBsIDAsLTEuNDc5MTk5IDEuNTM1NDg3LDAgYyA1LjY1NzU1NCwwIDguNTg0MzM4LDMuNzI4NTI5IDkuNzE4NTUsMTIuMzgwNzkxIDAuNDk4NDM0LDMuODAyMjY1IDAuNTAzNDgsMy41MjU3MzEgLTAuMDY3NiwzLjcwNDU3MiAtMC4yNjEwMTcsMC4wODE3NCAtMS41Mjg2OTQsMC41MTIwMTYgLTIuODE3MDU5LDAuOTU2MTY3IC0yLjAzNzIwNiwwLjcwMjMwNiAtNC4wNDgwMzIsMS4xMTMwNDQgLTcuNDg4MDI2LDEuNTI5NTI4IGwgLTAuODgxMzU2LDAuMTA2NzA3IDAsLTEuMzY3NjUgeiIKICAgaWQ9InBhdGgzNzY4IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMzEuNDg1MDgxLDM1Ljg0MjE0MyBjIC0wLjEwNDU5MSwtMC4xMDQ1OTEgLTAuMTkwMTY2LC0yLjIzMTM0NyAtMC4xOTAxNjYsLTQuNzI2MTIzIDAsLTMuOTgzOTk0IDAuMDU1MDIsLTQuNTU3MDcxIDAuNDUyMTI3LC00LjcwOTQ1NiAwLjI0ODY3LC0wLjA5NTQyIDAuNTU2ODAyLC0wLjA2ODgyIDAuNjg0NzM4LDAuMDU5MTIgMC4xMjc5MzcsMC4xMjc5MzYgMC4xOTkwNTYsMi4yOTY0ODEgMC4xNTgwNDMsNC44MTg5ODggLTAuMDYzMTksMy44ODY0MDUgLTAuMTM4NjcsNC41OTg2ODMgLTAuNDk0NTcyLDQuNjY3MDA5IC0wLjIzMTAwMywwLjA0NDM1IC0wLjUwNTU3OSwtMC4wMDQ5IC0wLjYxMDE3LC0wLjEwOTUzMyBsIDAsMCB6IgogICBpZD0icGF0aDM3NzAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0NCIKICAgZD0ibSAzMC40NDA0MzMsNTcuOTQ1MzE2IGMgLTMuMDY0MDUzLC0wLjQyMTEzIC02Ljc3NzIzLC0yLjQ3NDk1MyAtOC40NTc2MjEsLTQuNjc4MDYgLTIuMTU4OCwtMi44MzAzMzMgLTMuMTEzOTE4LC02LjczNzcxNiAtMi43Njk1OTIsLTExLjMzMDM4NSBsIDAuMTkzMTIxLC0yLjU3NTg3MiAyLjA3OTg4LDAuNzM1NjI4IGMgMy41MjcwMjYsMS4yNDc0NjYgNi4zMzc3MDEsMS43MTkwNjggMTAuMjE1NDc0LDEuNzE0MDUgNC4xNzE3NzEsLTAuMDA1NCA2LjY0Mjk4MSwtMC4zODg2OCAxMC4yNTgzNiwtMS41OTEwNTggMi4xNzg5NzMsLTAuNzI0NjY4IDIuNjkyMTkzLC0wLjgxNTg1NiAyLjgxMzQ0NCwtMC40OTk4ODMgMC4wODE1NywwLjIxMjU2IDAuMDg2NjQsMi4xMTk4NjQgMC4wMTEyNyw0LjIzODQ1MyAtMC4xMDYyMTcsMi45ODU4MSAtMC4yNjY1MzEsNC4yMTI5MzggLTAuNzEyOTM1LDUuNDU3MjA4IC0xLjQ1MDIxNyw0LjA0MjIwNiAtNC40MDExMTgsNi44NDQxNTYgLTguNDM3OTM4LDguMDEyMDE3IC0yLjMxNDc0NywwLjY2OTY2MSAtMy4zNDMxNCwwLjc3MjIxNSAtNS4xOTM0NjUsMC41MTc5MDIgeiIKICAgaWQ9InBhdGgzNzcyIgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMjguNzQwNTU2LDQwLjA2MzY4MiBjIC0yLjQ1Nzc5NSwtMC4yODQ5OTUgLTUuMjkxNTIyLC0wLjk3Njg4MSAtNy40Nzk1MzksLTEuODI2MjEyIC0wLjk2OTQ5MiwtMC4zNzYzMzIgLTEuNzkyOTM5LC0wLjcwNDk2MSAtMS44Mjk4ODQsLTAuNzMwMjg3IC0wLjE1MjU2NCwtMC4xMDQ1ODQgMC43NjYwMTYsLTYuMjQyNTQxIDEuMTY4MDEsLTcuODA0NjU2IDEuNDIxMTkxLC01LjUyMjYzMSA0LjMwNDQ3NywtOC4wNjE4NDkgOS4xNTQyNDEsLTguMDYxODQ5IGwgMS41NDE1MzEsMCAwLDEuNjI3MTE5IGMgMCwxLjIzNzEyNSAtMC4wOTM4MSwxLjYyNzExOCAtMC4zOTE0MDIsMS42MjcxMTggLTAuMjE1MjcxLDAgLTAuNTgxMzczLDAuMjcxMjIxIC0wLjgxMzU1OSwwLjYwMjcxNCAtMC4zNDU4ODksMC40OTM4MjYgLTAuNDIyMTU3LDEuNTI3NTI0IC0wLjQyMjE1Nyw1LjcyMTcwNiBsIDAsNS4xMTg5OTIgMC44MTM1NTksMC43NTk5NzggYyAwLjY3NTg0NiwwLjYzMTMzNSAwLjgxMzU1OSwwLjk3MTA4MyAwLjgxMzU1OSwyLjAwNzEwOCAwLDAuODM1OTIxIC0wLjExMTc3MSwxLjIzNTM3OCAtMC4zMzg5ODMsMS4yMTE0ODkgLTAuMTg2NDQsLTAuMDE5NiAtMS4xODMzNiwtMC4xMzM1NTEgLTIuMjE1Mzc2LC0wLjI1MzIyIGwgMCwwIHoiCiAgIGlkPSJwYXRoMzc3OCIKICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz48L2c+Cjwvc3ZnPg==\">\r\n            </div>\r\n            <div class=\"row-word\">\u5E73\u79FB</div>\r\n        </div>\r\n        <div class=\"tip-row\">\r\n            <div class=\"row-img\">\r\n                <img\r\n                    src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSI2NHB4IgogICBoZWlnaHQ9IjY0cHgiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTW91c2VNaWRkbGUuc3ZnIj48bWV0YWRhdGEKICAgaWQ9Im1ldGFkYXRhMjEiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48ZGM6dGl0bGUgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgaWQ9ImRlZnMxOSIgLz48c29kaXBvZGk6bmFtZWR2aWV3CiAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgIGdyaWR0b2xlcmFuY2U9IjEwIgogICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEyODIiCiAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9Ijg4NiIKICAgaWQ9Im5hbWVkdmlldzE3IgogICBzaG93Z3JpZD0iZmFsc2UiCiAgIGlua3NjYXBlOnpvb209IjMuNjg3NSIKICAgaW5rc2NhcGU6Y3g9Ii0xMC4zMDUwODUiCiAgIGlua3NjYXBlOmN5PSIzMiIKICAgaW5rc2NhcGU6d2luZG93LXg9IjMxIgogICBpbmtzY2FwZTp3aW5kb3cteT0iMTUiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImczIiAvPgo8ZwogICBpZD0iZzMiPgoJPGcKICAgaWQ9Imc1IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIj4KCQk8cGF0aAogICBmaWxsPSIjMDIwMjAyIgogICBkPSJNMzIuODU0LDIwLjAyOGMtMC4wMTUtMS4yNzQsMC41NzYtMi4yNjksMS4xNTEtMy4yMzZjMC43NTgtMS4yNzgsMS41NDMtMi42LDAuOTk3LTQuNDE3ICAgIGMtMC41NTUtMS42NjctMS42MDctMi40ODUtMi41MzktMy4yMTJjLTEuMjU0LTAuOTczLTIuMTU5LTEuNjc2LTEuNjg3LTQuMzQzbDAuMDQxLTAuMjI5bC0xLjM1LTAuMjM4TDI5LjQyNyw0LjU4ICAgIGMtMC42MTUsMy40ODQsMC44NzgsNC42NDMsMi4xOTUsNS42NjZjMC44NSwwLjY2MywxLjY1MywxLjI4OCwyLjA3MiwyLjU0MmMwLjM2NiwxLjIyNC0wLjE4LDIuMTQzLTAuODY5LDMuMzA2ICAgIGMtMC42NDEsMS4wODEtMS4zNjYsMi4zLTEuMzQ5LDMuOTMzYy02LjgzNywwLjAwNy0xMy44MjMsMC4yOTEtMTMuODIzLDI0LjU5YzAsMTAuOTUxLDguNzk5LDE1LjAzMiwxNC4zNDcsMTUuMDMyICAgIGM1LjU0NSwwLDE0LjM0Ny00LjA4MSwxNC4zNDctMTUuMDMyQzQ2LjM0NywyMC4zNDcsMzkuMjI4LDIwLjA0OCwzMi44NTQsMjAuMDI4eiBNMzIuNjg1LDIxLjM5OSAgICBjNS42NDMsMC4wMTIsMTAuOTI3LDAuMjM2LDEyLjA2MywxNi4xNTNjLTMuODYsMS44MDUtNy45MTYsMi43NjUtMTIuMDYzLDIuODZ2LTIuOTY2YzAuODQ1LTAuMTYyLDEuNDgxLTAuOTA5LDEuNDgxLTEuNzgydi04Ljk1NiAgICBjMC0wLjg3Ni0wLjYzNy0xLjYyMS0xLjQ4MS0xLjc4NFYyMS4zOTl6IE0zMS42NTgsMjYuMjU0aDAuNjg1YzAuMjQ5LDAsMC40NTMsMC4yMDUsMC40NTMsMC40NTR2OC45NTYgICAgYzAsMC4yNDktMC4yMDQsMC40NDktMC40NTMsMC40NDloLTAuNjg1Yy0wLjI0OSwwLTAuNDUyLTAuMi0wLjQ1Mi0wLjQ0OXYtOC45NTZDMzEuMjA2LDI2LjQ1OSwzMS40MDksMjYuMjU0LDMxLjY1OCwyNi4yNTR6ICAgICBNMzEuMzEzLDIxLjM5OXYzLjUyNWMtMC44NDUsMC4xNjMtMS40NzksMC45MS0xLjQ3OSwxLjc4NHY4Ljk1NmMwLDAuODczLDAuNjM0LDEuNjIsMS40NzksMS43ODJ2Mi45NjYgICAgYy02LjMxMS0wLjE0OC0xMC45MDUtMi4yNTItMTIuMDYzLTIuODM5QzIwLjM4MSwyMS42MzMsMjUuNjY4LDIxLjQxMSwzMS4zMTMsMjEuMzk5eiBNMzIsNTguMjc0ICAgIGMtNS4wMTYsMC0xMi45NzYtMy43MDctMTIuOTc2LTEzLjY1OGMwLTEuOTgzLDAuMDQ1LTMuODUzLDAuMTM0LTUuNTYzYzIuMDAzLDAuOTI5LDYuNjk2LDIuNzQsMTIuODY4LDIuNzQgICAgYzQuMzk0LDAsOC43MDQtMC45MzQsMTIuODEzLTIuNzcxYzAuMDg5LDEuNzE4LDAuMTM1LDMuNiwwLjEzNSw1LjU5NUM0NC45NzQsNTQuNTY3LDM3LjAxNiw1OC4yNzQsMzIsNTguMjc0eiIKICAgaWQ9InBhdGg3IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIiAvPgoJPC9nPgoJCgkKPHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0Mzk5OTk5OTk5NyIKICAgZD0ibSAzMi45MjIwMzQsMzguOTUwNzkzIGMgMCwtMS4xMzU4MjUgMC4xMTQ5MTksLTEuNDU4MDQ1IDAuNjc3OTY2LC0xLjkwMDkzOCBsIDAuNjc3OTY2LC0wLjUzMzI4OCAwLC01LjI4MDc4IGMgMCwtNS4yNzEyNDkgLTAuMDAxMiwtNS4yODIwMDMgLTAuNjc3OTY2LC01Ljk1ODc0NSAtMC41NTc0MzksLTAuNTU3NDM5IC0wLjY3Nzk2NiwtMC45NDA5MzUgLTAuNjc3OTY2LC0yLjE1NzE2NSBsIDAsLTEuNDc5MTk5IDEuNTM1NDg3LDAgYyA1LjY1NzU1NCwwIDguNTg0MzM4LDMuNzI4NTI5IDkuNzE4NTUsMTIuMzgwNzkxIDAuNDk4NDM0LDMuODAyMjY1IDAuNTAzNDgsMy41MjU3MzEgLTAuMDY3NiwzLjcwNDU3MiAtMC4yNjEwMTcsMC4wODE3NCAtMS41Mjg2OTQsMC41MTIwMTYgLTIuODE3MDU5LDAuOTU2MTY3IC0yLjAzNzIwNiwwLjcwMjMwNiAtNC4wNDgwMzIsMS4xMTMwNDQgLTcuNDg4MDI2LDEuNTI5NTI4IGwgLTAuODgxMzU2LDAuMTA2NzA3IDAsLTEuMzY3NjUgeiIKICAgaWQ9InBhdGgzNzY4IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMzAuNDQwNDMzLDU3Ljk0NTMxNiBjIC0zLjA2NDA1MywtMC40MjExMyAtNi43NzcyMywtMi40NzQ5NTMgLTguNDU3NjIxLC00LjY3ODA2IC0yLjE1ODgsLTIuODMwMzMzIC0zLjExMzkxOCwtNi43Mzc3MTYgLTIuNzY5NTkyLC0xMS4zMzAzODUgbCAwLjE5MzEyMSwtMi41NzU4NzIgMi4wNzk4OCwwLjczNTYyOCBjIDMuNTI3MDI2LDEuMjQ3NDY2IDYuMzM3NzAxLDEuNzE5MDY4IDEwLjIxNTQ3NCwxLjcxNDA1IDQuMTcxNzcxLC0wLjAwNTQgNi42NDI5ODEsLTAuMzg4NjggMTAuMjU4MzYsLTEuNTkxMDU4IDIuMTc4OTczLC0wLjcyNDY2OCAyLjY5MjE5MywtMC44MTU4NTYgMi44MTM0NDQsLTAuNDk5ODgzIDAuMDgxNTcsMC4yMTI1NiAwLjA4NjY0LDIuMTE5ODY0IDAuMDExMjcsNC4yMzg0NTMgLTAuMTA2MjE3LDIuOTg1ODEgLTAuMjY2NTMxLDQuMjEyOTM4IC0wLjcxMjkzNSw1LjQ1NzIwOCAtMS40NTAyMTcsNC4wNDIyMDYgLTQuNDAxMTE4LDYuODQ0MTU2IC04LjQzNzkzOCw4LjAxMjAxNyAtMi4zMTQ3NDcsMC42Njk2NjEgLTMuMzQzMTQsMC43NzIyMTUgLTUuMTkzNDY1LDAuNTE3OTAyIHoiCiAgIGlkPSJwYXRoMzc3MiIKICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz48cGF0aAogICBzdHlsZT0iZmlsbDojZmZmZmZmO3N0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDowLjI3MTE4NjQ0IgogICBkPSJtIDI4Ljc0MDU1Niw0MC4wNjM2ODIgYyAtMi40NTc3OTUsLTAuMjg0OTk1IC01LjI5MTUyMiwtMC45NzY4ODEgLTcuNDc5NTM5LC0xLjgyNjIxMiAtMC45Njk0OTIsLTAuMzc2MzMyIC0xLjc5MjkzOSwtMC43MDQ5NjEgLTEuODI5ODg0LC0wLjczMDI4NyAtMC4xNTI1NjQsLTAuMTA0NTg0IDAuNzY2MDE2LC02LjI0MjU0MSAxLjE2ODAxLC03LjgwNDY1NiAxLjQyMTE5MSwtNS41MjI2MzEgNC4zMDQ0NzcsLTguMDYxODQ5IDkuMTU0MjQxLC04LjA2MTg0OSBsIDEuNTQxNTMxLDAgMCwxLjYyNzExOSBjIDAsMS4yMzcxMjUgLTAuMDkzODEsMS42MjcxMTggLTAuMzkxNDAyLDEuNjI3MTE4IC0wLjIxNTI3MSwwIC0wLjU4MTM3MywwLjI3MTIyMSAtMC44MTM1NTksMC42MDI3MTQgLTAuMzQ1ODg5LDAuNDkzODI2IC0wLjQyMjE1NywxLjUyNzUyNCAtMC40MjIxNTcsNS43MjE3MDYgbCAwLDUuMTE4OTkyIDAuODEzNTU5LDAuNzU5OTc4IGMgMC42NzU4NDYsMC42MzEzMzUgMC44MTM1NTksMC45NzEwODMgMC44MTM1NTksMi4wMDcxMDggMCwwLjgzNTkyMSAtMC4xMTE3NzEsMS4yMzUzNzggLTAuMzM4OTgzLDEuMjExNDg5IC0wLjE4NjQ0LC0wLjAxOTYgLTEuMTgzMzYsLTAuMTMzNTUxIC0yLjIxNTM3NiwtMC4yNTMyMiBsIDAsMCB6IgogICBpZD0icGF0aDM3NzgiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZDgwMDtzdHJva2U6I2ZmZDgwMDtzdHJva2Utd2lkdGg6MC4zMzg3MDk2NSIKICAgZD0ibSAzMS4zNTYyNDMsMzUuODA5MjY0IGMgLTAuMTY0MzE0LC0wLjEwMzg1NiAtMC4yOTg3NTMsLTIuMjE1NjgyIC0wLjI5ODc1MywtNC42OTI5NDUgMCwtMy45NTYwMjYgMC4wODY0NCwtNC41MjUwOCAwLjcxMDI5NiwtNC42NzYzOTUgMC4zOTA2NjMsLTAuMDk0NzUgMC44NzQ3NCwtMC4wNjgzNCAxLjA3NTcyOSwwLjA1ODcgMC4yMDA5OTEsMC4xMjcwMzggMC4zMTI3MTksMi4yODAzNiAwLjI0ODI4OCw0Ljc4NTE1OSAtMC4wOTkyNywzLjg1OTEyMiAtMC4yMTc4NTMsNC41NjY0MDEgLTAuNzc2OTc3LDQuNjM0MjQ3IC0wLjM2MjkwOSwwLjA0NDA0IC0wLjc5NDI3LC0wLjAwNDkgLTAuOTU4NTgzLC0wLjEwODc2NSBsIDAsMCB6IgogICBpZD0icGF0aDM3NzAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PC9nPgo8L3N2Zz4=\">\r\n            </div>\r\n            <div class=\"row-word\">\u7F29\u653E</div>\r\n        </div>\r\n    </div>\r\n    <div id=\"control\"></div>\r\n</div>", styles: ["#gltfViewer{width:100%;height:100%;position:relative;overflow:hidden}#gltfViewer .loading{position:absolute;left:0;top:0;width:100%;height:100%}#gltfViewer .loading .nc-loading{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}#gltfViewer .loading .spin29_default{width:50px;aspect-ratio:1;display:grid;color:#854f1d;background:radial-gradient(farthest-side,currentColor calc(100% - (6px * 1)),#0000 calc(100% - (5px * 1)) 0);-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - (12px * 1)),#000 calc(100% - (12px * 1)));mask:radial-gradient(farthest-side,#0000 calc(100% - (12px * 1)),#000 calc(100% - (12px * 1)));border-radius:50%;animation:spin29 2s infinite linear}#gltfViewer .loading .spin29_default:before,#gltfViewer .loading .spin29_default:after{content:\"\";grid-row-start:1;grid-column-start:1;grid-row-end:auto;grid-column-end:auto;background:linear-gradient(currentColor 0 0) center,linear-gradient(currentColor 0 0) center;background-size:100% 10px,10px 100%;background-repeat:no-repeat}#gltfViewer .loading .spin29_default:after{transform:rotate(45deg)}@keyframes spin29{to{transform:rotate(1turn)}}#gltfViewer .loading .ncTips_default{font-size:18px;margin-top:18px;letter-spacing:2px}#gltfViewer #tips{position:absolute;left:10px;top:10px;border:1px solid #444;background-color:#262626bf;border-radius:10px;padding:0 20px 8px 10px}#gltfViewer #tips .tip-row{display:flex;align-items:flex-end;color:#fff}#gltfViewer #tips .tip-row .row-img{width:36px;height:36px}#gltfViewer #tips .tip-row .row-img img{width:100%;height:100%}#gltfViewer ::ng-deep #control{position:absolute;right:0;top:0}#gltfViewer ::ng-deep #control option{color:#000!important}#gltfViewer ::ng-deep #control .lil-gui.root>.children{max-height:600px}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: GltfViewerComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'nc-gltf-viewer',
                    templateUrl: './gltf-viewer.component.html',
                    styleUrls: ['./gltf-viewer.component.less']
                }]
        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalService }]; }, propDecorators: { ncUrl: [{
                type: Input
            }], ncCameraPlacement: [{
                type: Input
            }], ncBg: [{
                type: Input
            }], ncBgColor: [{
                type: Input
            }], ncTips: [{
                type: Input
            }], ncControl: [{
                type: Input
            }], ncAlpha: [{
                type: Input
            }] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9nbHRmLXZpZXdlci9nbHRmLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL2dsdGYtdmlld2VyL2dsdGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7OztBQVFqRSxNQUFNLE9BQU8sbUJBQW1CO0lBdUc5QixZQUFvQixNQUFrQixFQUFVLEVBQWdCO1FBQTVDLFdBQU0sR0FBTixNQUFNLENBQVk7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFjO1FBMURoRSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFM0IsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0IsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixVQUFLLEdBQUcsYUFBYSxDQUFDO1FBRXRCLG9CQUFlLEdBQVcsU0FBUyxDQUFDO1FBT3BDLFNBQUksR0FBVyxDQUFDLENBQUM7UUFHakIsSUFBSTtRQUNKLFVBQUssR0FBZ0MsSUFBSSxDQUFDO1FBQzFDLFVBQUssR0FBZ0IsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFHdkMsVUFBSyxHQUFRO1lBQ1gsV0FBVyxFQUFFLEtBQUssQ0FBQyxpQkFBaUI7WUFDcEMsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixVQUFVLEVBQUUsS0FBSztZQUNqQixlQUFlLEVBQUUsU0FBUztZQUMxQixVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsS0FBSztZQUNoQixVQUFVLEVBQUUsS0FBSztZQUNqQixjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ2xCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIscUJBQXFCLEVBQUUsQ0FBQztZQUN4QixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLHFCQUFxQixFQUFFLFNBQVM7WUFDaEMseUJBQXlCLEVBQUUsQ0FBQztZQUM1Qix3QkFBd0IsRUFBRTtnQkFDeEIsQ0FBQyxFQUFFLENBQUM7Z0JBQ0osQ0FBQyxFQUFFLENBQUM7Z0JBQ0osQ0FBQyxFQUFFLENBQUM7YUFDTDtZQUNELHNCQUFzQixFQUFFLEtBQUs7WUFDN0IsVUFBVSxFQUFFLEtBQUs7WUFDakIsZUFBZSxFQUFFLFNBQVM7WUFDMUIsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLGVBQWUsRUFBRSxHQUFHO1lBQ3BCLGtCQUFrQixFQUFFO2dCQUNsQixDQUFDLEVBQUUsQ0FBQztnQkFDSixDQUFDLEVBQUUsQ0FBQztnQkFDSixDQUFDLEVBQUUsQ0FBQzthQUNMO1lBQ0QsZ0JBQWdCLEVBQUUsS0FBSztTQUN4QixDQUFBO0lBRW1FLENBQUM7SUF0R3JFLE1BQU07SUFDTixJQUFhLEtBQUssQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxrQkFBa0I7WUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFBLENBQUM7SUFDRixpREFBaUQ7SUFDakQsSUFBYSxpQkFBaUIsQ0FBQyxLQUFhO1FBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUFBLENBQUM7SUFDRixTQUFTO0lBQ1QsSUFBYSxJQUFJLENBQUMsS0FBdUI7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQztRQUN0RyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFDRCxNQUFNO0lBQ04sSUFBYSxTQUFTLENBQUMsS0FBYTtRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBQ0QsTUFBTTtJQUNOLElBQWEsTUFBTSxDQUFDLEtBQXVCO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQztJQUNoRyxDQUFDO0lBQ0QsTUFBTTtJQUNOLElBQWEsU0FBUyxDQUFDLEtBQXVCO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQztJQUNuRyxDQUFDO0lBQ0QsUUFBUTtJQUNSLElBQWEsT0FBTyxDQUFDLEtBQXVCO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQztJQUNqRyxDQUFDO0lBOERELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDMUI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRTtZQUNyQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN4RDtRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDUixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDckIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLE9BQU87U0FDUjtRQUVELElBQUksUUFBUSxHQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUV2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUN0RCxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFdkUsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxPQUFPO1FBQ0wscUJBQXFCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLDRFQUE0RTtRQUM1RSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN4QjtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNmO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxVQUFVO1FBQ1YsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU07SUFDTixXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUV6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUVqQixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUVqRCxlQUFlO1lBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFNUMsaUZBQWlGO1lBQ2pGLGlDQUFpQztZQUNqQyxxQkFBcUI7WUFDckIsOEJBQThCO1lBQzlCLDZCQUE2QjtZQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNoSCxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDckMsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUUxQixVQUFVO1lBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFekUsc0JBQXNCO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFFMUMsY0FBYztZQUNkLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7YUFDL0I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7WUFFRCxXQUFXO1lBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDZjtpQkFBTTtnQkFDTCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7aUJBQ2pCO2FBQ0Y7WUFFRCxrQkFBa0I7WUFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQiw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsaUNBQWlDO1lBQ2pDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUU5QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWE7SUFDYixrQkFBa0I7UUFDaEIsUUFBUSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzVCLEtBQUssTUFBTSxFQUFDLEtBQUs7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLE9BQU8sRUFBQyxLQUFLO2dCQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLEtBQUssRUFBQyxLQUFLO2dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtZQUNSLEtBQUssUUFBUSxFQUFDLEtBQUs7Z0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1lBQ1IsS0FBSyxPQUFPLEVBQUMsS0FBSztnQkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1lBQ1IsS0FBSyxNQUFNLEVBQUMsS0FBSztnQkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtZQUNSO2dCQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZDLHFDQUFxQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElB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VSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBRTdLLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7WUFDL0IsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDMUI7UUFDRCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDbEcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDNUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDdkgsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxD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aXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7IEdMVEZMb2FkZXIgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vbG9hZGVycy9HTFRGTG9hZGVyLmpzJztcclxuaW1wb3J0IHsgT3JiaXRDb250cm9scyB9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9jb250cm9scy9PcmJpdENvbnRyb2xzJztcclxuaW1wb3J0IHsgUm9vbUVudmlyb25tZW50IH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2Vudmlyb25tZW50cy9Sb29tRW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBLVFgyTG9hZGVyIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xvYWRlcnMvS1RYMkxvYWRlcic7XHJcbmltcG9ydCB7IE1lc2hvcHREZWNvZGVyIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xpYnMvbWVzaG9wdF9kZWNvZGVyLm1vZHVsZS5qcyc7XHJcbmltcG9ydCB7IEdVSSB9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9saWJzL2xpbC1ndWkubW9kdWxlLm1pbic7XHJcbmltcG9ydCB7IExvY2FsU2VydmljZSB9IGZyb20gJy4vbG9jYWwuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25jLWdsdGYtdmlld2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2x0Zi12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dsdGYtdmlld2VyLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEdsdGZWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLy/mqKHlnovlnLDlnYBcclxuICBASW5wdXQoKSBzZXQgbmNVcmwodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5nbHRmVXJsID0gdmFsdWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy/liqDlu7bov5/vvIzpmLLmraLlhbbku5bkvKDlhaXlj4LmlbDmnKrojrflj5bliLBcclxuICAgICAgaWYgKHRoaXMuc2NlbmUpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfTtcclxuICAvL+aRhOWDj+acuuWIneWni+aWueS9jWRlZmF1bHQsbGVmdCxyaWdodCx0b3AsYm90dG9tLGJhY2ssZnJvbnRcclxuICBASW5wdXQoKSBzZXQgbmNDYW1lcmFQbGFjZW1lbnQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jYW1lcmFQbGFjZW1lbnQgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnNjZW5lKSB7XHJcbiAgICAgIHRoaXMuc2V0Q2FtZXJhUGxhY2VtZW50KCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICAvL+aYr+WQpuWQr+eUqOiDjOaZr+iJslxyXG4gIEBJbnB1dCgpIHNldCBuY0JnKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0YXRlLmJhY2tncm91bmQgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuICAgIGlmICh0aGlzLnNjZW5lKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQmFja2dyb3VuZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL+iDjOaZr+iJsuWAvFxyXG4gIEBJbnB1dCgpIHNldCBuY0JnQ29sb3IodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdGF0ZS5iYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnNjZW5lKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQmFja2dyb3VuZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL+aTjeS9nOaPkOekulxyXG4gIEBJbnB1dCgpIHNldCBuY1RpcHModmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgIHRoaXMudGlwc01vZGUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgLy/mjqfliLbpnaLmnb9cclxuICBASW5wdXQoKSBzZXQgbmNDb250cm9sKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xNb2RlID0gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG4gIC8v6IOM5pmv5piv5ZCm6YCP5piOXHJcbiAgQElucHV0KCkgc2V0IG5jQWxwaGEodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuYWxwaGFNb2RlID0gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG5cclxuICB0aXBzTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnRyb2xNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWxwaGFNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHBhcmFtZXRlcnNPazogYm9vbGVhbiA9IHRydWU7XHJcbiAgZ2x0ZlVybDogc3RyaW5nID0gJyc7XHJcbiAgc2hvd0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkb21JZCA9ICcjZ2x0ZlZpZXdlcic7XHJcbiAgY2FtZXJhOiBhbnk7XHJcbiAgY2FtZXJhUGxhY2VtZW50OiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcbiAgc2NlbmU6IGFueTtcclxuICBsb2FkZXI6IGFueTtcclxuICByZW5kZXJlcjogYW55O1xyXG4gIGRvbVdpZHRoOiBhbnk7XHJcbiAgZG9tSGVpZ2h0OiBhbnk7XHJcbiAgZ2x0ZjogYW55O1xyXG4gIHNpemU6IG51bWJlciA9IDA7XHJcbiAgY2VudGVyOiBhbnk7XHJcbiAgY29udHJvbHM6IGFueTtcclxuICAvL+WKqOeUu1xyXG4gIG1peGVyOiBUSFJFRS5BbmltYXRpb25NaXhlciB8IG51bGwgPSBudWxsO1xyXG4gIGNsb2NrOiBUSFJFRS5DbG9jayA9IG5ldyBUSFJFRS5DbG9jaygpO1xyXG5cclxuICBndWk6IGFueTtcclxuICBzdGF0ZTogYW55ID0ge1xyXG4gICAgdG9uZU1hcHBpbmc6IFRIUkVFLkxpbmVhclRvbmVNYXBwaW5nLFxyXG4gICAgdG9uZU1hcHBpbmdFeHBvc3VyZTogMCxcclxuICAgIGJhY2tncm91bmQ6IGZhbHNlLFxyXG4gICAgYmFja2dyb3VuZENvbG9yOiAnIzE5MTkxOScsXHJcbiAgICBheGVzSGVscGVyOiBmYWxzZSxcclxuICAgIHdpcmVmcmFtZTogZmFsc2UsXHJcbiAgICBhdXRvUm90YXRlOiBmYWxzZSxcclxuICAgIGFuaW1hdGlvbkluZGV4OiAtMSxcclxuICAgIGFtYmllbnRMaWdodDogdHJ1ZSxcclxuICAgIGFtYmllbnRMaWdodENvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBhbWJpZW50TGlnaHRJbnRlbnNpdHk6IDIsXHJcbiAgICBkaXJlY3Rpb25hbExpZ2h0OiBmYWxzZSxcclxuICAgIGRpcmVjdGlvbmFsTGlnaHRDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgZGlyZWN0aW9uYWxMaWdodEludGVuc2l0eTogMSxcclxuICAgIGRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbjoge1xyXG4gICAgICB4OiAwLFxyXG4gICAgICB5OiAwLFxyXG4gICAgICB6OiAwXHJcbiAgICB9LFxyXG4gICAgZGlyZWN0aW9uYWxMaWdodEhlbHBlcjogZmFsc2UsXHJcbiAgICBwb2ludExpZ2h0OiBmYWxzZSxcclxuICAgIHBvaW50TGlnaHRDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgcG9pbnRMaWdodEludGVuc2l0eTogMSxcclxuICAgIHBvaW50TGlnaHREaXN0YW5jZTogMCxcclxuICAgIHBvaW50TGlnaHREZWNheTogMC4xLFxyXG4gICAgcG9pbnRMaWdodFBvc2l0aW9uOiB7XHJcbiAgICAgIHg6IDAsXHJcbiAgICAgIHk6IDAsXHJcbiAgICAgIHo6IDBcclxuICAgIH0sXHJcbiAgICBwb2ludExpZ2h0SGVscGVyOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgbHM6IExvY2FsU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZ2x0ZlVybCA9PSAnJykge1xyXG4gICAgICB0aGlzLnBhcmFtZXRlcnNPayA9IGZhbHNlO1xyXG4gICAgICBjb25zb2xlLmVycm9yKCduY1VybOS4uuepuicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5wYXJhbWV0ZXJzT2spIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25XaW5kb3dSZXNpemUgPSB0aGlzLm9uV2luZG93UmVzaXplLmJpbmQodGhpcyk7XHJcbiAgICB0aGlzLmFuaW1hdGUgPSB0aGlzLmFuaW1hdGUuYmluZCh0aGlzKTtcclxuICAgIGlmICh0aGlzLmxzLmlzQnJvd3Nlcikge1xyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbldpbmRvd1Jlc2l6ZSk7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsvL2RvbeWHuueOsFxyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH0sIDIwKVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5scy5pc0Jyb3dzZXIpIHtcclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25XaW5kb3dSZXNpemUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53ZWJnbExvc2VDb250ZXh0KCk7XHJcbiAgfVxyXG5cclxuICBpbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLnBhcmFtZXRlcnNPaykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGdsdGZBcmVhOiBhbnkgPSB0aGlzLmVsZVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5kb21JZCk7XHJcbiAgICB0aGlzLmRvbVdpZHRoID0gZ2x0ZkFyZWEub2Zmc2V0V2lkdGg7XHJcbiAgICB0aGlzLmRvbUhlaWdodCA9IGdsdGZBcmVhLm9mZnNldEhlaWdodDtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyZXIoeyBhbnRpYWxpYXM6IHRydWUsIGFscGhhOiB0aGlzLmFscGhhTW9kZSB9KTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhnbHRmQXJlYS5kZXZpY2VQaXhlbFJhdGlvKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U2l6ZSh0aGlzLmRvbVdpZHRoLCB0aGlzLmRvbUhlaWdodCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLm91dHB1dENvbG9yU3BhY2UgPSBUSFJFRS5TUkdCQ29sb3JTcGFjZTtcclxuICAgIGdsdGZBcmVhLmFwcGVuZENoaWxkKHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudCk7XHJcblxyXG4gICAgdGhpcy5zY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpO1xyXG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBuZXcgUm9vbUVudmlyb25tZW50KCk7XHJcbiAgICBjb25zdCBwbXJlbUdlbmVyYXRvciA9IG5ldyBUSFJFRS5QTVJFTUdlbmVyYXRvcih0aGlzLnJlbmRlcmVyKTtcclxuICAgIHRoaXMuc2NlbmUuZW52aXJvbm1lbnQgPSBwbXJlbUdlbmVyYXRvci5mcm9tU2NlbmUoZW52aXJvbm1lbnQpLnRleHR1cmU7XHJcblxyXG4gICAgY29uc3Qga3R4MkxvYWRlciA9IG5ldyBLVFgyTG9hZGVyKCkuc2V0VHJhbnNjb2RlclBhdGgoJ2pzL2xpYnMvYmFzaXMvJykuZGV0ZWN0U3VwcG9ydCh0aGlzLnJlbmRlcmVyKTtcclxuICAgIHRoaXMubG9hZGVyID0gbmV3IEdMVEZMb2FkZXIobmV3IFRIUkVFLkxvYWRpbmdNYW5hZ2VyKCkpO1xyXG4gICAgdGhpcy5sb2FkZXIuc2V0S1RYMkxvYWRlcihrdHgyTG9hZGVyKTtcclxuICAgIHRoaXMubG9hZGVyLnNldE1lc2hvcHREZWNvZGVyKE1lc2hvcHREZWNvZGVyKTtcclxuICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcclxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGUpO1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5zY2VuZSwgdGhpcy5jYW1lcmEpO1xyXG4gIH1cclxuXHJcbiAgYW5pbWF0ZSgpIHtcclxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGUpO1xyXG4gICAgLy8gcmVxdWlyZWQgaWYgY29udHJvbHMuZW5hYmxlRGFtcGluZyBvciBjb250cm9scy5hdXRvUm90YXRlIGFyZSBzZXQgdG8gdHJ1ZVxyXG4gICAgaWYgKHRoaXMuY29udHJvbHMpIHtcclxuICAgICAgdGhpcy5jb250cm9scy51cGRhdGUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNjZW5lICYmIHRoaXMuY2FtZXJhKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGVsdGEgPSB0aGlzLmNsb2NrLmdldERlbHRhKCk7XHJcbiAgICAvLyDmm7TmlrDliqjnlLvmt7flkIjlmahcclxuICAgIGlmICh0aGlzLm1peGVyKSB7XHJcbiAgICAgIHRoaXMubWl4ZXIudXBkYXRlKGRlbHRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCBnbHRmQXJlYTogYW55ID0gdGhpcy5lbGVSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZG9tSWQpO1xyXG4gICAgICBjb25zdCB3aWR0aCA9IGdsdGZBcmVhLm9mZnNldFdpZHRoO1xyXG4gICAgICBjb25zdCBoZWlnaHQgPSBnbHRmQXJlYS5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhnbHRmQXJlYS5kZXZpY2VQaXhlbFJhdGlvKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTaXplKHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8v5pu05paw5qih5Z6LXHJcbiAgdXBkYXRlTW9kZWwoKSB7XHJcbiAgICB0aGlzLnNob3dMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5nbHRmKSB7XHJcbiAgICAgIHRoaXMuc2NlbmUucmVtb3ZlKHRoaXMuZ2x0Zi5zY2VuZSk7XHJcbiAgICAgIHRoaXMuZ2x0ZiA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkZXIubG9hZCh0aGlzLmdsdGZVcmwsIChnbHRmOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zaG93TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5nbHRmID0gZ2x0ZjtcclxuXHJcbiAgICAgIGNvbnN0IGJveCA9IG5ldyBUSFJFRS5Cb3gzKCkuc2V0RnJvbU9iamVjdCh0aGlzLmdsdGYuc2NlbmUpO1xyXG4gICAgICB0aGlzLnNpemUgPSBib3guZ2V0U2l6ZShuZXcgVEhSRUUuVmVjdG9yMygpKS5sZW5ndGgoKTtcclxuICAgICAgdGhpcy5jZW50ZXIgPSBib3guZ2V0Q2VudGVyKG5ldyBUSFJFRS5WZWN0b3IzKCkpO1xyXG5cclxuICAgICAgLy/lsIblnZDmoIfns7vljp/ngrnorr7nva7lnKjmqKHlnovkuK3lv4NcclxuICAgICAgdGhpcy5nbHRmLnNjZW5lLnBvc2l0aW9uLnggLT0gdGhpcy5jZW50ZXIueDtcclxuICAgICAgdGhpcy5nbHRmLnNjZW5lLnBvc2l0aW9uLnkgLT0gdGhpcy5jZW50ZXIueTtcclxuICAgICAgdGhpcy5nbHRmLnNjZW5lLnBvc2l0aW9uLnogLT0gdGhpcy5jZW50ZXIuejtcclxuXHJcbiAgICAgIC8vUGVyc3BlY3RpdmVDYW1lcmEoIGZvdiA6IE51bWJlciwgYXNwZWN0IDogTnVtYmVyLCBuZWFyIDogTnVtYmVyLCBmYXIgOiBOdW1iZXIgKVxyXG4gICAgICAvLyBmb3Yg4oCUIOaRhOWDj+acuuinhumUpeS9k+WeguebtOinhumHjuinkuW6pu+8jOecvOedm+W8oOW8gOeahOinkuW6pu+8jDDpl63nnLxcclxuICAgICAgLy8gYXNwZWN0IOKAlCDmkYTlg4/mnLrop4bplKXkvZPplb/lrr3mr5RcclxuICAgICAgLy8gbmVhciDigJQg5pGE5YOP5py66KeG6ZSl5L2T6L+R56uv6Z2i77yM6IO955yL5Yiw55qE5pyA6L+R5Z6C55u06Led56a7XHJcbiAgICAgIC8vIGZhciDigJQg5pGE5YOP5py66KeG6ZSl5L2T6L+c56uv6Z2i77yM6IO955yL5Yiw55qE5pyA6L+c5Z6C55u06Led56a7XHJcbiAgICAgIHRoaXMuY2FtZXJhID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDUwLCB0aGlzLmRvbVdpZHRoIC8gdGhpcy5kb21IZWlnaHQsIHRoaXMuc2l6ZSAvIDEwMCwgdGhpcy5zaXplICogMTAwKTtcclxuICAgICAgdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xyXG4gICAgICAvL3Bvc2l0aW9uLeaRhOWDj+acuuS9jee9rlxyXG4gICAgICAvL2xvb2tBdC3mkYTlg4/mnLrmnJvlkJHkvY3nva4gIFxyXG4gICAgICB0aGlzLnNldENhbWVyYVBsYWNlbWVudCgpO1xyXG5cclxuICAgICAgLy9jb250cm9sc1xyXG4gICAgICB0aGlzLmNvbnRyb2xzID0gbmV3IE9yYml0Q29udHJvbHModGhpcy5jYW1lcmEsIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudCk7XHJcblxyXG4gICAgICAvL+agueaNruaooeWei3NpemXliJ3lp4vljJZzdGF0ZemDqOWIhuWPguaVsFxyXG4gICAgICB0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbi54ID0gMDtcclxuICAgICAgdGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24ueSA9IHRoaXMuc2l6ZSAvIDI7XHJcbiAgICAgIHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uLnogPSAwO1xyXG4gICAgICB0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbi54ID0gdGhpcy5zaXplIC8gMjtcclxuICAgICAgdGhpcy5zdGF0ZS5wb2ludExpZ2h0UG9zaXRpb24ueSA9IDA7XHJcbiAgICAgIHRoaXMuc3RhdGUucG9pbnRMaWdodFBvc2l0aW9uLnogPSAwO1xyXG4gICAgICB0aGlzLnN0YXRlLnBvaW50TGlnaHREaXN0YW5jZSA9IHRoaXMuc2l6ZTtcclxuXHJcbiAgICAgIC8v5pyJ5Yqo55S76buY6K6k5pKt5pS+56ys5LiA5Liq5Yqo55S7XHJcbiAgICAgIGlmICh0aGlzLmdsdGYuYW5pbWF0aW9ucyAmJiB0aGlzLmdsdGYuYW5pbWF0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnN0YXRlLmFuaW1hdGlvbkluZGV4ID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0YXRlLmFuaW1hdGlvbkluZGV4ID0gLTE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v5re75YqgR1VJ5o6n5Yi26Z2i5p2/XHJcbiAgICAgIGlmICh0aGlzLmNvbnRyb2xNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5hZGRHVUkoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5ndWkpIHtcclxuICAgICAgICAgIHRoaXMuZ3VpLmRlc3Ryb3koKTtcclxuICAgICAgICAgIHRoaXMuZ3VpID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v5qC55o2uc3RhdGXlj4LmlbDliJ3lp4vljJbnm7jlhbPorr7nva5cclxuICAgICAgdGhpcy51cGRhdGVUb25lTWFwcGluZygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVRvbmVNYXBwaW5nRXhwb3N1cmUoKTtcclxuICAgICAgdGhpcy51cGRhdGVCYWNrZ3JvdW5kKCk7XHJcbiAgICAgIHRoaXMudG9nZ2xlQXhlc0hlbHBlcigpO1xyXG4gICAgICB0aGlzLnRvZ2dsZVdpcmVmcmFtZSgpO1xyXG4gICAgICB0aGlzLnRvZ2dsZUF1dG9Sb3RhdGUoKTtcclxuICAgICAgdGhpcy51cGRhdGVBbmltYXRpb24oKTtcclxuICAgICAgdGhpcy50b2dnbGVBbWJpZW50TGlnaHQoKTtcclxuICAgICAgLy8gdGhpcy51cGRhdGVBbWJpZW50TGlnaHQoKTtcclxuICAgICAgdGhpcy50b2dnbGVEaXJlY3Rpb25hbExpZ2h0KCk7XHJcbiAgICAgIC8vIHRoaXMudXBkYXRlRGlyZWN0aW9uYWxMaWdodCgpO1xyXG4gICAgICB0aGlzLnRvZ2dsZURpcmVjdGlvbmFsTGlnaHRIZWxwZXIoKTtcclxuICAgICAgdGhpcy50b2dnbGVQb2ludExpZ2h0KCk7XHJcbiAgICAgIC8vIHRoaXMudXBkYXRlUG9pbnRMaWdodCgpO1xyXG4gICAgICB0aGlzLnRvZ2dsZVBvaW50TGlnaHRIZWxwZXIoKTtcclxuXHJcbiAgICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMuZ2x0Zi5zY2VuZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8v6K6+572u55u45py66KeS5bqm5ZKM5pyb5ZCR5L2N572uXHJcbiAgc2V0Q2FtZXJhUGxhY2VtZW50KCkge1xyXG4gICAgc3dpdGNoICh0aGlzLmNhbWVyYVBsYWNlbWVudCkge1xyXG4gICAgICBjYXNlICdsZWZ0JzovL3gt57qiXHJcbiAgICAgICAgdGhpcy5jYW1lcmEucG9zaXRpb24uc2V0KC10aGlzLnNpemUsIDAsIDApO1xyXG4gICAgICAgIHRoaXMuY2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmlnaHQnOi8veC3nuqJcclxuICAgICAgICB0aGlzLmNhbWVyYS5wb3NpdGlvbi5zZXQodGhpcy5zaXplLCAwLCAwKTtcclxuICAgICAgICB0aGlzLmNhbWVyYS5sb29rQXQoMCwgMCwgMCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RvcCc6Ly95Lee7v1xyXG4gICAgICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCgwLCB0aGlzLnNpemUsIDApO1xyXG4gICAgICAgIHRoaXMuY2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYm90dG9tJzovL3kt57u/XHJcbiAgICAgICAgdGhpcy5jYW1lcmEucG9zaXRpb24uc2V0KDAsIC10aGlzLnNpemUsIDApO1xyXG4gICAgICAgIHRoaXMuY2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZnJvbnQnOi8vei3ok51cclxuICAgICAgICB0aGlzLmNhbWVyYS5wb3NpdGlvbi5zZXQoMCwgMCwgdGhpcy5zaXplKTtcclxuICAgICAgICB0aGlzLmNhbWVyYS5sb29rQXQoMCwgMCwgMCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2JhY2snOi8vei3ok51cclxuICAgICAgICB0aGlzLmNhbWVyYS5wb3NpdGlvbi5zZXQoMCwgMCwgLXRoaXMuc2l6ZSk7XHJcbiAgICAgICAgdGhpcy5jYW1lcmEubG9va0F0KDAsIDAsIDApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLmNvcHkodGhpcy5jZW50ZXIpO1xyXG4gICAgICAgIC8vIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCgwLCAwLCAwKTtcclxuICAgICAgICB0aGlzLmNhbWVyYS5wb3NpdGlvbi54ICs9IHRoaXMuc2l6ZSAvIDI7XHJcbiAgICAgICAgdGhpcy5jYW1lcmEucG9zaXRpb24ueSArPSB0aGlzLnNpemUgLyA1O1xyXG4gICAgICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnogKz0gdGhpcy5zaXplIC8gMjtcclxuICAgICAgICB0aGlzLmNhbWVyYS5sb29rQXQodGhpcy5jZW50ZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9hZGQgR1VJXHJcbiAgYWRkR1VJKCkge1xyXG4gICAgLy/mipjlj6Dlj4LmlbBcclxuICAgIGxldCBjbG9zZVN0YXRlOiBhbnkgPSB7XHJcbiAgICAgIGd1aTogZmFsc2UsXHJcbiAgICAgIGRpc3BsYXlGb2xkZXI6IGZhbHNlLFxyXG4gICAgICBhbWJpZW50TGlnaHRGb2xkZXI6IHRydWUsXHJcbiAgICAgIGRpcmVjdGlvbmFsTGlnaHRGb2xkZXI6IHRydWUsXHJcbiAgICAgIGRpcmVjdGlvbmFsTGlnaHRIZWxwZXJGb2xkZXI6IGZhbHNlLFxyXG4gICAgICBwb2ludExpZ2h0Rm9sZGVyOiB0cnVlLFxyXG4gICAgICBwb2ludGxMaWdodEhlbHBlckZvbGRlcjogZmFsc2VcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmd1aSkge1xyXG4gICAgICAvL+iusOW9leS4iuS4qmd1aeeahOmdouadv+aKmOWPoOWAvFxyXG4gICAgICBjbG9zZVN0YXRlID0ge1xyXG4gICAgICAgIGd1aTogdGhpcy5ndWkuX2Nsb3NlZCxcclxuICAgICAgICBkaXNwbGF5Rm9sZGVyOiB0aGlzLmd1aS5jaGlsZHJlblswXS5fY2xvc2VkLFxyXG4gICAgICAgIGFtYmllbnRMaWdodEZvbGRlcjogdGhpcy5ndWkuY2hpbGRyZW5bMV0uX2Nsb3NlZCxcclxuICAgICAgICBkaXJlY3Rpb25hbExpZ2h0Rm9sZGVyOiB0aGlzLmd1aS5jaGlsZHJlblsyXS5fY2xvc2VkLFxyXG4gICAgICAgIGRpcmVjdGlvbmFsTGlnaHRIZWxwZXJGb2xkZXI6IHRoaXMuZ3VpLmNoaWxkcmVuWzJdLmNoaWxkcmVuWzNdLl9jbG9zZWQsXHJcbiAgICAgICAgcG9pbnRMaWdodEZvbGRlcjogdGhpcy5ndWkuY2hpbGRyZW5bM10uX2Nsb3NlZCxcclxuICAgICAgICBwb2ludGxMaWdodEhlbHBlckZvbGRlcjogdGhpcy5ndWkuY2hpbGRyZW5bM10uY2hpbGRyZW5bNV0uX2Nsb3NlZFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ3VpLmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5ndWkgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ndWkgPSBuZXcgR1VJKHsgdGl0bGU6ICfmjqfliLbpnaLmnb8nLCBjb250YWluZXI6IHRoaXMuZWxlUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI2NvbnRyb2wnKSB9KTtcclxuICAgIGlmIChjbG9zZVN0YXRlLmd1aSkge1xyXG4gICAgICB0aGlzLmd1aS5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlzcGxheUZvbGRlciA9IHRoaXMuZ3VpLmFkZEZvbGRlcign5pi+56S66K6+572uJyk7XHJcbiAgICBpZiAoY2xvc2VTdGF0ZS5kaXNwbGF5Rm9sZGVyKSB7XHJcbiAgICAgIGRpc3BsYXlGb2xkZXIuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIGRpc3BsYXlGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICd0b25lTWFwcGluZycsXHJcbiAgICAgIHtcclxuICAgICAgICAnQUNFU0ZpbG1pYyc6IFRIUkVFLkFDRVNGaWxtaWNUb25lTWFwcGluZyxcclxuICAgICAgICAnTGluZWFyJzogVEhSRUUuTGluZWFyVG9uZU1hcHBpbmcsXHJcbiAgICAgICAgJ1JlaW5oYXJkJzogVEhSRUUuUmVpbmhhcmRUb25lTWFwcGluZyxcclxuICAgICAgICAnQ2luZW9uJzogVEhSRUUuQ2luZW9uVG9uZU1hcHBpbmcsXHJcbiAgICAgICAgJ0FnWCc6IFRIUkVFLkFnWFRvbmVNYXBwaW5nLFxyXG4gICAgICAgICdOZXV0cmFsJzogVEhSRUUuTmV1dHJhbFRvbmVNYXBwaW5nXHJcbiAgICAgIH1cclxuICAgICkubmFtZSgn6Imy6LCDJykub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVUb25lTWFwcGluZygpKTtcclxuICAgIGRpc3BsYXlGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICd0b25lTWFwcGluZ0V4cG9zdXJlJywgLTEwLCA1LCAwLjAxKS5uYW1lKCfmm53lhYknKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZVRvbmVNYXBwaW5nRXhwb3N1cmUoKSk7XHJcbiAgICBkaXNwbGF5Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAnYmFja2dyb3VuZCcpLm5hbWUoJ+WQr+eUqOiDjOaZrycpLmxpc3RlbigpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlQmFja2dyb3VuZCgpKTtcclxuICAgIGRpc3BsYXlGb2xkZXIuYWRkQ29sb3IodGhpcy5zdGF0ZSwgJ2JhY2tncm91bmRDb2xvcicpLm5hbWUoJ+iDjOaZr+iJsicpLmxpc3RlbigpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlQmFja2dyb3VuZCgpKTtcclxuICAgIGRpc3BsYXlGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICdheGVzSGVscGVyJykubmFtZSgn5Z2Q5qCH57O7Jykub25DaGFuZ2UoKCkgPT4gdGhpcy50b2dnbGVBeGVzSGVscGVyKCkpO1xyXG4gICAgZGlzcGxheUZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ3dpcmVmcmFtZScpLm5hbWUoJ+e6v+ahhuaooeW8jycpLm9uQ2hhbmdlKCgpID0+IHRoaXMudG9nZ2xlV2lyZWZyYW1lKCkpO1xyXG4gICAgZGlzcGxheUZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ2F1dG9Sb3RhdGUnKS5uYW1lKCfoh6rliqjml4vovawnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnRvZ2dsZUF1dG9Sb3RhdGUoKSk7XHJcbiAgICBsZXQgYW5pbWF0aW9uTGlzdDogYW55ID0geyAn5pegJzogLTEgfTtcclxuICAgIGlmICh0aGlzLmdsdGYuYW5pbWF0aW9ucyAmJiB0aGlzLmdsdGYuYW5pbWF0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5nbHRmLmFuaW1hdGlvbnMubWFwKChhbmltYXRpb246IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGFuaW1hdGlvbkxpc3RbYW5pbWF0aW9uLm5hbWUgPyBhbmltYXRpb24ubmFtZSA6ICfliqjnlLsnICsgKGluZGV4ICsgMSldID0gaW5kZXg7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZGlzcGxheUZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ2FuaW1hdGlvbkluZGV4JywgYW5pbWF0aW9uTGlzdCkubGlzdGVuKCkubmFtZSgn5Yqo55S7Jykub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVBbmltYXRpb24oKSk7XHJcblxyXG4gICAgY29uc3QgYW1iaWVudExpZ2h0Rm9sZGVyID0gdGhpcy5ndWkuYWRkRm9sZGVyKCfnjq/looPlhYknKTtcclxuICAgIGlmIChjbG9zZVN0YXRlLmFtYmllbnRMaWdodEZvbGRlcikge1xyXG4gICAgICBhbWJpZW50TGlnaHRGb2xkZXIuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIGFtYmllbnRMaWdodEZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ2FtYmllbnRMaWdodCcpLm5hbWUoJ+WQr+eUqCcpLm9uQ2hhbmdlKCgpID0+IHRoaXMudG9nZ2xlQW1iaWVudExpZ2h0KCkpO1xyXG4gICAgYW1iaWVudExpZ2h0Rm9sZGVyLmFkZENvbG9yKHRoaXMuc3RhdGUsICdhbWJpZW50TGlnaHRDb2xvcicpLm5hbWUoJ+minOiJsicpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlQW1iaWVudExpZ2h0KCkpO1xyXG4gICAgYW1iaWVudExpZ2h0Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAnYW1iaWVudExpZ2h0SW50ZW5zaXR5JywgMCwgMTAsIDAuMSkubmFtZSgn5by65bqmJykub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVBbWJpZW50TGlnaHQoKSk7XHJcblxyXG4gICAgY29uc3QgZGlyZWN0aW9uYWxMaWdodEZvbGRlciA9IHRoaXMuZ3VpLmFkZEZvbGRlcign5a6a5ZCR5YWJJyk7XHJcbiAgICBpZiAoY2xvc2VTdGF0ZS5kaXJlY3Rpb25hbExpZ2h0Rm9sZGVyKSB7XHJcbiAgICAgIGRpcmVjdGlvbmFsTGlnaHRGb2xkZXIuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIGRpcmVjdGlvbmFsTGlnaHRGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICdkaXJlY3Rpb25hbExpZ2h0JykubmFtZSgn5ZCv55SoJykub25DaGFuZ2UoKCkgPT4gdGhpcy50b2dnbGVEaXJlY3Rpb25hbExpZ2h0KCkpO1xyXG4gICAgZGlyZWN0aW9uYWxMaWdodEZvbGRlci5hZGRDb2xvcih0aGlzLnN0YXRlLCAnZGlyZWN0aW9uYWxMaWdodENvbG9yJykubmFtZSgn6aKc6ImyJykub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVEaXJlY3Rpb25hbExpZ2h0KCkpO1xyXG4gICAgZGlyZWN0aW9uYWxMaWdodEZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ2RpcmVjdGlvbmFsTGlnaHRJbnRlbnNpdHknLCAwLCAxMCwgMC4xKS5uYW1lKCflvLrluqYnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZURpcmVjdGlvbmFsTGlnaHQoKSk7XHJcbiAgICBjb25zdCBkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyID0gZGlyZWN0aW9uYWxMaWdodEZvbGRlci5hZGRGb2xkZXIoJ+WumuWQkeWFieS9jee9ricpO1xyXG4gICAgaWYgKGNsb3NlU3RhdGUuZGlyZWN0aW9uYWxMaWdodEhlbHBlckZvbGRlcikge1xyXG4gICAgICBkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgICBkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAnZGlyZWN0aW9uYWxMaWdodEhlbHBlcicpLmxpc3RlbigpLm5hbWUoJ+S9jee9ruaooeaLnycpLm9uQ2hhbmdlKCgpID0+IHRoaXMudG9nZ2xlRGlyZWN0aW9uYWxMaWdodEhlbHBlcigpKTtcclxuICAgIGRpcmVjdGlvbmFsTGlnaHRIZWxwZXJGb2xkZXIuYWRkKHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uLCAneCcsIC10aGlzLnNpemUsIHRoaXMuc2l6ZSkubmFtZSgneO+8iOWdkOagh+ezuy3nuqLvvIknKS5kZWNpbWFscygyKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZURpcmVjdGlvbmFsTGlnaHQoKSk7XHJcbiAgICBkaXJlY3Rpb25hbExpZ2h0SGVscGVyRm9sZGVyLmFkZCh0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbiwgJ3knLCAtdGhpcy5zaXplLCB0aGlzLnNpemUpLm5hbWUoJ3nvvIjlnZDmoIfns7st57u/77yJJykuZGVjaW1hbHMoMikub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVEaXJlY3Rpb25hbExpZ2h0KCkpO1xyXG4gICAgZGlyZWN0aW9uYWxMaWdodEhlbHBlckZvbGRlci5hZGQodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24sICd6JywgLXRoaXMuc2l6ZSwgdGhpcy5zaXplKS5uYW1lKCd677yI5Z2Q5qCH57O7LeiTne+8iScpLmRlY2ltYWxzKDIpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlRGlyZWN0aW9uYWxMaWdodCgpKTtcclxuXHJcbiAgICBjb25zdCBwb2ludExpZ2h0Rm9sZGVyID0gdGhpcy5ndWkuYWRkRm9sZGVyKCfngrnlhYnmupAnKTtcclxuICAgIGlmIChjbG9zZVN0YXRlLnBvaW50TGlnaHRGb2xkZXIpIHtcclxuICAgICAgcG9pbnRMaWdodEZvbGRlci5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgcG9pbnRMaWdodEZvbGRlci5hZGQodGhpcy5zdGF0ZSwgJ3BvaW50TGlnaHQnKS5uYW1lKCflkK/nlKgnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnRvZ2dsZVBvaW50TGlnaHQoKSk7XHJcbiAgICBwb2ludExpZ2h0Rm9sZGVyLmFkZENvbG9yKHRoaXMuc3RhdGUsICdwb2ludExpZ2h0Q29sb3InKS5uYW1lKCfpopzoibInKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZVBvaW50TGlnaHQoKSk7XHJcbiAgICBwb2ludExpZ2h0Rm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAncG9pbnRMaWdodEludGVuc2l0eScsIDAsIDEwLCAwLjEpLm5hbWUoJ+W8uuW6picpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlUG9pbnRMaWdodCgpKTtcclxuICAgIHBvaW50TGlnaHRGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICdwb2ludExpZ2h0RGlzdGFuY2UnLCAwLCB0aGlzLnNpemUpLm5hbWUoJ+iMg+WbtCcpLmRlY2ltYWxzKDIpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlUG9pbnRMaWdodCgpKTtcclxuICAgIHBvaW50TGlnaHRGb2xkZXIuYWRkKHRoaXMuc3RhdGUsICdwb2ludExpZ2h0RGVjYXknLCAwLCAyLCAwLjEpLm5hbWUoJ+ihsOWHjycpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlUG9pbnRMaWdodCgpKTtcclxuICAgIGNvbnN0IHBvaW50bExpZ2h0SGVscGVyRm9sZGVyID0gcG9pbnRMaWdodEZvbGRlci5hZGRGb2xkZXIoJ+eCueWFiea6kOS9jee9ricpO1xyXG4gICAgaWYgKGNsb3NlU3RhdGUucG9pbnRsTGlnaHRIZWxwZXJGb2xkZXIpIHtcclxuICAgICAgcG9pbnRsTGlnaHRIZWxwZXJGb2xkZXIuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIHBvaW50bExpZ2h0SGVscGVyRm9sZGVyLmFkZCh0aGlzLnN0YXRlLCAncG9pbnRMaWdodEhlbHBlcicpLmxpc3RlbigpLm5hbWUoJ+S9jee9ruaooeaLnycpLm9uQ2hhbmdlKCgpID0+IHRoaXMudG9nZ2xlUG9pbnRMaWdodEhlbHBlcigpKTtcclxuICAgIHBvaW50bExpZ2h0SGVscGVyRm9sZGVyLmFkZCh0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbiwgJ3gnLCAtdGhpcy5zaXplLCB0aGlzLnNpemUpLm5hbWUoJ3jvvIjlnZDmoIfns7st57qi77yJJykuZGVjaW1hbHMoMikub25DaGFuZ2UoKCkgPT4gdGhpcy51cGRhdGVQb2ludExpZ2h0KCkpO1xyXG4gICAgcG9pbnRsTGlnaHRIZWxwZXJGb2xkZXIuYWRkKHRoaXMuc3RhdGUucG9pbnRMaWdodFBvc2l0aW9uLCAneScsIC10aGlzLnNpemUsIHRoaXMuc2l6ZSkubmFtZSgnee+8iOWdkOagh+ezuy3nu7/vvIknKS5kZWNpbWFscygyKS5vbkNoYW5nZSgoKSA9PiB0aGlzLnVwZGF0ZVBvaW50TGlnaHQoKSk7XHJcbiAgICBwb2ludGxMaWdodEhlbHBlckZvbGRlci5hZGQodGhpcy5zdGF0ZS5wb2ludExpZ2h0UG9zaXRpb24sICd6JywgLXRoaXMuc2l6ZSwgdGhpcy5zaXplKS5uYW1lKCd677yI5Z2Q5qCH57O7LeiTne+8iScpLmRlY2ltYWxzKDIpLm9uQ2hhbmdlKCgpID0+IHRoaXMudXBkYXRlUG9pbnRMaWdodCgpKTtcclxuICB9XHJcblxyXG4gIC8v6Imy6LCDXHJcbiAgdXBkYXRlVG9uZU1hcHBpbmcoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnRvbmVNYXBwaW5nID0gdGhpcy5zdGF0ZS50b25lTWFwcGluZztcclxuICB9XHJcblxyXG4gIC8v5pud5YWJXHJcbiAgdXBkYXRlVG9uZU1hcHBpbmdFeHBvc3VyZSgpIHtcclxuICAgIHRoaXMucmVuZGVyZXIudG9uZU1hcHBpbmdFeHBvc3VyZSA9IE1hdGgucG93KDIsIHRoaXMuc3RhdGUudG9uZU1hcHBpbmdFeHBvc3VyZSk7XHJcbiAgfVxyXG5cclxuICAvL+iDjOaZr1xyXG4gIHVwZGF0ZUJhY2tncm91bmQoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZS5iYWNrZ3JvdW5kKSB7XHJcbiAgICAgIHRoaXMuc2NlbmUuYmFja2dyb3VuZCA9IG5ldyBUSFJFRS5Db2xvcih0aGlzLnN0YXRlLmJhY2tncm91bmRDb2xvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNjZW5lLmJhY2tncm91bmQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy/lvIDlhbPovoXliqnop4Llr5/lnZDmoIfns7tcclxuICBheGVzSGVscGVyOiBhbnk7XHJcbiAgdG9nZ2xlQXhlc0hlbHBlcigpIHtcclxuICAgIC8veC3nuqLvvIx5Lee7v++8jHot6JOdXHJcbiAgICBpZiAodGhpcy5zdGF0ZS5heGVzSGVscGVyKSB7XHJcbiAgICAgIGlmICh0aGlzLmF4ZXNIZWxwZXIpIHtcclxuICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmF4ZXNIZWxwZXIpO1xyXG4gICAgICAgIHRoaXMuYXhlc0hlbHBlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5heGVzSGVscGVyID0gbmV3IFRIUkVFLkF4ZXNIZWxwZXIodGhpcy5zaXplKTtcclxuICAgICAgdGhpcy5zY2VuZS5hZGQodGhpcy5heGVzSGVscGVyKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmF4ZXNIZWxwZXIpIHtcclxuICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmF4ZXNIZWxwZXIpO1xyXG4gICAgICAgIHRoaXMuYXhlc0hlbHBlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v57q/5qGG5qih5byPXHJcbiAgdG9nZ2xlV2lyZWZyYW1lKCkge1xyXG4gICAgdGhpcy50cmF2ZXJzZU1hdGVyaWFscyh0aGlzLmdsdGYuc2NlbmUsIChtYXRlcmlhbDogYW55KSA9PiB7XHJcbiAgICAgIG1hdGVyaWFsLndpcmVmcmFtZSA9IHRoaXMuc3RhdGUud2lyZWZyYW1lO1xyXG5cclxuICAgICAgaWYgKG1hdGVyaWFsIGluc3RhbmNlb2YgVEhSRUUuUG9pbnRzTWF0ZXJpYWwpIHtcclxuICAgICAgICBtYXRlcmlhbC5zaXplID0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL+mBjeWOhuadkOi0qFxyXG4gIHRyYXZlcnNlTWF0ZXJpYWxzKG9iamVjdDogYW55LCBjYWxsYmFjazogYW55KSB7XHJcbiAgICBvYmplY3QudHJhdmVyc2UoKG5vZGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIW5vZGUuZ2VvbWV0cnkpIHJldHVybjtcclxuICAgICAgY29uc3QgbWF0ZXJpYWxzID0gQXJyYXkuaXNBcnJheShub2RlLm1hdGVyaWFsKSA/IG5vZGUubWF0ZXJpYWwgOiBbbm9kZS5tYXRlcmlhbF07XHJcbiAgICAgIG1hdGVyaWFscy5mb3JFYWNoKGNhbGxiYWNrKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy/oh6rliqjml4vovaxcclxuICB0b2dnbGVBdXRvUm90YXRlKCkge1xyXG4gICAgdGhpcy5jb250cm9scy5hdXRvUm90YXRlID0gdGhpcy5zdGF0ZS5hdXRvUm90YXRlO1xyXG4gIH1cclxuXHJcbiAgLy/lvIDlhbPliqjnlLtcclxuICB1cGRhdGVBbmltYXRpb24oKSB7XHJcbiAgICAvL+WFiOWBnOatouaJgOacieWKqOeUu++8jOWQpuiAheWFs+mXreWKqOeUu+WQjuS8muWtmOWcqOWKqOS9nOaui+eVmVxyXG4gICAgaWYgKHRoaXMubWl4ZXIpIHtcclxuICAgICAgdGhpcy5taXhlci5zdG9wQWxsQWN0aW9uKCk7XHJcbiAgICAgIHRoaXMubWl4ZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAodGhpcy5nbHRmLmFuaW1hdGlvbnMgJiYgdGhpcy5nbHRmLmFuaW1hdGlvbnMubGVuZ3RoICYmIHRoaXMuc3RhdGUuYW5pbWF0aW9uSW5kZXggIT0gLTEpIHtcclxuICAgICAgdGhpcy5taXhlciA9IG5ldyBUSFJFRS5BbmltYXRpb25NaXhlcih0aGlzLmdsdGYuc2NlbmUpO1xyXG4gICAgICBsZXQgYW5pbWF0aW9uOiBUSFJFRS5BbmltYXRpb25DbGlwID0gdGhpcy5nbHRmLmFuaW1hdGlvbnNbdGhpcy5zdGF0ZS5hbmltYXRpb25JbmRleF07XHJcbiAgICAgIGlmICh0aGlzLm1peGVyKSB7XHJcbiAgICAgICAgdGhpcy5taXhlci5jbGlwQWN0aW9uKGFuaW1hdGlvbikucGxheSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL+W8gOWFs+eOr+Wig+WFiVxyXG4gIGFtYmllbnRMaWdodDogYW55O1xyXG4gIHRvZ2dsZUFtYmllbnRMaWdodCgpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlLmFtYmllbnRMaWdodCkge1xyXG4gICAgICBpZiAodGhpcy5hbWJpZW50TGlnaHQpIHtcclxuICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmFtYmllbnRMaWdodCk7XHJcbiAgICAgICAgdGhpcy5hbWJpZW50TGlnaHQgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYW1iaWVudExpZ2h0ID0gbmV3IFRIUkVFLkFtYmllbnRMaWdodCh0aGlzLnN0YXRlLmFtYmllbnRMaWdodENvbG9yLCB0aGlzLnN0YXRlLmFtYmllbnRMaWdodEludGVuc2l0eSk7XHJcbiAgICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMuYW1iaWVudExpZ2h0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmFtYmllbnRMaWdodCkge1xyXG4gICAgICAgIHRoaXMuc2NlbmUucmVtb3ZlKHRoaXMuYW1iaWVudExpZ2h0KTtcclxuICAgICAgICB0aGlzLmFtYmllbnRMaWdodCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLy/mm7TmlrDnjq/looPlhYlcclxuICB1cGRhdGVBbWJpZW50TGlnaHQoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZS5hbWJpZW50TGlnaHQpIHtcclxuICAgICAgdGhpcy5hbWJpZW50TGlnaHQuY29sb3Iuc2V0KHRoaXMuc3RhdGUuYW1iaWVudExpZ2h0Q29sb3IpO1xyXG4gICAgICB0aGlzLmFtYmllbnRMaWdodC5pbnRlbnNpdHkgPSB0aGlzLnN0YXRlLmFtYmllbnRMaWdodEludGVuc2l0eTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v5byA5YWz5a6a5ZCR5YWJXHJcbiAgZGlyZWN0aW9uYWxMaWdodDogYW55O1xyXG4gIHRvZ2dsZURpcmVjdGlvbmFsTGlnaHQoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0KSB7XHJcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHQpIHtcclxuICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmRpcmVjdGlvbmFsTGlnaHQpO1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uYWxMaWdodCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kaXJlY3Rpb25hbExpZ2h0ID0gbmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHQodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0Q29sb3IsIHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodEludGVuc2l0eSk7XHJcbiAgICAgIHRoaXMuZGlyZWN0aW9uYWxMaWdodC5wb3NpdGlvbi5zZXQoXHJcbiAgICAgICAgdGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24ueCxcclxuICAgICAgICB0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbi55LFxyXG4gICAgICAgIHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uLnpcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zY2VuZS5hZGQodGhpcy5kaXJlY3Rpb25hbExpZ2h0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHQpIHtcclxuICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmRpcmVjdGlvbmFsTGlnaHQpO1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uYWxMaWdodCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgLy/lhbPpl63kvY3nva7mqKHmi59cclxuICAgICAgdGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0SGVscGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudG9nZ2xlRGlyZWN0aW9uYWxMaWdodEhlbHBlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL+abtOaWsOWumuWQkeWFiVxyXG4gIHVwZGF0ZURpcmVjdGlvbmFsTGlnaHQoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0KSB7XHJcbiAgICAgIHRoaXMuZGlyZWN0aW9uYWxMaWdodC5jb2xvci5zZXQodGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0Q29sb3IpO1xyXG4gICAgICB0aGlzLmRpcmVjdGlvbmFsTGlnaHQuaW50ZW5zaXR5ID0gdGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0SW50ZW5zaXR5O1xyXG4gICAgICB0aGlzLmRpcmVjdGlvbmFsTGlnaHQucG9zaXRpb24uc2V0KFxyXG4gICAgICAgIHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodFBvc2l0aW9uLngsXHJcbiAgICAgICAgdGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0UG9zaXRpb24ueSxcclxuICAgICAgICB0aGlzLnN0YXRlLmRpcmVjdGlvbmFsTGlnaHRQb3NpdGlvbi56XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIpIHtcclxuICAgICAgICB0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIudXBkYXRlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvL+W8gOWFs+WumuWQkeWFieS9jee9ruaooeaLn1xyXG4gIGRpcmVjdGlvbmFsTGlnaHRIZWxwZXI6IGFueTtcclxuICB0b2dnbGVEaXJlY3Rpb25hbExpZ2h0SGVscGVyKCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUuZGlyZWN0aW9uYWxMaWdodEhlbHBlcikge1xyXG4gICAgICBpZiAodGhpcy5kaXJlY3Rpb25hbExpZ2h0KSB7Ly/lvIDlkK/lrprlkJHlhYnmiY3og73lvIDlkK/kvY3nva7mqKHmi59cclxuICAgICAgICBpZiAodGhpcy5kaXJlY3Rpb25hbExpZ2h0SGVscGVyKSB7XHJcbiAgICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIpO1xyXG4gICAgICAgICAgdGhpcy5kaXJlY3Rpb25hbExpZ2h0SGVscGVyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXJlY3Rpb25hbExpZ2h0SGVscGVyID0gbmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHRIZWxwZXIodGhpcy5kaXJlY3Rpb25hbExpZ2h0LCB0aGlzLnNpemUgLyAyMCwgMHhmZjAwMDApO1xyXG4gICAgICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMuZGlyZWN0aW9uYWxMaWdodEhlbHBlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZS5kaXJlY3Rpb25hbExpZ2h0SGVscGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIpIHtcclxuICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmRpcmVjdGlvbmFsTGlnaHRIZWxwZXIpO1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uYWxMaWdodEhlbHBlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v5byA5YWz54K55YWJ5rqQXHJcbiAgcG9pbnRMaWdodDogYW55O1xyXG4gIHRvZ2dsZVBvaW50TGlnaHQoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZS5wb2ludExpZ2h0KSB7XHJcbiAgICAgIGlmICh0aGlzLnBvaW50TGlnaHQpIHtcclxuICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLnBvaW50TGlnaHQpO1xyXG4gICAgICAgIHRoaXMucG9pbnRMaWdodCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgLy9Qb2ludExpZ2h0KCBjb2xvciA6IEludGVnZXIsIGludGVuc2l0eSA6IEZsb2F0LCBkaXN0YW5jZSA6IE51bWJlciwgZGVjYXkgOiBGbG9hdCApXHJcbiAgICAgIHRoaXMucG9pbnRMaWdodCA9IG5ldyBUSFJFRS5Qb2ludExpZ2h0KHRoaXMuc3RhdGUucG9pbnRMaWdodENvbG9yLCB0aGlzLnN0YXRlLnBvaW50TGlnaHRJbnRlbnNpdHksIHRoaXMuc3RhdGUucG9pbnRMaWdodERpc3RhbmNlLCB0aGlzLnN0YXRlLnBvaW50TGlnaHREZWNheSk7XHJcbiAgICAgIHRoaXMucG9pbnRMaWdodC5wb3NpdGlvbi5zZXQoXHJcbiAgICAgICAgdGhpcy5zdGF0ZS5wb2ludExpZ2h0UG9zaXRpb24ueCxcclxuICAgICAgICB0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbi55LFxyXG4gICAgICAgIHRoaXMuc3RhdGUucG9pbnRMaWdodFBvc2l0aW9uLnpcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zY2VuZS5hZGQodGhpcy5wb2ludExpZ2h0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnBvaW50TGlnaHQpIHtcclxuICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLnBvaW50TGlnaHQpO1xyXG4gICAgICAgIHRoaXMucG9pbnRMaWdodCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgLy/lhbPpl63kvY3nva7mqKHmi59cclxuICAgICAgdGhpcy5zdGF0ZS5wb2ludExpZ2h0SGVscGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudG9nZ2xlUG9pbnRMaWdodEhlbHBlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy/mm7TmlrDngrnlhYnmupBcclxuICB1cGRhdGVQb2ludExpZ2h0KCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUucG9pbnRMaWdodCkge1xyXG4gICAgICB0aGlzLnBvaW50TGlnaHQuY29sb3Iuc2V0KHRoaXMuc3RhdGUucG9pbnRMaWdodENvbG9yKTtcclxuICAgICAgdGhpcy5wb2ludExpZ2h0LmludGVuc2l0eSA9IHRoaXMuc3RhdGUucG9pbnRMaWdodEludGVuc2l0eTtcclxuICAgICAgdGhpcy5wb2ludExpZ2h0LmRlY2F5ID0gdGhpcy5zdGF0ZS5wb2ludExpZ2h0RGVjYXk7XHJcbiAgICAgIHRoaXMucG9pbnRMaWdodC5kaXN0YW5jZSA9IHRoaXMuc3RhdGUucG9pbnRMaWdodERpc3RhbmNlO1xyXG4gICAgICB0aGlzLnBvaW50TGlnaHQucG9zaXRpb24uc2V0KFxyXG4gICAgICAgIHRoaXMuc3RhdGUucG9pbnRMaWdodFBvc2l0aW9uLngsXHJcbiAgICAgICAgdGhpcy5zdGF0ZS5wb2ludExpZ2h0UG9zaXRpb24ueSxcclxuICAgICAgICB0aGlzLnN0YXRlLnBvaW50TGlnaHRQb3NpdGlvbi56XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLnBvaW50TGlnaHRIZWxwZXIpIHtcclxuICAgICAgICB0aGlzLnBvaW50TGlnaHRIZWxwZXIudXBkYXRlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvL+W8gOWFs+eCueWFiea6kOS9jee9ruaooeaLn1xyXG4gIHBvaW50TGlnaHRIZWxwZXI6IGFueTtcclxuICB0b2dnbGVQb2ludExpZ2h0SGVscGVyKCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUucG9pbnRMaWdodEhlbHBlcikge1xyXG4gICAgICBpZiAodGhpcy5wb2ludExpZ2h0KSB7Ly/lvIDlkK/ngrnlhYnmupDmiY3og73lvIDlkK/kvY3nva7mqKHmi59cclxuICAgICAgICBpZiAodGhpcy5wb2ludExpZ2h0SGVscGVyKSB7XHJcbiAgICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLnBvaW50TGlnaHRIZWxwZXIpO1xyXG4gICAgICAgICAgdGhpcy5wb2ludExpZ2h0SGVscGVyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb2ludExpZ2h0SGVscGVyID0gbmV3IFRIUkVFLlBvaW50TGlnaHRIZWxwZXIodGhpcy5wb2ludExpZ2h0LCB0aGlzLnNpemUgLyAyMCwgMHgyYmZmMDApO1xyXG4gICAgICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMucG9pbnRMaWdodEhlbHBlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZS5wb2ludExpZ2h0SGVscGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnBvaW50TGlnaHRIZWxwZXIpIHtcclxuICAgICAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLnBvaW50TGlnaHRIZWxwZXIpO1xyXG4gICAgICAgIHRoaXMucG9pbnRMaWdodEhlbHBlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vd2ViZ2zplIDmr4FcclxuICB3ZWJnbExvc2VDb250ZXh0KCkge1xyXG4gICAgbGV0IGdsdGZDYW52YXNEb206IGFueSA9IHRoaXMuZWxlUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgJHt0aGlzLmRvbUlkfSBjYW52YXNgKTtcclxuICAgIGlmIChnbHRmQ2FudmFzRG9tKSB7XHJcbiAgICAgIC8v5omL5Yqo6ZSA5q+BV2ViR0wgY29udGV4dOWvueixoe+8iOacgOWkmjE25Liq77yM6LaF5Ye655qE6K+d5pyA5YWI5Yqg6L2955qE5Lya6KKr56e76Zmk77yJXHJcbiAgICAgIGxldCBnbCA9IGdsdGZDYW52YXNEb20uZ2V0Q29udGV4dCgnd2ViZ2wyJyk7XHJcbiAgICAgIGdsLmdldEV4dGVuc2lvbignV0VCR0xfbG9zZV9jb250ZXh0JykubG9zZUNvbnRleHQoKTtcclxuICAgICAgLy9kb23np7vpmaRcclxuICAgICAgZ2x0ZkNhbnZhc0RvbS5yZW1vdmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgaWQ9XCJnbHRmVmlld2VyXCIgKm5nSWY9XCJwYXJhbWV0ZXJzT2tcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCJzaG93TG9hZGluZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYy1sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGluMjlfZGVmYXVsdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiY29sb3I6ICdyZ2IoMjU1LDE2NSw5MSknO2ZvbnQtd2VpZ2h0OiA0MDA7XCIgY2xhc3M9XCJuY1RpcHNfZGVmYXVsdFwiPuaooeWei+WKoOi9veS4rS4uLjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGlkPVwidGlwc1wiICpuZ0lmPVwidGlwc01vZGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGlwLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWltZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgIHNyYz1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpSUhOMFlXNWtZV3h2Ym1VOUltNXZJajgrQ2p3aExTMGdSMlZ1WlhKaGRHOXlPaUJCWkc5aVpTQkpiR3gxYzNSeVlYUnZjaUF4TlM0d0xqQXNJRk5XUnlCRmVIQnZjblFnVUd4MVp5MUpiaUF1SUZOV1J5QldaWEp6YVc5dU9pQTJMakF3SUVKMWFXeGtJREFwSUNBdExUNEtDanh6ZG1jS0lDQWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklnb2dJQ0I0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5Naklnb2dJQ0I0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pQ2lBZ0lIaHRiRzV6T25OMlp6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lDaUFnSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlLSUNBZ2VHMXNibk02YzI5a2FYQnZaR2s5SW1oMGRIQTZMeTl6YjJScGNHOWthUzV6YjNWeVkyVm1iM0puWlM1dVpYUXZSRlJFTDNOdlpHbHdiMlJwTFRBdVpIUmtJZ29nSUNCNGJXeHVjenBwYm10elkyRndaVDBpYUhSMGNEb3ZMM2QzZHk1cGJtdHpZMkZ3WlM1dmNtY3ZibUZ0WlhOd1lXTmxjeTlwYm10elkyRndaU0lLSUNBZ2RtVnljMmx2YmowaU1TNHhJZ29nSUNCcFpEMGlUR0Y1WlhKZk1TSUtJQ0FnZUQwaU1IQjRJZ29nSUNCNVBTSXdjSGdpQ2lBZ0lIZHBaSFJvUFNJMk5IQjRJZ29nSUNCb1pXbG5hSFE5SWpZMGNIZ2lDaUFnSUhacFpYZENiM2c5SWpBZ01DQTJOQ0EyTkNJS0lDQWdaVzVoWW14bExXSmhZMnRuY205MWJtUTlJbTVsZHlBd0lEQWdOalFnTmpRaUNpQWdJSGh0YkRwemNHRmpaVDBpY0hKbGMyVnlkbVVpQ2lBZ0lHbHVhM05qWVhCbE9uWmxjbk5wYjI0OUlqQXVORGd1TkNCeU9Ua3pPU0lLSUNBZ2MyOWthWEJ2WkdrNlpHOWpibUZ0WlQwaVRXOTFjMlZNWldaMExuTjJaeUkrUEcxbGRHRmtZWFJoQ2lBZ0lHbGtQU0p0WlhSaFpHRjBZVEl4SWo0OGNtUm1PbEpFUmo0OFkyTTZWMjl5YXdvZ0lDQWdJQ0FnY21SbU9tRmliM1YwUFNJaVBqeGtZenBtYjNKdFlYUSthVzFoWjJVdmMzWm5LM2h0YkR3dlpHTTZabTl5YldGMFBqeGtZenAwZVhCbENpQWdJQ0FnSUNBZ0lISmtaanB5WlhOdmRYSmpaVDBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJSamJXbDBlWEJsTDFOMGFXeHNTVzFoWjJVaUlDOCtQR1JqT25ScGRHeGxJQzgrUEM5all6cFhiM0pyUGp3dmNtUm1PbEpFUmo0OEwyMWxkR0ZrWVhSaFBqeGtaV1p6Q2lBZ0lHbGtQU0prWldaek1Ua2lJQzgrUEhOdlpHbHdiMlJwT201aGJXVmtkbWxsZHdvZ0lDQndZV2RsWTI5c2IzSTlJaU5tWm1abVptWWlDaUFnSUdKdmNtUmxjbU52Ykc5eVBTSWpOalkyTmpZMklnb2dJQ0JpYjNKa1pYSnZjR0ZqYVhSNVBTSXhJZ29nSUNCdlltcGxZM1IwYjJ4bGNtRnVZMlU5SWpFd0lnb2dJQ0JuY21sa2RHOXNaWEpoYm1ObFBTSXhNQ0lLSUNBZ1ozVnBaR1YwYjJ4bGNtRnVZMlU5SWpFd0lnb2dJQ0JwYm10elkyRndaVHB3WVdkbGIzQmhZMmwwZVQwaU1DSUtJQ0FnYVc1cmMyTmhjR1U2Y0dGblpYTm9ZV1J2ZHowaU1pSUtJQ0FnYVc1cmMyTmhjR1U2ZDJsdVpHOTNMWGRwWkhSb1BTSXhNamd5SWdvZ0lDQnBibXR6WTJGd1pUcDNhVzVrYjNjdGFHVnBaMmgwUFNJNE9EWWlDaUFnSUdsa1BTSnVZVzFsWkhacFpYY3hOeUlLSUNBZ2MyaHZkMmR5YVdROUltWmhiSE5sSWdvZ0lDQnBibXR6WTJGd1pUcDZiMjl0UFNJekxqWTROelVpQ2lBZ0lHbHVhM05qWVhCbE9tTjRQU0l0TVRBdU16QTFNRGcxSWdvZ0lDQnBibXR6WTJGd1pUcGplVDBpTXpJaUNpQWdJR2x1YTNOallYQmxPbmRwYm1SdmR5MTRQU0l4TURRaUNpQWdJR2x1YTNOallYQmxPbmRwYm1SdmR5MTVQU0l4TXpZaUNpQWdJR2x1YTNOallYQmxPbmRwYm1SdmR5MXRZWGhwYldsNlpXUTlJakFpQ2lBZ0lHbHVhM05qWVhCbE9tTjFjbkpsYm5RdGJHRjVaWEk5SW1jeklpQXZQZ284WndvZ0lDQnBaRDBpWnpNaVBnb0pQR2NLSUNBZ2FXUTlJbWMxSWdvZ0lDQnpkSGxzWlQwaVptbHNiRG9qTkdRMFpEUmtPM04wY205clpUb2pOR1EwWkRSa0lqNEtDUWs4Y0dGMGFBb2dJQ0JtYVd4c1BTSWpNREl3TWpBeUlnb2dJQ0JrUFNKTk16SXVPRFUwTERJd0xqQXlPR010TUM0d01UVXRNUzR5TnpRc01DNDFOell0TWk0eU5qa3NNUzR4TlRFdE15NHlNelpqTUM0M05UZ3RNUzR5Tnpnc01TNDFORE10TWk0MkxEQXVPVGszTFRRdU5ERTNJQ0FnSUdNdE1DNDFOVFV0TVM0Mk5qY3RNUzQyTURjdE1pNDBPRFV0TWk0MU16a3RNeTR5TVRKakxURXVNalUwTFRBdU9UY3pMVEl1TVRVNUxURXVOamMyTFRFdU5qZzNMVFF1TXpRemJEQXVNRFF4TFRBdU1qSTViQzB4TGpNMUxUQXVNak00VERJNUxqUXlOeXcwTGpVNElDQWdJR010TUM0Mk1UVXNNeTQwT0RRc01DNDROemdzTkM0Mk5ETXNNaTR4T1RVc05TNDJOalpqTUM0NE5Td3dMalkyTXl3eExqWTFNeXd4TGpJNE9Dd3lMakEzTWl3eUxqVTBNbU13TGpNMk5pd3hMakl5TkMwd0xqRTRMREl1TVRRekxUQXVPRFk1TERNdU16QTJJQ0FnSUdNdE1DNDJOREVzTVM0d09ERXRNUzR6TmpZc01pNHpMVEV1TXpRNUxETXVPVE16WXkwMkxqZ3pOeXd3TGpBd055MHhNeTQ0TWpNc01DNHlPVEV0TVRNdU9ESXpMREkwTGpVNVl6QXNNVEF1T1RVeExEZ3VOems1TERFMUxqQXpNaXd4TkM0ek5EY3NNVFV1TURNeUlDQWdJR00xTGpVME5Td3dMREUwTGpNME55MDBMakE0TVN3eE5DNHpORGN0TVRVdU1ETXlRelEyTGpNME55d3lNQzR6TkRjc016a3VNakk0TERJd0xqQTBPQ3d6TWk0NE5UUXNNakF1TURJNGVpQk5Nekl1TmpnMUxESXhMak01T1NBZ0lDQmpOUzQyTkRNc01DNHdNVElzTVRBdU9USTNMREF1TWpNMkxERXlMakEyTXl3eE5pNHhOVE5qTFRNdU9EWXNNUzQ0TURVdE55NDVNVFlzTWk0M05qVXRNVEl1TURZekxESXVPRFoyTFRJdU9UWTJZekF1T0RRMUxUQXVNVFl5TERFdU5EZ3hMVEF1T1RBNUxERXVORGd4TFRFdU56Z3lkaTA0TGprMU5pQWdJQ0JqTUMwd0xqZzNOaTB3TGpZek55MHhMall5TVMweExqUTRNUzB4TGpjNE5GWXlNUzR6T1RsNklFMHpNUzQyTlRnc01qWXVNalUwYURBdU5qZzFZekF1TWpRNUxEQXNNQzQwTlRNc01DNHlNRFVzTUM0ME5UTXNNQzQwTlRSMk9DNDVOVFlnSUNBZ1l6QXNNQzR5TkRrdE1DNHlNRFFzTUM0ME5Ea3RNQzQwTlRNc01DNDBORGxvTFRBdU5qZzFZeTB3TGpJME9Td3dMVEF1TkRVeUxUQXVNaTB3TGpRMU1pMHdMalEwT1hZdE9DNDVOVFpETXpFdU1qQTJMREkyTGpRMU9Td3pNUzQwTURrc01qWXVNalUwTERNeExqWTFPQ3d5Tmk0eU5UUjZJQ0FnSUNCTk16RXVNekV6TERJeExqTTVPWFl6TGpVeU5XTXRNQzQ0TkRVc01DNHhOak10TVM0ME56a3NNQzQ1TVMweExqUTNPU3d4TGpjNE5IWTRMamsxTm1Nd0xEQXVPRGN6TERBdU5qTTBMREV1TmpJc01TNDBOemtzTVM0M09ESjJNaTQ1TmpZZ0lDQWdZeTAyTGpNeE1TMHdMakUwT0MweE1DNDVNRFV0TWk0eU5USXRNVEl1TURZekxUSXVPRE01UXpJd0xqTTRNU3d5TVM0Mk16TXNNalV1TmpZNExESXhMalF4TVN3ek1TNHpNVE1zTWpFdU16azVlaUJOTXpJc05UZ3VNamMwSUNBZ0lHTXROUzR3TVRZc01DMHhNaTQ1TnpZdE15NDNNRGN0TVRJdU9UYzJMVEV6TGpZMU9HTXdMVEV1T1RnekxEQXVNRFExTFRNdU9EVXpMREF1TVRNMExUVXVOVFl6WXpJdU1EQXpMREF1T1RJNUxEWXVOamsyTERJdU56UXNNVEl1T0RZNExESXVOelFnSUNBZ1l6UXVNemswTERBc09DNDNNRFF0TUM0NU16UXNNVEl1T0RFekxUSXVOemN4WXpBdU1EZzVMREV1TnpFNExEQXVNVE0xTERNdU5pd3dMakV6TlN3MUxqVTVOVU0wTkM0NU56UXNOVFF1TlRZM0xETTNMakF4Tml3MU9DNHlOelFzTXpJc05UZ3VNamMwZWlJS0lDQWdhV1E5SW5CaGRHZzNJZ29nSUNCemRIbHNaVDBpWm1sc2JEb2pOR1EwWkRSa08zTjBjbTlyWlRvak5HUTBaRFJrSWlBdlBnb0pQQzluUGdvSkNna0tQSEJoZEdnS0lDQWdjM1I1YkdVOUltWnBiR3c2STJabVptWm1aanR6ZEhKdmEyVTZJMlptWm1abVpqdHpkSEp2YTJVdGQybGtkR2c2TUM0eU56RXhPRFkwTkNJS0lDQWdaRDBpYlNBek1pNDVNakl3TXpRc016Z3VPVFV3TnpreklHTWdNQ3d0TVM0eE16VTRNalVnTUM0eE1UUTVNVGtzTFRFdU5EVTRNRFExSURBdU5qYzNPVFkyTEMweExqa3dNRGt6T0NCc0lEQXVOamMzT1RZMkxDMHdMalV6TXpJNE9DQXdMQzAxTGpJNE1EYzRJR01nTUN3dE5TNHlOekV5TkRrZ0xUQXVNREF4TWl3dE5TNHlPREl3TURNZ0xUQXVOamMzT1RZMkxDMDFMamsxT0RjME5TQXRNQzQxTlRjME16a3NMVEF1TlRVM05ETTVJQzB3TGpZM056azJOaXd0TUM0NU5EQTVNelVnTFRBdU5qYzNPVFkyTEMweUxqRTFOekUyTlNCc0lEQXNMVEV1TkRjNU1UazVJREV1TlRNMU5EZzNMREFnWXlBMUxqWTFOelUxTkN3d0lEZ3VOVGcwTXpNNExETXVOekk0TlRJNUlEa3VOekU0TlRVc01USXVNemd3TnpreElEQXVORGs0TkRNMExETXVPREF5TWpZMUlEQXVOVEF6TkRnc015NDFNalUzTXpFZ0xUQXVNRFkzTml3ekxqY3dORFUzTWlBdE1DNHlOakV3TVRjc01DNHdPREUzTkNBdE1TNDFNamcyT1RRc01DNDFNVEl3TVRZZ0xUSXVPREUzTURVNUxEQXVPVFUyTVRZM0lDMHlMakF6TnpJd05pd3dMamN3TWpNd05pQXROQzR3TkRnd016SXNNUzR4TVRNd05EUWdMVGN1TkRnNE1ESTJMREV1TlRJNU5USTRJR3dnTFRBdU9EZ3hNelUyTERBdU1UQTJOekEzSURBc0xURXVNelkzTmpVZ2VpSUtJQ0FnYVdROUluQmhkR2d6TnpZNElnb2dJQ0JwYm10elkyRndaVHBqYjI1dVpXTjBiM0l0WTNWeWRtRjBkWEpsUFNJd0lpQXZQanh3WVhSb0NpQWdJSE4wZVd4bFBTSm1hV3hzT2lObVptWm1abVk3YzNSeWIydGxPaU5tWm1abVptWTdjM1J5YjJ0bExYZHBaSFJvT2pBdU1qY3hNVGcyTkRRaUNpQWdJR1E5SW0wZ016RXVORGcxTURneExETTFMamcwTWpFME15QmpJQzB3TGpFd05EVTVNU3d0TUM0eE1EUTFPVEVnTFRBdU1Ua3dNVFkyTEMweUxqSXpNVE0wTnlBdE1DNHhPVEF4TmpZc0xUUXVOekkyTVRJeklEQXNMVE11T1Rnek9UazBJREF1TURVMU1ESXNMVFF1TlRVM01EY3hJREF1TkRVeU1USTNMQzAwTGpjd09UUTFOaUF3TGpJME9EWTNMQzB3TGpBNU5UUXlJREF1TlRVMk9EQXlMQzB3TGpBMk9EZ3lJREF1TmpnME56TTRMREF1TURVNU1USWdNQzR4TWpjNU16Y3NNQzR4TWpjNU16WWdNQzR4T1Rrd05UWXNNaTR5T1RZME9ERWdNQzR4TlRnd05ETXNOQzQ0TVRnNU9EZ2dMVEF1TURZek1Ua3NNeTQ0T0RZME1EVWdMVEF1TVRNNE5qY3NOQzQxT1RnMk9ETWdMVEF1TkRrME5UY3lMRFF1TmpZM01EQTVJQzB3TGpJek1UQXdNeXd3TGpBME5ETTFJQzB3TGpVd05UVTNPU3d0TUM0d01EUTVJQzB3TGpZeE1ERTNMQzB3TGpFd09UVXpNeUJzSURBc01DQjZJZ29nSUNCcFpEMGljR0YwYURNM056QWlDaUFnSUdsdWEzTmpZWEJsT21OdmJtNWxZM1J2Y2kxamRYSjJZWFIxY21VOUlqQWlJQzgrUEhCaGRHZ0tJQ0FnYzNSNWJHVTlJbVpwYkd3NkkyWm1abVptWmp0emRISnZhMlU2STJabVptWm1aanR6ZEhKdmEyVXRkMmxrZEdnNk1DNHlOekV4T0RZME5DSUtJQ0FnWkQwaWJTQXpNQzQwTkRBME16TXNOVGN1T1RRMU16RTJJR01nTFRNdU1EWTBNRFV6TEMwd0xqUXlNVEV6SUMwMkxqYzNOekl6TEMweUxqUTNORGsxTXlBdE9DNDBOVGMyTWpFc0xUUXVOamM0TURZZ0xUSXVNVFU0T0N3dE1pNDRNekF6TXpNZ0xUTXVNVEV6T1RFNExDMDJMamN6TnpjeE5pQXRNaTQzTmprMU9USXNMVEV4TGpNek1ETTROU0JzSURBdU1Ua3pNVEl4TEMweUxqVTNOVGczTWlBeUxqQTNPVGc0TERBdU56TTFOakk0SUdNZ015NDFNamN3TWpZc01TNHlORGMwTmpZZ05pNHpNemMzTURFc01TNDNNVGt3TmpnZ01UQXVNakUxTkRjMExERXVOekUwTURVZ05DNHhOekUzTnpFc0xUQXVNREExTkNBMkxqWTBNams0TVN3dE1DNHpPRGcyT0NBeE1DNHlOVGd6Tml3dE1TNDFPVEV3TlRnZ01pNHhOemc1TnpNc0xUQXVOekkwTmpZNElESXVOamt5TVRrekxDMHdMamd4TlRnMU5pQXlMamd4TXpRME5Dd3RNQzQwT1RrNE9ETWdNQzR3T0RFMU55d3dMakl4TWpVMklEQXVNRGcyTmpRc01pNHhNVGs0TmpRZ01DNHdNVEV5Tnl3MExqSXpPRFExTXlBdE1DNHhNRFl5TVRjc01pNDVPRFU0TVNBdE1DNHlOalkxTXpFc05DNHlNVEk1TXpnZ0xUQXVOekV5T1RNMUxEVXVORFUzTWpBNElDMHhMalExTURJeE55dzBMakEwTWpJd05pQXROQzQwTURFeE1UZ3NOaTQ0TkRReE5UWWdMVGd1TkRNM09UTTRMRGd1TURFeU1ERTNJQzB5TGpNeE5EYzBOeXd3TGpZMk9UWTJNU0F0TXk0ek5ETXhOQ3d3TGpjM01qSXhOU0F0TlM0eE9UTTBOalVzTUM0MU1UYzVNRElnZWlJS0lDQWdhV1E5SW5CaGRHZ3pOemN5SWdvZ0lDQnBibXR6WTJGd1pUcGpiMjV1WldOMGIzSXRZM1Z5ZG1GMGRYSmxQU0l3SWlBdlBqd3ZaejRLUEhCaGRHZ0tJQ0FnYzNSNWJHVTlJbVpwYkd3Nkl6WTJRME5HUmp0emRISnZhMlU2SXpZMlEwTkdSanR6ZEhKdmEyVXRkMmxrZEdnNk1DNHlOekV4T0RZME16azVPVGs1T1RrNU55SUtJQ0FnWkQwaWJTQXlPQzQzTkRBMU5UWXNOREF1TURZek5qZ3lJR01nTFRJdU5EVTNOemsxTEMwd0xqSTRORGs1TlNBdE5TNHlPVEUxTWpJc0xUQXVPVGMyT0RneElDMDNMalEzT1RVek9Td3RNUzQ0TWpZeU1USWdMVEF1T1RZNU5Ea3lMQzB3TGpNM05qTXpNaUF0TVM0M09USTVNemtzTFRBdU56QTBPVFl4SUMweExqZ3lPVGc0TkN3dE1DNDNNekF5T0RjZ0xUQXVNVFV5TlRZMExDMHdMakV3TkRVNE5DQXdMamMyTmpBeE5pd3ROaTR5TkRJMU5ERWdNUzR4Tmpnd01Td3ROeTQ0TURRMk5UWWdNUzQwTWpFeE9URXNMVFV1TlRJeU5qTXhJRFF1TXpBME5EYzNMQzA0TGpBMk1UZzBPU0E1TGpFMU5ESTBNU3d0T0M0d05qRTRORGtnYkNBeExqVTBNVFV6TVN3d0lEQXNNUzQyTWpjeE1Ua2dZeUF3TERFdU1qTTNNVEkxSUMwd0xqQTVNemd4TERFdU5qSTNNVEU0SUMwd0xqTTVNVFF3TWl3eExqWXlOekV4T0NBdE1DNHlNVFV5TnpFc01DQXRNQzQxT0RFek56TXNNQzR5TnpFeU1qRWdMVEF1T0RFek5UVTVMREF1TmpBeU56RTBJQzB3TGpNME5UZzRPU3d3TGpRNU16Z3lOaUF0TUM0ME1qSXhOVGNzTVM0MU1qYzFNalFnTFRBdU5ESXlNVFUzTERVdU56SXhOekEySUd3Z01DdzFMakV4T0RrNU1pQXdMamd4TXpVMU9Td3dMamMxT1RrM09DQmpJREF1TmpjMU9EUTJMREF1TmpNeE16TTFJREF1T0RFek5UVTVMREF1T1RjeE1EZ3pJREF1T0RFek5UVTVMREl1TURBM01UQTRJREFzTUM0NE16VTVNakVnTFRBdU1URXhOemN4TERFdU1qTTFNemM0SUMwd0xqTXpPRGs0TXl3eExqSXhNVFE0T1NBdE1DNHhPRFkwTkN3dE1DNHdNVGsySUMweExqRTRNek0yTEMwd0xqRXpNelUxTVNBdE1pNHlNVFV6TnpZc0xUQXVNalV6TWpJZ2JDQXdMREFnZWlJS0lDQWdhV1E5SW5CaGRHZ3pOelkySWdvZ0lDQnBibXR6WTJGd1pUcGpiMjV1WldOMGIzSXRZM1Z5ZG1GMGRYSmxQU0l3SWlBdlBqd3ZjM1puUGc9PVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy13b3JkXCI+5peL6L2sPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpcC1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pbWdcIj5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICBzcmM9XCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaUlITjBZVzVrWVd4dmJtVTlJbTV2SWo4K0Nqd2hMUzBnUjJWdVpYSmhkRzl5T2lCQlpHOWlaU0JKYkd4MWMzUnlZWFJ2Y2lBeE5TNHdMakFzSUZOV1J5QkZlSEJ2Y25RZ1VHeDFaeTFKYmlBdUlGTldSeUJXWlhKemFXOXVPaUEyTGpBd0lFSjFhV3hrSURBcElDQXRMVDRLQ2p4emRtY0tJQ0FnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJZ29nSUNCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJZ29nSUNCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaUNpQWdJSGh0Ykc1ek9uTjJaejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpQ2lBZ0lIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJS0lDQWdlRzFzYm5NNmMyOWthWEJ2WkdrOUltaDBkSEE2THk5emIyUnBjRzlrYVM1emIzVnlZMlZtYjNKblpTNXVaWFF2UkZSRUwzTnZaR2x3YjJScExUQXVaSFJrSWdvZ0lDQjRiV3h1Y3pwcGJtdHpZMkZ3WlQwaWFIUjBjRG92TDNkM2R5NXBibXR6WTJGd1pTNXZjbWN2Ym1GdFpYTndZV05sY3k5cGJtdHpZMkZ3WlNJS0lDQWdkbVZ5YzJsdmJqMGlNUzR4SWdvZ0lDQnBaRDBpVEdGNVpYSmZNU0lLSUNBZ2VEMGlNSEI0SWdvZ0lDQjVQU0l3Y0hnaUNpQWdJSGRwWkhSb1BTSTJOSEI0SWdvZ0lDQm9aV2xuYUhROUlqWTBjSGdpQ2lBZ0lIWnBaWGRDYjNnOUlqQWdNQ0EyTkNBMk5DSUtJQ0FnWlc1aFlteGxMV0poWTJ0bmNtOTFibVE5SW01bGR5QXdJREFnTmpRZ05qUWlDaUFnSUhodGJEcHpjR0ZqWlQwaWNISmxjMlZ5ZG1VaUNpQWdJR2x1YTNOallYQmxPblpsY25OcGIyNDlJakF1TkRndU5DQnlPVGt6T1NJS0lDQWdjMjlrYVhCdlpHazZaRzlqYm1GdFpUMGlUVzkxYzJWU2FXZG9kQzV6ZG1jaVBqeHRaWFJoWkdGMFlRb2dJQ0JwWkQwaWJXVjBZV1JoZEdFeU1TSStQSEprWmpwU1JFWStQR05qT2xkdmNtc0tJQ0FnSUNBZ0lISmtaanBoWW05MWREMGlJajQ4WkdNNlptOXliV0YwUG1sdFlXZGxMM04yWnl0NGJXdzhMMlJqT21admNtMWhkRDQ4WkdNNmRIbHdaUW9nSUNBZ0lDQWdJQ0J5WkdZNmNtVnpiM1Z5WTJVOUltaDBkSEE2THk5d2RYSnNMbTl5Wnk5a1l5OWtZMjFwZEhsd1pTOVRkR2xzYkVsdFlXZGxJaUF2UGp4a1l6cDBhWFJzWlNBdlBqd3ZZMk02VjI5eWF6NDhMM0prWmpwU1JFWStQQzl0WlhSaFpHRjBZVDQ4WkdWbWN3b2dJQ0JwWkQwaVpHVm1jekU1SWlBdlBqeHpiMlJwY0c5a2FUcHVZVzFsWkhacFpYY0tJQ0FnY0dGblpXTnZiRzl5UFNJalptWm1abVptSWdvZ0lDQmliM0prWlhKamIyeHZjajBpSXpZMk5qWTJOaUlLSUNBZ1ltOXlaR1Z5YjNCaFkybDBlVDBpTVNJS0lDQWdiMkpxWldOMGRHOXNaWEpoYm1ObFBTSXhNQ0lLSUNBZ1ozSnBaSFJ2YkdWeVlXNWpaVDBpTVRBaUNpQWdJR2QxYVdSbGRHOXNaWEpoYm1ObFBTSXhNQ0lLSUNBZ2FXNXJjMk5oY0dVNmNHRm5aVzl3WVdOcGRIazlJakFpQ2lBZ0lHbHVhM05qWVhCbE9uQmhaMlZ6YUdGa2IzYzlJaklpQ2lBZ0lHbHVhM05qWVhCbE9uZHBibVJ2ZHkxM2FXUjBhRDBpTVRJNE1pSUtJQ0FnYVc1cmMyTmhjR1U2ZDJsdVpHOTNMV2hsYVdkb2REMGlPRGcySWdvZ0lDQnBaRDBpYm1GdFpXUjJhV1YzTVRjaUNpQWdJSE5vYjNkbmNtbGtQU0ptWVd4elpTSUtJQ0FnYVc1cmMyTmhjR1U2ZW05dmJUMGlNeTQyT0RjMUlnb2dJQ0JwYm10elkyRndaVHBqZUQwaU16SWlDaUFnSUdsdWEzTmpZWEJsT21ONVBTSXpNaUlLSUNBZ2FXNXJjMk5oY0dVNmQybHVaRzkzTFhnOUlqTXhJZ29nSUNCcGJtdHpZMkZ3WlRwM2FXNWtiM2N0ZVQwaU1UVWlDaUFnSUdsdWEzTmpZWEJsT25kcGJtUnZkeTF0WVhocGJXbDZaV1E5SWpBaUNpQWdJR2x1YTNOallYQmxPbU4xY25KbGJuUXRiR0Y1WlhJOUltY3pJaUF2UGdvOFp3b2dJQ0JwWkQwaVp6TWlQZ29KUEdjS0lDQWdhV1E5SW1jMUlnb2dJQ0J6ZEhsc1pUMGljM1J5YjJ0bE9pTTBaRFJrTkdRN1ptbHNiRG9qTkdRMFpEUmtJajRLQ1FrOGNHRjBhQW9nSUNCbWFXeHNQU0lqTURJd01qQXlJZ29nSUNCa1BTSk5Nekl1T0RVMExESXdMakF5T0dNdE1DNHdNVFV0TVM0eU56UXNNQzQxTnpZdE1pNHlOamtzTVM0eE5URXRNeTR5TXpaak1DNDNOVGd0TVM0eU56Z3NNUzQxTkRNdE1pNDJMREF1T1RrM0xUUXVOREUzSUNBZ0lHTXRNQzQxTlRVdE1TNDJOamN0TVM0Mk1EY3RNaTQwT0RVdE1pNDFNemt0TXk0eU1USmpMVEV1TWpVMExUQXVPVGN6TFRJdU1UVTVMVEV1TmpjMkxURXVOamczTFRRdU16UXpiREF1TURReExUQXVNakk1YkMweExqTTFMVEF1TWpNNFRESTVMalF5Tnl3MExqVTRJQ0FnSUdNdE1DNDJNVFVzTXk0ME9EUXNNQzQ0Tnpnc05DNDJORE1zTWk0eE9UVXNOUzQyTmpaak1DNDROU3d3TGpZMk15d3hMalkxTXl3eExqSTRPQ3d5TGpBM01pd3lMalUwTW1Nd0xqTTJOaXd4TGpJeU5DMHdMakU0TERJdU1UUXpMVEF1T0RZNUxETXVNekEySUNBZ0lHTXRNQzQyTkRFc01TNHdPREV0TVM0ek5qWXNNaTR6TFRFdU16UTVMRE11T1RNell5MDJMamd6Tnl3d0xqQXdOeTB4TXk0NE1qTXNNQzR5T1RFdE1UTXVPREl6TERJMExqVTVZekFzTVRBdU9UVXhMRGd1TnprNUxERTFMakF6TWl3eE5DNHpORGNzTVRVdU1ETXlJQ0FnSUdNMUxqVTBOU3d3TERFMExqTTBOeTAwTGpBNE1Td3hOQzR6TkRjdE1UVXVNRE15UXpRMkxqTTBOeXd5TUM0ek5EY3NNemt1TWpJNExESXdMakEwT0N3ek1pNDROVFFzTWpBdU1ESTRlaUJOTXpJdU5qZzFMREl4TGpNNU9TQWdJQ0JqTlM0Mk5ETXNNQzR3TVRJc01UQXVPVEkzTERBdU1qTTJMREV5TGpBMk15d3hOaTR4TlROakxUTXVPRFlzTVM0NE1EVXROeTQ1TVRZc01pNDNOalV0TVRJdU1EWXpMREl1T0RaMkxUSXVPVFkyWXpBdU9EUTFMVEF1TVRZeUxERXVORGd4TFRBdU9UQTVMREV1TkRneExURXVOemd5ZGkwNExqazFOaUFnSUNCak1DMHdMamczTmkwd0xqWXpOeTB4TGpZeU1TMHhMalE0TVMweExqYzRORll5TVM0ek9UbDZJRTB6TVM0Mk5UZ3NNall1TWpVMGFEQXVOamcxWXpBdU1qUTVMREFzTUM0ME5UTXNNQzR5TURVc01DNDBOVE1zTUM0ME5UUjJPQzQ1TlRZZ0lDQWdZekFzTUM0eU5Ea3RNQzR5TURRc01DNDBORGt0TUM0ME5UTXNNQzQwTkRsb0xUQXVOamcxWXkwd0xqSTBPU3d3TFRBdU5EVXlMVEF1TWkwd0xqUTFNaTB3TGpRME9YWXRPQzQ1TlRaRE16RXVNakEyTERJMkxqUTFPU3d6TVM0ME1Ea3NNall1TWpVMExETXhMalkxT0N3eU5pNHlOVFI2SUNBZ0lDQk5NekV1TXpFekxESXhMak01T1hZekxqVXlOV010TUM0NE5EVXNNQzR4TmpNdE1TNDBOemtzTUM0NU1TMHhMalEzT1N3eExqYzROSFk0TGprMU5tTXdMREF1T0RjekxEQXVOak0wTERFdU5qSXNNUzQwTnprc01TNDNPREoyTWk0NU5qWWdJQ0FnWXkwMkxqTXhNUzB3TGpFME9DMHhNQzQ1TURVdE1pNHlOVEl0TVRJdU1EWXpMVEl1T0RNNVF6SXdMak00TVN3eU1TNDJNek1zTWpVdU5qWTRMREl4TGpReE1Td3pNUzR6TVRNc01qRXVNems1ZWlCTk16SXNOVGd1TWpjMElDQWdJR010TlM0d01UWXNNQzB4TWk0NU56WXRNeTQzTURjdE1USXVPVGMyTFRFekxqWTFPR013TFRFdU9UZ3pMREF1TURRMUxUTXVPRFV6TERBdU1UTTBMVFV1TlRZell6SXVNREF6TERBdU9USTVMRFl1TmprMkxESXVOelFzTVRJdU9EWTRMREl1TnpRZ0lDQWdZelF1TXprMExEQXNPQzQzTURRdE1DNDVNelFzTVRJdU9ERXpMVEl1TnpjeFl6QXVNRGc1TERFdU56RTRMREF1TVRNMUxETXVOaXd3TGpFek5TdzFMalU1TlVNME5DNDVOelFzTlRRdU5UWTNMRE0zTGpBeE5pdzFPQzR5TnpRc016SXNOVGd1TWpjMGVpSUtJQ0FnYVdROUluQmhkR2czSWdvZ0lDQnpkSGxzWlQwaWMzUnliMnRsT2lNMFpEUmtOR1E3Wm1sc2JEb2pOR1EwWkRSa0lpQXZQZ29KUEM5blBnb0pDZ2tLUEhCaGRHZ0tJQ0FnYzNSNWJHVTlJbVpwYkd3Nkl6WTFSa1F3TUR0emRISnZhMlU2SXpZMVJrUXdNRHR6ZEhKdmEyVXRkMmxrZEdnNk1DNHlOekV4T0RZME16azVPVGs1T1RrNU55SUtJQ0FnWkQwaWJTQXpNaTQ1TWpJd016UXNNemd1T1RVd056a3pJR01nTUN3dE1TNHhNelU0TWpVZ01DNHhNVFE1TVRrc0xURXVORFU0TURRMUlEQXVOamMzT1RZMkxDMHhMamt3TURrek9DQnNJREF1TmpjM09UWTJMQzB3TGpVek16STRPQ0F3TEMwMUxqSTRNRGM0SUdNZ01Dd3ROUzR5TnpFeU5Ea2dMVEF1TURBeE1pd3ROUzR5T0RJd01ETWdMVEF1TmpjM09UWTJMQzAxTGprMU9EYzBOU0F0TUM0MU5UYzBNemtzTFRBdU5UVTNORE01SUMwd0xqWTNOemsyTml3dE1DNDVOREE1TXpVZ0xUQXVOamMzT1RZMkxDMHlMakUxTnpFMk5TQnNJREFzTFRFdU5EYzVNVGs1SURFdU5UTTFORGczTERBZ1l5QTFMalkxTnpVMU5Dd3dJRGd1TlRnME16TTRMRE11TnpJNE5USTVJRGt1TnpFNE5UVXNNVEl1TXpnd056a3hJREF1TkRrNE5ETTBMRE11T0RBeU1qWTFJREF1TlRBek5EZ3NNeTQxTWpVM016RWdMVEF1TURZM05pd3pMamN3TkRVM01pQXRNQzR5TmpFd01UY3NNQzR3T0RFM05DQXRNUzQxTWpnMk9UUXNNQzQxTVRJd01UWWdMVEl1T0RFM01EVTVMREF1T1RVMk1UWTNJQzB5TGpBek56SXdOaXd3TGpjd01qTXdOaUF0TkM0d05EZ3dNeklzTVM0eE1UTXdORFFnTFRjdU5EZzRNREkyTERFdU5USTVOVEk0SUd3Z0xUQXVPRGd4TXpVMkxEQXVNVEEyTnpBM0lEQXNMVEV1TXpZM05qVWdlaUlLSUNBZ2FXUTlJbkJoZEdnek56WTRJZ29nSUNCcGJtdHpZMkZ3WlRwamIyNXVaV04wYjNJdFkzVnlkbUYwZFhKbFBTSXdJaUF2UGp4d1lYUm9DaUFnSUhOMGVXeGxQU0ptYVd4c09pTm1abVptWm1ZN2MzUnliMnRsT2lObVptWm1abVk3YzNSeWIydGxMWGRwWkhSb09qQXVNamN4TVRnMk5EUWlDaUFnSUdROUltMGdNekV1TkRnMU1EZ3hMRE0xTGpnME1qRTBNeUJqSUMwd0xqRXdORFU1TVN3dE1DNHhNRFExT1RFZ0xUQXVNVGt3TVRZMkxDMHlMakl6TVRNME55QXRNQzR4T1RBeE5qWXNMVFF1TnpJMk1USXpJREFzTFRNdU9UZ3pPVGswSURBdU1EVTFNRElzTFRRdU5UVTNNRGN4SURBdU5EVXlNVEkzTEMwMExqY3dPVFExTmlBd0xqSTBPRFkzTEMwd0xqQTVOVFF5SURBdU5UVTJPREF5TEMwd0xqQTJPRGd5SURBdU5qZzBOek00TERBdU1EVTVNVElnTUM0eE1qYzVNemNzTUM0eE1qYzVNellnTUM0eE9Ua3dOVFlzTWk0eU9UWTBPREVnTUM0eE5UZ3dORE1zTkM0NE1UZzVPRGdnTFRBdU1EWXpNVGtzTXk0NE9EWTBNRFVnTFRBdU1UTTROamNzTkM0MU9UZzJPRE1nTFRBdU5EazBOVGN5TERRdU5qWTNNREE1SUMwd0xqSXpNVEF3TXl3d0xqQTBORE0xSUMwd0xqVXdOVFUzT1N3dE1DNHdNRFE1SUMwd0xqWXhNREUzTEMwd0xqRXdPVFV6TXlCc0lEQXNNQ0I2SWdvZ0lDQnBaRDBpY0dGMGFETTNOekFpQ2lBZ0lHbHVhM05qWVhCbE9tTnZibTVsWTNSdmNpMWpkWEoyWVhSMWNtVTlJakFpSUM4K1BIQmhkR2dLSUNBZ2MzUjViR1U5SW1acGJHdzZJMlptWm1abVpqdHpkSEp2YTJVNkkyWm1abVptWmp0emRISnZhMlV0ZDJsa2RHZzZNQzR5TnpFeE9EWTBOQ0lLSUNBZ1pEMGliU0F6TUM0ME5EQTBNek1zTlRjdU9UUTFNekUySUdNZ0xUTXVNRFkwTURVekxDMHdMalF5TVRFeklDMDJMamMzTnpJekxDMHlMalEzTkRrMU15QXRPQzQwTlRjMk1qRXNMVFF1TmpjNE1EWWdMVEl1TVRVNE9Dd3RNaTQ0TXpBek16TWdMVE11TVRFek9URTRMQzAyTGpjek56Y3hOaUF0TWk0M05qazFPVElzTFRFeExqTXpNRE00TlNCc0lEQXVNVGt6TVRJeExDMHlMalUzTlRnM01pQXlMakEzT1RnNExEQXVOek0xTmpJNElHTWdNeTQxTWpjd01qWXNNUzR5TkRjME5qWWdOaTR6TXpjM01ERXNNUzQzTVRrd05qZ2dNVEF1TWpFMU5EYzBMREV1TnpFME1EVWdOQzR4TnpFM056RXNMVEF1TURBMU5DQTJMalkwTWprNE1Td3RNQzR6T0RnMk9DQXhNQzR5TlRnek5pd3RNUzQxT1RFd05UZ2dNaTR4TnpnNU56TXNMVEF1TnpJME5qWTRJREl1TmpreU1Ua3pMQzB3TGpneE5UZzFOaUF5TGpneE16UTBOQ3d0TUM0ME9UazRPRE1nTUM0d09ERTFOeXd3TGpJeE1qVTJJREF1TURnMk5qUXNNaTR4TVRrNE5qUWdNQzR3TVRFeU55dzBMakl6T0RRMU15QXRNQzR4TURZeU1UY3NNaTQ1T0RVNE1TQXRNQzR5TmpZMU16RXNOQzR5TVRJNU16Z2dMVEF1TnpFeU9UTTFMRFV1TkRVM01qQTRJQzB4TGpRMU1ESXhOeXcwTGpBME1qSXdOaUF0TkM0ME1ERXhNVGdzTmk0NE5EUXhOVFlnTFRndU5ETTNPVE00TERndU1ERXlNREUzSUMweUxqTXhORGMwTnl3d0xqWTJPVFkyTVNBdE15NHpORE14TkN3d0xqYzNNakl4TlNBdE5TNHhPVE0wTmpVc01DNDFNVGM1TURJZ2VpSUtJQ0FnYVdROUluQmhkR2d6TnpjeUlnb2dJQ0JwYm10elkyRndaVHBqYjI1dVpXTjBiM0l0WTNWeWRtRjBkWEpsUFNJd0lpQXZQanh3WVhSb0NpQWdJSE4wZVd4bFBTSm1hV3hzT2lObVptWm1abVk3YzNSeWIydGxPaU5tWm1abVptWTdjM1J5YjJ0bExYZHBaSFJvT2pBdU1qY3hNVGcyTkRRaUNpQWdJR1E5SW0wZ01qZ3VOelF3TlRVMkxEUXdMakEyTXpZNE1pQmpJQzB5TGpRMU56YzVOU3d0TUM0eU9EUTVPVFVnTFRVdU1qa3hOVEl5TEMwd0xqazNOamc0TVNBdE55NDBOemsxTXprc0xURXVPREkyTWpFeUlDMHdMamsyT1RRNU1pd3RNQzR6TnpZek16SWdMVEV1TnpreU9UTTVMQzB3TGpjd05EazJNU0F0TVM0NE1qazRPRFFzTFRBdU56TXdNamczSUMwd0xqRTFNalUyTkN3dE1DNHhNRFExT0RRZ01DNDNOall3TVRZc0xUWXVNalF5TlRReElERXVNVFk0TURFc0xUY3VPREEwTmpVMklERXVOREl4TVRreExDMDFMalV5TWpZek1TQTBMak13TkRRM055d3RPQzR3TmpFNE5Ea2dPUzR4TlRReU5ERXNMVGd1TURZeE9EUTVJR3dnTVM0MU5ERTFNekVzTUNBd0xERXVOakkzTVRFNUlHTWdNQ3d4TGpJek56RXlOU0F0TUM0d09UTTRNU3d4TGpZeU56RXhPQ0F0TUM0ek9URTBNRElzTVM0Mk1qY3hNVGdnTFRBdU1qRTFNamN4TERBZ0xUQXVOVGd4TXpjekxEQXVNamN4TWpJeElDMHdMamd4TXpVMU9Td3dMall3TWpjeE5DQXRNQzR6TkRVNE9Ea3NNQzQwT1RNNE1qWWdMVEF1TkRJeU1UVTNMREV1TlRJM05USTBJQzB3TGpReU1qRTFOeXcxTGpjeU1UY3dOaUJzSURBc05TNHhNVGc1T1RJZ01DNDRNVE0xTlRrc01DNDNOVGs1TnpnZ1l5QXdMalkzTlRnME5pd3dMall6TVRNek5TQXdMamd4TXpVMU9Td3dMamszTVRBNE15QXdMamd4TXpVMU9Td3lMakF3TnpFd09DQXdMREF1T0RNMU9USXhJQzB3TGpFeE1UYzNNU3d4TGpJek5UTTNPQ0F0TUM0ek16ZzVPRE1zTVM0eU1URTBPRGtnTFRBdU1UZzJORFFzTFRBdU1ERTVOaUF0TVM0eE9ETXpOaXd0TUM0eE16TTFOVEVnTFRJdU1qRTFNemMyTEMwd0xqSTFNekl5SUd3Z01Dd3dJSG9pQ2lBZ0lHbGtQU0p3WVhSb016YzNPQ0lLSUNBZ2FXNXJjMk5oY0dVNlkyOXVibVZqZEc5eUxXTjFjblpoZEhWeVpUMGlNQ0lnTHo0OEwyYytDand2YzNablBnPT1cIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctd29yZFwiPuW5s+enuzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXAtcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW1nXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lJSE4wWVc1a1lXeHZibVU5SW01dklqOCtDandoTFMwZ1IyVnVaWEpoZEc5eU9pQkJaRzlpWlNCSmJHeDFjM1J5WVhSdmNpQXhOUzR3TGpBc0lGTldSeUJGZUhCdmNuUWdVR3gxWnkxSmJpQXVJRk5XUnlCV1pYSnphVzl1T2lBMkxqQXdJRUoxYVd4a0lEQXBJQ0F0TFQ0S0NqeHpkbWNLSUNBZ2VHMXNibk02WkdNOUltaDBkSEE2THk5d2RYSnNMbTl5Wnk5a1l5OWxiR1Z0Wlc1MGN5OHhMakV2SWdvZ0lDQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWdvZ0lDQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlDaUFnSUhodGJHNXpPbk4yWnowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUNpQWdJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SUtJQ0FnZUcxc2JuTTZjMjlrYVhCdlpHazlJbWgwZEhBNkx5OXpiMlJwY0c5a2FTNXpiM1Z5WTJWbWIzSm5aUzV1WlhRdlJGUkVMM052Wkdsd2IyUnBMVEF1WkhSa0lnb2dJQ0I0Yld4dWN6cHBibXR6WTJGd1pUMGlhSFIwY0RvdkwzZDNkeTVwYm10elkyRndaUzV2Y21jdmJtRnRaWE53WVdObGN5OXBibXR6WTJGd1pTSUtJQ0FnZG1WeWMybHZiajBpTVM0eElnb2dJQ0JwWkQwaVRHRjVaWEpmTVNJS0lDQWdlRDBpTUhCNElnb2dJQ0I1UFNJd2NIZ2lDaUFnSUhkcFpIUm9QU0kyTkhCNElnb2dJQ0JvWldsbmFIUTlJalkwY0hnaUNpQWdJSFpwWlhkQ2IzZzlJakFnTUNBMk5DQTJOQ0lLSUNBZ1pXNWhZbXhsTFdKaFkydG5jbTkxYm1ROUltNWxkeUF3SURBZ05qUWdOalFpQ2lBZ0lIaHRiRHB6Y0dGalpUMGljSEpsYzJWeWRtVWlDaUFnSUdsdWEzTmpZWEJsT25abGNuTnBiMjQ5SWpBdU5EZ3VOQ0J5T1Rrek9TSUtJQ0FnYzI5a2FYQnZaR2s2Wkc5amJtRnRaVDBpVFc5MWMyVk5hV1JrYkdVdWMzWm5JajQ4YldWMFlXUmhkR0VLSUNBZ2FXUTlJbTFsZEdGa1lYUmhNakVpUGp4eVpHWTZVa1JHUGp4all6cFhiM0pyQ2lBZ0lDQWdJQ0J5WkdZNllXSnZkWFE5SWlJK1BHUmpPbVp2Y20xaGRENXBiV0ZuWlM5emRtY3JlRzFzUEM5a1l6cG1iM0p0WVhRK1BHUmpPblI1Y0dVS0lDQWdJQ0FnSUNBZ2NtUm1PbkpsYzI5MWNtTmxQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012WkdOdGFYUjVjR1V2VTNScGJHeEpiV0ZuWlNJZ0x6NDhaR002ZEdsMGJHVWdMejQ4TDJOak9sZHZjbXMrUEM5eVpHWTZVa1JHUGp3dmJXVjBZV1JoZEdFK1BHUmxabk1LSUNBZ2FXUTlJbVJsWm5NeE9TSWdMejQ4YzI5a2FYQnZaR2s2Ym1GdFpXUjJhV1YzQ2lBZ0lIQmhaMlZqYjJ4dmNqMGlJMlptWm1abVppSUtJQ0FnWW05eVpHVnlZMjlzYjNJOUlpTTJOalkyTmpZaUNpQWdJR0p2Y21SbGNtOXdZV05wZEhrOUlqRWlDaUFnSUc5aWFtVmpkSFJ2YkdWeVlXNWpaVDBpTVRBaUNpQWdJR2R5YVdSMGIyeGxjbUZ1WTJVOUlqRXdJZ29nSUNCbmRXbGtaWFJ2YkdWeVlXNWpaVDBpTVRBaUNpQWdJR2x1YTNOallYQmxPbkJoWjJWdmNHRmphWFI1UFNJd0lnb2dJQ0JwYm10elkyRndaVHB3WVdkbGMyaGhaRzkzUFNJeUlnb2dJQ0JwYm10elkyRndaVHAzYVc1a2IzY3RkMmxrZEdnOUlqRXlPRElpQ2lBZ0lHbHVhM05qWVhCbE9uZHBibVJ2ZHkxb1pXbG5hSFE5SWpnNE5pSUtJQ0FnYVdROUltNWhiV1ZrZG1sbGR6RTNJZ29nSUNCemFHOTNaM0pwWkQwaVptRnNjMlVpQ2lBZ0lHbHVhM05qWVhCbE9ucHZiMjA5SWpNdU5qZzNOU0lLSUNBZ2FXNXJjMk5oY0dVNlkzZzlJaTB4TUM0ek1EVXdPRFVpQ2lBZ0lHbHVhM05qWVhCbE9tTjVQU0l6TWlJS0lDQWdhVzVyYzJOaGNHVTZkMmx1Wkc5M0xYZzlJak14SWdvZ0lDQnBibXR6WTJGd1pUcDNhVzVrYjNjdGVUMGlNVFVpQ2lBZ0lHbHVhM05qWVhCbE9uZHBibVJ2ZHkxdFlYaHBiV2w2WldROUlqQWlDaUFnSUdsdWEzTmpZWEJsT21OMWNuSmxiblF0YkdGNVpYSTlJbWN6SWlBdlBnbzhad29nSUNCcFpEMGlaek1pUGdvSlBHY0tJQ0FnYVdROUltYzFJZ29nSUNCemRIbHNaVDBpYzNSeWIydGxPaU0wWkRSa05HUTdabWxzYkRvak5HUTBaRFJrSWo0S0NRazhjR0YwYUFvZ0lDQm1hV3hzUFNJak1ESXdNakF5SWdvZ0lDQmtQU0pOTXpJdU9EVTBMREl3TGpBeU9HTXRNQzR3TVRVdE1TNHlOelFzTUM0MU56WXRNaTR5Tmprc01TNHhOVEV0TXk0eU16WmpNQzQzTlRndE1TNHlOemdzTVM0MU5ETXRNaTQyTERBdU9UazNMVFF1TkRFM0lDQWdJR010TUM0MU5UVXRNUzQyTmpjdE1TNDJNRGN0TWk0ME9EVXRNaTQxTXprdE15NHlNVEpqTFRFdU1qVTBMVEF1T1RjekxUSXVNVFU1TFRFdU5qYzJMVEV1TmpnM0xUUXVNelF6YkRBdU1EUXhMVEF1TWpJNWJDMHhMak0xTFRBdU1qTTRUREk1TGpReU55dzBMalU0SUNBZ0lHTXRNQzQyTVRVc015NDBPRFFzTUM0NE56Z3NOQzQyTkRNc01pNHhPVFVzTlM0Mk5qWmpNQzQ0TlN3d0xqWTJNeXd4TGpZMU15d3hMakk0T0N3eUxqQTNNaXd5TGpVME1tTXdMak0yTml3eExqSXlOQzB3TGpFNExESXVNVFF6TFRBdU9EWTVMRE11TXpBMklDQWdJR010TUM0Mk5ERXNNUzR3T0RFdE1TNHpOallzTWk0ekxURXVNelE1TERNdU9UTXpZeTAyTGpnek55d3dMakF3TnkweE15NDRNak1zTUM0eU9URXRNVE11T0RJekxESTBMalU1WXpBc01UQXVPVFV4TERndU56azVMREUxTGpBek1pd3hOQzR6TkRjc01UVXVNRE15SUNBZ0lHTTFMalUwTlN3d0xERTBMak0wTnkwMExqQTRNU3d4TkM0ek5EY3RNVFV1TURNeVF6UTJMak0wTnl3eU1DNHpORGNzTXprdU1qSTRMREl3TGpBME9Dd3pNaTQ0TlRRc01qQXVNREk0ZWlCTk16SXVOamcxTERJeExqTTVPU0FnSUNCak5TNDJORE1zTUM0d01USXNNVEF1T1RJM0xEQXVNak0yTERFeUxqQTJNeXd4Tmk0eE5UTmpMVE11T0RZc01TNDRNRFV0Tnk0NU1UWXNNaTQzTmpVdE1USXVNRFl6TERJdU9EWjJMVEl1T1RZMll6QXVPRFExTFRBdU1UWXlMREV1TkRneExUQXVPVEE1TERFdU5EZ3hMVEV1TnpneWRpMDRMamsxTmlBZ0lDQmpNQzB3TGpnM05pMHdMall6TnkweExqWXlNUzB4TGpRNE1TMHhMamM0TkZZeU1TNHpPVGw2SUUwek1TNDJOVGdzTWpZdU1qVTBhREF1TmpnMVl6QXVNalE1TERBc01DNDBOVE1zTUM0eU1EVXNNQzQwTlRNc01DNDBOVFIyT0M0NU5UWWdJQ0FnWXpBc01DNHlORGt0TUM0eU1EUXNNQzQwTkRrdE1DNDBOVE1zTUM0ME5EbG9MVEF1TmpnMVl5MHdMakkwT1N3d0xUQXVORFV5TFRBdU1pMHdMalExTWkwd0xqUTBPWFl0T0M0NU5UWkRNekV1TWpBMkxESTJMalExT1N3ek1TNDBNRGtzTWpZdU1qVTBMRE14TGpZMU9Dd3lOaTR5TlRSNklDQWdJQ0JOTXpFdU16RXpMREl4TGpNNU9YWXpMalV5TldNdE1DNDRORFVzTUM0eE5qTXRNUzQwTnprc01DNDVNUzB4TGpRM09Td3hMamM0TkhZNExqazFObU13TERBdU9EY3pMREF1TmpNMExERXVOaklzTVM0ME56a3NNUzQzT0RKMk1pNDVOallnSUNBZ1l5MDJMak14TVMwd0xqRTBPQzB4TUM0NU1EVXRNaTR5TlRJdE1USXVNRFl6TFRJdU9ETTVRekl3TGpNNE1Td3lNUzQyTXpNc01qVXVOalk0TERJeExqUXhNU3d6TVM0ek1UTXNNakV1TXprNWVpQk5NeklzTlRndU1qYzBJQ0FnSUdNdE5TNHdNVFlzTUMweE1pNDVOell0TXk0M01EY3RNVEl1T1RjMkxURXpMalkxT0dNd0xURXVPVGd6TERBdU1EUTFMVE11T0RVekxEQXVNVE0wTFRVdU5UWXpZekl1TURBekxEQXVPVEk1TERZdU5qazJMREl1TnpRc01USXVPRFk0TERJdU56UWdJQ0FnWXpRdU16azBMREFzT0M0M01EUXRNQzQ1TXpRc01USXVPREV6TFRJdU56Y3hZekF1TURnNUxERXVOekU0TERBdU1UTTFMRE11Tml3d0xqRXpOU3cxTGpVNU5VTTBOQzQ1TnpRc05UUXVOVFkzTERNM0xqQXhOaXcxT0M0eU56UXNNeklzTlRndU1qYzBlaUlLSUNBZ2FXUTlJbkJoZEdnM0lnb2dJQ0J6ZEhsc1pUMGljM1J5YjJ0bE9pTTBaRFJrTkdRN1ptbHNiRG9qTkdRMFpEUmtJaUF2UGdvSlBDOW5QZ29KQ2drS1BIQmhkR2dLSUNBZ2MzUjViR1U5SW1acGJHdzZJMlptWm1abVpqdHpkSEp2YTJVNkkyWm1abVptWmp0emRISnZhMlV0ZDJsa2RHZzZNQzR5TnpFeE9EWTBNems1T1RrNU9UazVOeUlLSUNBZ1pEMGliU0F6TWk0NU1qSXdNelFzTXpndU9UVXdOemt6SUdNZ01Dd3RNUzR4TXpVNE1qVWdNQzR4TVRRNU1Ua3NMVEV1TkRVNE1EUTFJREF1TmpjM09UWTJMQzB4TGprd01Ea3pPQ0JzSURBdU5qYzNPVFkyTEMwd0xqVXpNekk0T0NBd0xDMDFMakk0TURjNElHTWdNQ3d0TlM0eU56RXlORGtnTFRBdU1EQXhNaXd0TlM0eU9ESXdNRE1nTFRBdU5qYzNPVFkyTEMwMUxqazFPRGMwTlNBdE1DNDFOVGMwTXprc0xUQXVOVFUzTkRNNUlDMHdMalkzTnprMk5pd3RNQzQ1TkRBNU16VWdMVEF1TmpjM09UWTJMQzB5TGpFMU56RTJOU0JzSURBc0xURXVORGM1TVRrNUlERXVOVE0xTkRnM0xEQWdZeUExTGpZMU56VTFOQ3d3SURndU5UZzBNek00TERNdU56STROVEk1SURrdU56RTROVFVzTVRJdU16Z3dOemt4SURBdU5EazRORE0wTERNdU9EQXlNalkxSURBdU5UQXpORGdzTXk0MU1qVTNNekVnTFRBdU1EWTNOaXd6TGpjd05EVTNNaUF0TUM0eU5qRXdNVGNzTUM0d09ERTNOQ0F0TVM0MU1qZzJPVFFzTUM0MU1USXdNVFlnTFRJdU9ERTNNRFU1TERBdU9UVTJNVFkzSUMweUxqQXpOekl3Tml3d0xqY3dNak13TmlBdE5DNHdORGd3TXpJc01TNHhNVE13TkRRZ0xUY3VORGc0TURJMkxERXVOVEk1TlRJNElHd2dMVEF1T0RneE16VTJMREF1TVRBMk56QTNJREFzTFRFdU16WTNOalVnZWlJS0lDQWdhV1E5SW5CaGRHZ3pOelk0SWdvZ0lDQnBibXR6WTJGd1pUcGpiMjV1WldOMGIzSXRZM1Z5ZG1GMGRYSmxQU0l3SWlBdlBqeHdZWFJvQ2lBZ0lITjBlV3hsUFNKbWFXeHNPaU5tWm1abVptWTdjM1J5YjJ0bE9pTm1abVptWm1ZN2MzUnliMnRsTFhkcFpIUm9PakF1TWpjeE1UZzJORFFpQ2lBZ0lHUTlJbTBnTXpBdU5EUXdORE16TERVM0xqazBOVE14TmlCaklDMHpMakEyTkRBMU15d3RNQzQwTWpFeE15QXROaTQzTnpjeU15d3RNaTQwTnpRNU5UTWdMVGd1TkRVM05qSXhMQzAwTGpZM09EQTJJQzB5TGpFMU9EZ3NMVEl1T0RNd016TXpJQzB6TGpFeE16a3hPQ3d0Tmk0M016YzNNVFlnTFRJdU56WTVOVGt5TEMweE1TNHpNekF6T0RVZ2JDQXdMakU1TXpFeU1Td3RNaTQxTnpVNE56SWdNaTR3TnprNE9Dd3dMamN6TlRZeU9DQmpJRE11TlRJM01ESTJMREV1TWpRM05EWTJJRFl1TXpNM056QXhMREV1TnpFNU1EWTRJREV3TGpJeE5UUTNOQ3d4TGpjeE5EQTFJRFF1TVRjeE56Y3hMQzB3TGpBd05UUWdOaTQyTkRJNU9ERXNMVEF1TXpnNE5qZ2dNVEF1TWpVNE16WXNMVEV1TlRreE1EVTRJREl1TVRjNE9UY3pMQzB3TGpjeU5EWTJPQ0F5TGpZNU1qRTVNeXd0TUM0NE1UVTROVFlnTWk0NE1UTTBORFFzTFRBdU5EazVPRGd6SURBdU1EZ3hOVGNzTUM0eU1USTFOaUF3TGpBNE5qWTBMREl1TVRFNU9EWTBJREF1TURFeE1qY3NOQzR5TXpnME5UTWdMVEF1TVRBMk1qRTNMREl1T1RnMU9ERWdMVEF1TWpZMk5UTXhMRFF1TWpFeU9UTTRJQzB3TGpjeE1qa3pOU3cxTGpRMU56SXdPQ0F0TVM0ME5UQXlNVGNzTkM0d05ESXlNRFlnTFRRdU5EQXhNVEU0TERZdU9EUTBNVFUySUMwNExqUXpOemt6T0N3NExqQXhNakF4TnlBdE1pNHpNVFEzTkRjc01DNDJOamsyTmpFZ0xUTXVNelF6TVRRc01DNDNOekl5TVRVZ0xUVXVNVGt6TkRZMUxEQXVOVEUzT1RBeUlIb2lDaUFnSUdsa1BTSndZWFJvTXpjM01pSUtJQ0FnYVc1cmMyTmhjR1U2WTI5dWJtVmpkRzl5TFdOMWNuWmhkSFZ5WlQwaU1DSWdMejQ4Y0dGMGFBb2dJQ0J6ZEhsc1pUMGlabWxzYkRvalptWm1abVptTzNOMGNtOXJaVG9qWm1abVptWm1PM04wY205clpTMTNhV1IwYURvd0xqSTNNVEU0TmpRMElnb2dJQ0JrUFNKdElESTRMamMwTURVMU5pdzBNQzR3TmpNMk9ESWdZeUF0TWk0ME5UYzNPVFVzTFRBdU1qZzBPVGsxSUMwMUxqSTVNVFV5TWl3dE1DNDVOelk0T0RFZ0xUY3VORGM1TlRNNUxDMHhMamd5TmpJeE1pQXRNQzQ1TmprME9USXNMVEF1TXpjMk16TXlJQzB4TGpjNU1qa3pPU3d0TUM0M01EUTVOakVnTFRFdU9ESTVPRGcwTEMwd0xqY3pNREk0TnlBdE1DNHhOVEkxTmpRc0xUQXVNVEEwTlRnMElEQXVOelkyTURFMkxDMDJMakkwTWpVME1TQXhMakUyT0RBeExDMDNMamd3TkRZMU5pQXhMalF5TVRFNU1Td3ROUzQxTWpJMk16RWdOQzR6TURRME56Y3NMVGd1TURZeE9EUTVJRGt1TVRVME1qUXhMQzA0TGpBMk1UZzBPU0JzSURFdU5UUXhOVE14TERBZ01Dd3hMall5TnpFeE9TQmpJREFzTVM0eU16Y3hNalVnTFRBdU1Ea3pPREVzTVM0Mk1qY3hNVGdnTFRBdU16a3hOREF5TERFdU5qSTNNVEU0SUMwd0xqSXhOVEkzTVN3d0lDMHdMalU0TVRNM015d3dMakkzTVRJeU1TQXRNQzQ0TVRNMU5Ua3NNQzQyTURJM01UUWdMVEF1TXpRMU9EZzVMREF1TkRrek9ESTJJQzB3TGpReU1qRTFOeXd4TGpVeU56VXlOQ0F0TUM0ME1qSXhOVGNzTlM0M01qRTNNRFlnYkNBd0xEVXVNVEU0T1RreUlEQXVPREV6TlRVNUxEQXVOelU1T1RjNElHTWdNQzQyTnpVNE5EWXNNQzQyTXpFek16VWdNQzQ0TVRNMU5Ua3NNQzQ1TnpFd09ETWdNQzQ0TVRNMU5Ua3NNaTR3TURjeE1EZ2dNQ3d3TGpnek5Ua3lNU0F0TUM0eE1URTNOekVzTVM0eU16VXpOemdnTFRBdU16TTRPVGd6TERFdU1qRXhORGc1SUMwd0xqRTROalEwTEMwd0xqQXhPVFlnTFRFdU1UZ3pNellzTFRBdU1UTXpOVFV4SUMweUxqSXhOVE0zTml3dE1DNHlOVE15TWlCc0lEQXNNQ0I2SWdvZ0lDQnBaRDBpY0dGMGFETTNOemdpQ2lBZ0lHbHVhM05qWVhCbE9tTnZibTVsWTNSdmNpMWpkWEoyWVhSMWNtVTlJakFpSUM4K1BIQmhkR2dLSUNBZ2MzUjViR1U5SW1acGJHdzZJMlptWkRnd01EdHpkSEp2YTJVNkkyWm1aRGd3TUR0emRISnZhMlV0ZDJsa2RHZzZNQzR6TXpnM01EazJOU0lLSUNBZ1pEMGliU0F6TVM0ek5UWXlORE1zTXpVdU9EQTVNalkwSUdNZ0xUQXVNVFkwTXpFMExDMHdMakV3TXpnMU5pQXRNQzR5T1RnM05UTXNMVEl1TWpFMU5qZ3lJQzB3TGpJNU9EYzFNeXd0TkM0Mk9USTVORFVnTUN3dE15NDVOVFl3TWpZZ01DNHdPRFkwTkN3dE5DNDFNalV3T0NBd0xqY3hNREk1Tml3dE5DNDJOell6T1RVZ01DNHpPVEEyTmpNc0xUQXVNRGswTnpVZ01DNDROelEzTkN3dE1DNHdOamd6TkNBeExqQTNOVGN5T1N3d0xqQTFPRGNnTUM0eU1EQTVPVEVzTUM0eE1qY3dNemdnTUM0ek1USTNNVGtzTWk0eU9EQXpOaUF3TGpJME9ESTRPQ3cwTGpjNE5URTFPU0F0TUM0d09Ua3lOeXd6TGpnMU9URXlNaUF0TUM0eU1UYzROVE1zTkM0MU5qWTBNREVnTFRBdU56YzJPVGMzTERRdU5qTTBNalEzSUMwd0xqTTJNamt3T1N3d0xqQTBOREEwSUMwd0xqYzVOREkzTEMwd0xqQXdORGtnTFRBdU9UVTROVGd6TEMwd0xqRXdPRGMyTlNCc0lEQXNNQ0I2SWdvZ0lDQnBaRDBpY0dGMGFETTNOekFpQ2lBZ0lHbHVhM05qWVhCbE9tTnZibTVsWTNSdmNpMWpkWEoyWVhSMWNtVTlJakFpSUM4K1BDOW5QZ284TDNOMlp6ND1cIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctd29yZFwiPue8qeaUvjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGlkPVwiY29udHJvbFwiPjwvZGl2PlxyXG48L2Rpdj4iXX0=