UNPKG

ftable

Version:
852 lines (835 loc) 225 kB
import { debounceTime } from 'rxjs/operators'; import { CommonModule } from '@angular/common'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { firstBy } from 'thenby'; import { Subject, empty, of } from 'rxjs'; import { EventEmitter, Output, Input, Component, ViewChild, Directive, ViewContainerRef, ComponentFactoryResolver, ViewChildren, Injectable, NgModule } from '@angular/core'; import { HttpClient } from '@angular/common/http'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FFilterBase { constructor() { this.filter = new EventEmitter(); } /** * @return {?} */ reset() { } } FFilterBase.propDecorators = { source: [{ type: Input }], otherData: [{ type: Input }], columnName: [{ type: Input }], filter: [{ type: Output }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ // import { initDomAdapter } from '@angular/platyform-browser/src/browser'; class CheckBoxFFilterComponent { constructor() { this.filter = new EventEmitter(); this.values = []; } /** * @return {?} */ ngOnInit() { this.initData(); } /** * @private * @return {?} */ initData() { this.values = this.otherData.map(x => { /** @type {?} */ const result = {}; result['value'] = x; result['checked'] = true; return result; }); } /** * @param {?} index * @param {?} value * @param {?} event * @return {?} */ checkBoxClicked(index, value, event) { if (this.source === 'frontend') { /** @type {?} */ const fn = function (name, values) { return d => { if (values.length > 0) { return ((/** @type {?} */ (d))).filter(x => { /** @type {?} */ const i = values.map(e => e.value).indexOf(String(x[name])); return i !== -1 && values[i].checked === true; }); } else { return ((/** @type {?} */ (d))); } }; }; this.filter.emit({ columnName: this.columnName, apply: fn(this.columnName, this.values) }); } else { this.values[index].checked = !this.values[index].checked; /** @type {?} */ var filtered = this.values.filter(x => x.checked === true).map(a => a.value); /** @type {?} */ var result = { values: filtered }; this.filter.emit({ columnName: this.columnName, type: 'checkbox', apply: result }); } } /** * @return {?} */ reset() { this.initData(); this.filter.emit({ columnName: this.columnName, apply: null }); } } CheckBoxFFilterComponent.decorators = [ { type: Component, args: [{ template: ` <table class='ft-ffilter-table'> <tr class='ft-ffilter-column' *ngFor="let value of otherData;let index = index"> <td class='ft-ffilter-row'> <span><input class="ft-c" type="checkbox"[name]="columnName" (click)='checkBoxClicked(index, value ,$event)' value="value" [(ngModel)]='values[index].checked'> {{ value }}</span> </td> </tr> </table> <!-- <div class='ft-ffilter ft-c-filter' *ngFor="let value of otherData;let index = index"> <input class='ft-c' type="checkbox" [name]="columnName" (click)='checkBoxClicked(index, value ,$event)' value="value" [(ngModel)]='values[index].checked'> {{ value }}<br> </div> --> ` }] } ]; /** @nocollapse */ CheckBoxFFilterComponent.ctorParameters = () => []; CheckBoxFFilterComponent.propDecorators = { source: [{ type: Input }], otherData: [{ type: Input }], columnName: [{ type: Input }], filter: [{ type: Output }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class DateFFilterComponent { constructor() { this.filter = new EventEmitter(); this.minDay = ''; this.minMonth = ''; this.minYear = ''; this.maxDay = ''; this.maxMonth = ''; this.maxYear = ''; } /** * @param {?} mode * @param {?} max * @param {?} event * @return {?} */ onKeyUp(mode, max, event) { // Ignore if Delete or Backspace if (event.keyCode !== 8 && event.keyCode !== 46) { // filter letters and Trim this[mode] = this[mode].match(/[0-9]*/).join('').substring(0, max); // Move focus for UX if (mode === 'minDay' && (this[mode].length === 2 || event.keyCode === 39)) { this._elMinMonthRef.nativeElement.focus(); } else if (mode === 'minMonth' && (this[mode].length === 2 || event.keyCode === 39)) { this._elMinYearRef.nativeElement.focus(); } else if (mode === 'minYear' && (this[mode].length === 4 || event.keyCode === 39)) { this._elMaxDayRef.nativeElement.focus(); } else if (mode === 'maxDay' && (this[mode].length === 2 || event.keyCode === 39)) { this._elMaxMonthRef.nativeElement.focus(); } else if (mode === 'maxMonth' && (this[mode].length === 2 || event.keyCode === 39)) { this._elMaxYearRef.nativeElement.focus(); } else if (mode === 'maxYear' && (this[mode].length === 4 || event.keyCode === 39)) { this._elMinDayRef.nativeElement.focus(); } } if (this.source === 'frontend') { /** @type {?} */ const fn = function (name, minDay, minMonth, minYear, maxDay, maxMonth, maxYear) { return d => { return ((/** @type {?} */ (d))).filter(x => { console.log(name, minDay, minMonth, minYear, maxDay, maxMonth, maxYear); /** @type {?} */ const date = new Date(x[name]); return (minDay.length > 0 ? Number(minDay) <= date.getDate() : true) && (minMonth.length > 0 ? Number(minMonth) <= date.getMonth() + 1 : true) && (minYear.length > 0 ? Number(minYear) <= date.getFullYear() : true) && (maxDay.length > 0 ? Number(maxDay) >= date.getDate() : true) && (maxMonth.length > 0 ? Number(maxMonth) >= date.getMonth() + 1 : true) && (maxYear.length > 0 ? Number(maxYear) >= date.getFullYear() : true); }); }; }; this.filter.emit({ columnName: this.columnName, type: 'date', apply: fn(this.columnName, this.minDay, this.minMonth, this.minYear, this.maxDay, this.maxMonth, this.maxYear) }); } else { /** @type {?} */ var result = { minDay: this.minDay, minMonth: this.minMonth, minYear: this.minYear, maxDay: this.maxDay, maxMonth: this.maxMonth, maxYear: this.maxYear }; this.filter.emit({ columnName: this.columnName, type: 'date', apply: result }); } } /** * @return {?} */ reset() { this.minDay = ''; this.minMonth = ''; this.minYear = ''; this.maxDay = ''; this.maxMonth = ''; this.maxYear = ''; this.filter.emit({ columnName: this.columnName, apply: null }); } } DateFFilterComponent.decorators = [ { type: Component, args: [{ template: ` <table class='ft-ffilter-table ft-ffilter-date-table'> <tr class='ft-ffilter-column'> <td class='ft-ffilter-row ft-ffilter-dd-row'> <input class="ft-i ft-i-ffilter ft-i-ffilter-day" type='text' placeholder='dd' [(ngModel)]='minDay' (keyup)='onKeyUp("minDay", 2, $event)' #minDayRef /> </td> <td class='ft-ffilter-row ft-ffilter-mm-row'> <input class="ft-i ft-i-ffilter ft-i-ffilter-month" type='text' placeholder='mm' [(ngModel)]='minMonth' (keyup)='onKeyUp("minMonth", 2, $event)' #minMonthRef /> </td> <td class='ft-ffilter-row ft-ffilter-yyyy-row'> <input class="ft-i ft-i-ffilter ft-i-ffilter-year" type='text' placeholder='yyyy' [(ngModel)]='minYear' (keyup)='onKeyUp("minYear", 4, $event)' #minYearRef /> </td> </tr> <tr class='ft-ffilter-column'> <td class='ft-ffilter-row ft-ffilter-dd-row'> <input class="ft-i ft-i-ffilter ft-i-ffilter-day" type='text' placeholder='dd' [(ngModel)]='maxDay' (keyup)='onKeyUp("maxDay" , 2, $event)' #maxDayRef /> </td> <td class='ft-ffilter-row ft-ffilter-mm-row'> <input class="ft-i ft-i-ffilter ft-i-ffilter-month" type='text' placeholder='mm' [(ngModel)]='maxMonth' (keyup)='onKeyUp("maxMonth", 2, $event)' #maxMonthRef /> </td> <td class='ft-ffilter-row ft-ffilter-yyyy-row'> <input class="ft-i ft-i-ffilter ft-i-ffilter-year" type='text' placeholder='yyyy' [(ngModel)]='maxYear' (keyup)='onKeyUp("maxYear", 4, $event)' #maxYearRef /> </td> </tr> </table> <!-- <div class='ft-ffilter'> <div class="ft-filter-date ft-div1-ffilter"> <input class="ft-i ft-i-filter ft-i-filter-day" type='text' placeholder='dd' [(ngModel)]='minDay' (keyup)='onKeyUp("minDay", 2, $event)' #minDayRef /> <input class="ft-i ft-i-filter ft-i-filter-month" type='text' placeholder='mm' [(ngModel)]='minMonth' (keyup)='onKeyUp("minMonth", 2, $event)' #minMonthRef /> <input class="ft-i ft-i-filter ft-i-filter-year" type='text' placeholder='yyyy' [(ngModel)]='minYear' (keyup)='onKeyUp("minYear", 4, $event)' #minYearRef /> </div> <div class="ft-filter-date ft-div2-ffilter"> <input class="ft-i ft-i-filter ft-i-filter-day" type='text' placeholder='dd' [(ngModel)]='maxDay' (keyup)='onKeyUp("maxDay" , 2, $event)' #maxDayRef /> <input class="ft-i ft-i-filter ft-i-filter-month" type='text' placeholder='mm' [(ngModel)]='maxMonth' (keyup)='onKeyUp("maxMonth", 2, $event)' #maxMonthRef /> <input class="ft-i ft-i-filter ft-i-filter-year" type='text' placeholder='yyyy' [(ngModel)]='maxYear' (keyup)='onKeyUp("maxYear", 4, $event)' #maxYearRef /> </div> </div> --> `, styles: [` :host { flex:1; }`] }] } ]; DateFFilterComponent.propDecorators = { _elMinDayRef: [{ type: ViewChild, args: ["minDayRef",] }], _elMinMonthRef: [{ type: ViewChild, args: ["minMonthRef",] }], _elMinYearRef: [{ type: ViewChild, args: ["minYearRef",] }], _elMaxDayRef: [{ type: ViewChild, args: ["maxDayRef",] }], _elMaxMonthRef: [{ type: ViewChild, args: ["maxMonthRef",] }], _elMaxYearRef: [{ type: ViewChild, args: ["maxYearRef",] }], source: [{ type: Input }], otherData: [{ type: Input }], columnName: [{ type: Input }], filter: [{ type: Output }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class EmptyFFilterComponent { constructor() { this.filter = new EventEmitter(); } /** * @return {?} */ reset() { } } EmptyFFilterComponent.decorators = [ { type: Component, args: [{ template: ` ` }] } ]; EmptyFFilterComponent.propDecorators = { source: [{ type: Input }], otherData: [{ type: Input }], columnName: [{ type: Input }], filter: [{ type: Output }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class NumberFFilterComponent { constructor() { this.filter = new EventEmitter(); // Hold Inputted Values this.min = null; this.max = null; } /** * @param {?} mode * @param {?} event * @return {?} */ numberKeyUp(mode, event) { if (event.keyCode !== 8 && event.keyCode !== 46) { this[mode] = event.target.value; // Move focus for UX if (mode === 'min' && event.keyCode === 39) { this._elMaxRef.nativeElement.focus(); } else if (mode === 'max' && event.keyCode === 39) { this._elMinRef.nativeElement.focus(); } } if (this.source === 'frontend') { /** @type {?} */ const fn = function (name, searchMin, searchMax) { return d => { return ((/** @type {?} */ (d))).filter(x => (searchMin ? searchMin <= Number(x[name]) : true) && (searchMax ? searchMax >= Number(x[name]) : true)); }; }; this.filter.emit({ columnName: this.columnName, apply: fn(this.columnName, this.min, this.max) }); } else { /** @type {?} */ var result = { min: this.min, max: this.max }; this.filter.emit({ columnName: this.columnName, type: 'number', apply: result }); } } /** * @return {?} */ reset() { this.min = null; this.max = null; this.filter.emit({ columnName: this.columnName, apply: null }); } } NumberFFilterComponent.decorators = [ { type: Component, args: [{ template: ` <table class='ft-ffilter-table'> <tr class='ft-ffilter-column'> <td class='ft-ffilter-row'> <input class="ft-i ft-i-ffilter ft-i-min" type="number" placeholder='>=' [(ngModel)]='min' (keyup)='numberKeyUp("min",$event)' #minRef > </td> </tr> <tr class='ft-ffilter-column'> <td class='ft-ffilter-row'> <input class="ft-i ft-i-ffilter ft-i-max" type="number" placeholder='<=' [(ngModel)]='max' (keyup)='numberKeyUp("max",$event)' #maxRef > </td> </tr> </table> <!-- <div class="ft-ffilter"> <div class="ft-div1-ffilter"> <div class="ft-ffilter-prepend"> <span class="ft-ffilter-text">&gt;=</span> </div> <input class="ft-i ft-i-ffilter ft-i-min" type="number" [(ngModel)]='min' (keyup)='numberKeyUp("min",$event)' #minRef > <div class="ft-ffilter-append"> <span class="ft-ffilter-text">&lt;=</span> </div> </div> <div class="ft-div2-ffilter"> <div class="ft-ffilter-prepend"> <span class="ft-filter-text">&lt;=</span> </div> <input class="ft-i ft-i-filter ft-i-max" type="number" [(ngModel)]='max' (keyup)='numberKeyUp("max",$event)' #maxRef > <div class="ft-ffilter-append"> <span class="ft-filter-text">&gt;=</span> </div> </div> </div> --> `, styles: [` :host { flex:1; }`] }] } ]; NumberFFilterComponent.propDecorators = { _elMinRef: [{ type: ViewChild, args: ["minRef",] }], _elMaxRef: [{ type: ViewChild, args: ["maxRef",] }], source: [{ type: Input }], otherData: [{ type: Input }], columnName: [{ type: Input }], filter: [{ type: Output }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class TextFFilterComponent { constructor() { this.filter = new EventEmitter(); this.value = ''; } /** * @param {?} event * @return {?} */ onKeyUp(event) { if (this.source === 'frontend') { /** @type {?} */ const fn = function (name, searchValue) { return d => { return ((/** @type {?} */ (d))).filter(x => String(x[name]).toLowerCase().indexOf(String(searchValue).toLowerCase()) !== -1); }; }; this.filter.emit({ columnName: this.columnName, apply: fn(this.columnName, event.target.value) }); } else { /** @type {?} */ var result = { value: event.target.value }; this.filter.emit({ columnName: this.columnName, type: 'string', apply: result }); } } /** * @return {?} */ reset() { this.value = ''; this.filter.emit({ columnName: this.columnName, apply: null }); } } TextFFilterComponent.decorators = [ { type: Component, args: [{ template: ` <table class='ft-ffilter-table'> <tr class='ft-ffilter-column'> <td class='ft-ffilter-row'> <input class="ft-i ft-i-ffilter ft-i-ffilter-text" type='text' [(ngModel)]='value' (keyup)='onKeyUp($event)'/> </td> </tr> </table> <!-- <div class="ft-ffilter"> <div class="ft-div1-ffilter"> <input class="ft-i ft-i-ffilter ft-i-ffilter-text" type='text' [(ngModel)]='value' (keyup)='onKeyUp($event)'/> </div> </div> --> `, styles: [` :host { flex:1; }`] }] } ]; TextFFilterComponent.propDecorators = { source: [{ type: Input }], otherData: [{ type: Input }], columnName: [{ type: Input }], filter: [{ type: Output }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FFilterDirective { /** * @param {?} viewContainerRef */ constructor(viewContainerRef) { this.viewContainerRef = viewContainerRef; } } FFilterDirective.decorators = [ { type: Directive, args: [{ selector: '[ffilter-host]', },] } ]; /** @nocollapse */ FFilterDirective.ctorParameters = () => [ { type: ViewContainerRef } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FFilterComponent { /** * @param {?} componentFactoryResolver */ constructor(componentFactoryResolver) { this.componentFactoryResolver = componentFactoryResolver; this.debounce = 500; // Other data needed to be passed to filter this.filter = new EventEmitter(); } /** * @return {?} */ ngOnInit() { this.loadComponent(); } /** * @return {?} */ ngOnDestroy() { // clearInterval(this.interval); } /** * @return {?} */ loadComponent() { // filter counter // Check if standard filters else load custom /** @type {?} */ let fftilter; if (this.filterType === 'string') { fftilter = TextFFilterComponent; } else if (this.filterType === 'number') { fftilter = NumberFFilterComponent; } else if (this.filterType === 'checkbox') { fftilter = CheckBoxFFilterComponent; } else if (this.filterType === 'date') { fftilter = DateFFilterComponent; } else if (typeof this.filterType !== 'string') { fftilter = this.filterType; } else { // No filter Filter fftilter = EmptyFFilterComponent; } /** @type {?} */ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(fftilter); // get reference of insertion point through /** @type {?} */ const viewContainerRef = this.ffilterHost.viewContainerRef; viewContainerRef.clear(); // Create instance of component /** @type {?} */ const componentRef = viewContainerRef.createComponent(componentFactory); // Pass data to filters ((/** @type {?} */ (componentRef.instance))).columnName = this.columnName; ((/** @type {?} */ (componentRef.instance))).source = this.source; ((/** @type {?} */ (componentRef.instance))).otherData = this.otherData; // Bubble filter event ((/** @type {?} */ (componentRef.instance))).filter.pipe(debounceTime(this.debounce)).subscribe((event) => { this.filter.emit(event); }); this.filterr = ((/** @type {?} */ (componentRef.instance))); } /** * @return {?} */ reset() { this.filterr.reset(); } } FFilterComponent.totalfilters = 0; FFilterComponent.decorators = [ { type: Component, args: [{ selector: 'ft-ffilter', template: ` <ng-template ffilter-host></ng-template> ` }] } ]; /** @nocollapse */ FFilterComponent.ctorParameters = () => [ { type: ComponentFactoryResolver } ]; FFilterComponent.propDecorators = { ffilterHost: [{ type: ViewChild, args: [FFilterDirective,] }], source: [{ type: Input }], columnName: [{ type: Input }], debounce: [{ type: Input }], filterType: [{ type: Input }], otherData: [{ type: Input }], filter: [{ type: Output }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FExporterComponent { /** * @return {?} */ generateFileName() { /** @type {?} */ let d = new Date(); return d.getFullYear() + d.getMonth() + d.getDate() + '_' + (d.getHours() + 1) + d.getMinutes() + d.getSeconds(); } /** * @return {?} */ CSV() { /** @type {?} */ let filename = this.generateFileName() + ".csv"; /** @type {?} */ let properties = []; // console.log(this.data); /** @type {?} */ let text = ""; this.data.forEach(function (items) { for (var property in items) { if (items.hasOwnProperty(property)) { if (properties.indexOf(property) <= -1) properties.push(property); //console.log(property + " " + items[property]); text += items[property] + ","; } } text = text.slice(0, -1) + '\r\n'; }); text = properties.map(function (x) { return x.substr(0, 1).toUpperCase() + x.substr(1); }).join() + '\r\n' + text; /** @type {?} */ var blob = new Blob([text], { type: 'text/csv' }); if (window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveBlob(blob, filename); } else { /** @type {?} */ var elem = window.document.createElement('a'); elem.href = window.URL.createObjectURL(blob); elem.download = filename; document.body.appendChild(elem); elem.click(); document.body.removeChild(elem); } } /** * @return {?} */ COPY() { /** @type {?} */ var input = document.createElement("textarea"); /** @type {?} */ let properties = []; /** @type {?} */ var str = ""; this.data.forEach(function (items) { /** @type {?} */ var row = []; for (var property in items) { if (items.hasOwnProperty(property)) { if (properties.indexOf(property) <= -1) properties.push(property); row.push(items[property]); } } str += properties.map(function (x) { return x.substr(0, 1).toUpperCase() + x.substr(1); }).join() + '\r\n' + row.join(',') + '\r\n'; }); try { input.value = str; input.setAttribute('id', "t1"); document.body.appendChild(input); /** @type {?} */ var input1 = ((/** @type {?} */ (document.getElementById("t1")))); input1.focus(); input1.select(); document.execCommand("copy", false, null); } catch (err) { console.log('Oops, unable to copy'); } document.body.removeChild(input); } /** * @return {?} */ PRINT() { /** @type {?} */ let properties = []; /** @type {?} */ var doc = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null); /** @type {?} */ var body = document.createElementNS('http://www.w3.org/1999/xhtml', 'body'); doc.documentElement.appendChild(body); /** @type {?} */ var table = document.createElement("table"); body.appendChild(table); /** @type {?} */ var tbody = document.createElement("tbody"); table.appendChild(tbody); this.data.forEach(function (items) { /** @type {?} */ var row = document.createElement("tr"); for (var property in items) { if (items.hasOwnProperty(property)) { // items.forEach(function (item) { /** @type {?} */ var cell = document.createElement("td"); if (properties.indexOf(property) <= -1) { properties.push(property); cell.textContent = property.substr(0, 1).toUpperCase() + property.substr(1); } else { cell.textContent = items[property]; } row.appendChild(cell); } } tbody.appendChild(row); }); /** @type {?} */ var pw = window.open("about:blank", "_new"); pw.document.open(); pw.document.write(new XMLSerializer().serializeToString(doc)); pw.print(); pw.close(); } /** * @return {?} */ JSON() { /** @type {?} */ let filename = this.generateFileName() + ".json"; /** @type {?} */ var blob = new Blob([JSON.stringify(this.data)], { type: 'text/json' }); if (window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveBlob(blob, filename); } else { /** @type {?} */ var elem = window.document.createElement('a'); elem.href = window.URL.createObjectURL(blob); elem.download = filename; document.body.appendChild(elem); elem.click(); document.body.removeChild(elem); } } // XLSX /* Make the table for a fast CRC. */ /** * @return {?} */ make_crc_table() { /** @type {?} */ var crc_table = []; /** @type {?} */ var c; /** @type {?} */ var n; /** @type {?} */ var k; for (n = 0; n < 256; n++) { c = n; for (k = 0; k < 8; k++) { if ((c & 1) > 0) { c = (0xEDB88320 ^ (c >>> 1)) >>> 0; } else { c = (c >>> 1) >>> 0; } } crc_table[n] = c; } return crc_table; } /** * @param {?} buf * @return {?} */ crc32(buf) { /** @type {?} */ var crc_table = this.make_crc_table(); /** @type {?} */ var crc = 0x00; /** @type {?} */ var c = (crc ^ 0xFFFFFFFF); /** @type {?} */ var n; for (n = 0; n < buf.length; n++) { c = (crc_table[((c ^ (buf[n].charCodeAt(0))) & 0xFF)] ^ (c >>> 8)); } return (c ^ 0xFFFFFFFF) >>> 0; } /** * @param {?} n * @return {?} */ numberToExcelLetters(n) { /** @type {?} */ var quotient = Math.floor(n / 26); /** @type {?} */ var remainder = n % 26; /** @type {?} */ var result = ''; if (quotient > 0) result += this.numberToExcelLetters(quotient); if (remainder > 0) result += String.fromCharCode(64 + remainder); return result; } //var content = '\x3C\x3F\x78\x6D\x6C\x20\x76\x65\x72\x73\x69\x6F\x6E\x3D\x22\x31\x2E\x30\x22\x20\x65\x6E\x63\x6F\x64\x69\x6E\x67\x3D\x22\x55\x54\x46\x2D\x38\x22\x20\x73\x74\x61\x6E\x64\x61\x6C\x6F\x6E\x65\x3D\x22\x79\x65\x73\x22\x3F\x3E\x0D\x0A\x3C\x73\x73\x74\x20\x78\x6D\x6C\x6E\x73\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x73\x63\x68\x65\x6D\x61\x73\x2E\x6F\x70\x65\x6E\x78\x6D\x6C\x66\x6F\x72\x6D\x61\x74\x73\x2E\x6F\x72\x67\x2F\x73\x70\x72\x65\x61\x64\x73\x68\x65\x65\x74\x6D\x6C\x2F\x32\x30\x30\x36\x2F\x6D\x61\x69\x6E\x22\x20\x63\x6F\x75\x6E\x74\x3D\x22\x31\x30\x30\x22\x20\x75\x6E\x69\x71\x75\x65\x43\x6F\x75\x6E\x74\x3D\x22\x31\x30\x30\x22\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x2F\x73\x73\x74\x3E'; //var crc = 0x00; //console.log(crc32(crc, content).toString(16)); /** * @param {?} uniques * @return {?} */ generateSharedStringsLFH(uniques) { //return '\x50\x4B\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00\x21\x00\x74\xC7\x86\x57\x5D\x01\x00\x00\xE3\x07\x00\x00\x14\x00\x00\x00\x78\x6C\x2F\x73\x68\x61\x72\x65\x64\x53\x74\x72\x69\x6E\x67\x73\x2E\x78\x6D\x6C\x6D\xD3\x41\x4E\xE3\x40\x10\x46\xE1\xFD\x48\x73\x07\xCB\xFB\xC1\x4E\x66\x86\x61\x90\x63\xD4\x54\x15\x27\x80\x03\x58\x49\x43\x2C\xC5\xED\x90\xEE\x20\xB8\x3D\x46\x42\xAA\xC5\xCB\xC6\x52\x7F\x56\xBF\x5E\xFD\xDD\xDD\xFB\x74\xA8\xDE\xE2\x29\x8F\x73\xDA\xD4\xAB\xAB\xB6\xAE\x62\xDA\xCE\xBB\x31\xBD\x6C\xEA\xA7\xC7\x87\x5F\x37\x75\x95\xCB\x90\x76\xC3\x61\x4E\x71\x53\x7F\xC4\x5C\xDF\xF5\x3F\x7F\x74\x39\x97\x6A\xB9\x9B\xF2\xA6\xDE\x97\x72\xBC\x6D\x9A\xBC\xDD\xC7\x69\xC8\x57\xF3\x31\xA6\xE5\xCF\xF3\x7C\x9A\x86\xB2\x1C\x4F\x2F\x4D\x3E\x9E\xE2\xB0\xCB\xFB\x18\xCB\x74\x68\xD6\x6D\x7B\xDD\x4C\xC3\x98\xEA\x6A\x3B\x9F\x53\x59\xDE\x6D\x97\x77\xCF\x69\x7C\x3D\x47\x71\xE9\xBB\x3C\xF6\x5D\xE9\xC3\xAA\x6B\x4A\xDF\x35\xCB\xE9\x5B\xEE\x21\x02\x51\x88\x41\xC2\x1A\x65\x88\x40\x14\x62\x90\xF0\x1B\x65\x88\x40\x14\x62\x90\xF0\x07\x65\x88\x40\x14\x62\x90\xF0\x17\x65\x88\x40\x14\x62\x90\x70\x8D\x32\x44\x20\x0A\x31\x48\xF8\x87\x32\x44\x20\x0A\x31\x48\xB8\x41\x19\x22\x10\x85\x18\x24\xFC\x47\x19\x22\x10\x85\x18\x24\xAC\x5A\xA4\x49\x42\x52\x92\x39\x79\xFE\xC2\x12\x2F\x4C\xF1\xC2\x16\x2F\x8C\x71\xC5\x3C\xE7\x48\x12\x92\x92\xCC\xC9\xF3\xDC\x24\x49\x48\x4A\x32\x27\xCF\x73\x98\x24\x21\x29\xC9\x9C\x3C\xCF\x75\x92\x84\xA4\x24\x73\xF2\x3C\x27\x4A\x12\x92\x92\xCC\xC9\xF3\xDC\x29\x49\x48\x4A\x32\x27\xCF\x73\xAC\x24\x21\x29\xC9\x9C\x3C\xCF\xC5\x92\x84\xA4\x24\x23\x85\x35\x57\x4B\x12\x92\x92\xCC\xE9\xEB\x93\x4B\xFF\x09'; //return '\x50\x4B\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00\x21\x00\x74\xC7\x86\x57\x5D\x01\x00\x00\xE3\x07\x00\x00\x14\x00\x00\x00\x78\x6C\x2F\x73\x68\x61\x72\x65\x64\x53\x74\x72\x69\x6E\x67\x73\x2E\x78\x6D\x6C\x6D\xD3\x41\x4E\xE3\x40\x10\x46\xE1\xFD\x48\x73\x07\xCB\xFB\xC1\x4E\x66\x86\x61\x90\x63\xD4\x54\x15\x27\x80\x03\x58\x49\x43\x2C\xC5\xED\x90\xEE\x20\xB8\x3D\x46\x42\xAA\xC5\xCB\xC6\x52\x7F\x56\xBF\x5E\xFD\xDD\xDD\xFB\x74\xA8\xDE\xE2\x29\x8F\x73\xDA\xD4\xAB\xAB\xB6\xAE\x62\xDA\xCE\xBB\x31\xBD\x6C\xEA\xA7\xC7\x87\x5F\x37\x75\x95\xCB\x90\x76\xC3\x61\x4E\x71\x53\x7F\xC4\x5C\xDF\xF5\x3F\x7F\x74\x39\x97\x6A\xB9\x9B\xF2\xA6\xDE\x97\x72\xBC\x6D\x9A\xBC\xDD\xC7\x69\xC8\x57\xF3\x31\xA6\xE5\xCF\xF3\x7C\x9A\x86\xB2\x1C\x4F\x2F\x4D\x3E\x9E\xE2\xB0\xCB\xFB\x18\xCB\x74\x68\xD6\x6D\x7B\xDD\x4C\xC3\x98\xEA\x6A\x3B\x9F\x53\x59\xDE\x6D\x97\x77\xCF\x69\x7C\x3D\x47\x71\xE9\xBB\x3C\xF6\x5D\xE9\xC3\xAA\x6B\x4A\xDF\x35\xCB\xE9\x5B\xEE\x21\x02\x51\x88\x41\xC2\x1A\x65\x88\x40\x14\x62\x90\xF0\x1B\x65\x88\x40\x14\x62\x90\xF0\x07\x65\x88\x40\x14\x62\x90\xF0\x17\x65\x88\x40\x14\x62\x90\x70\x8D\x32\x44\x20\x0A\x31\x48\xF8\x87\x32\x44\x20\x0A\x31\x48\xB8\x41\x19\x22\x10\x85\x18\x24\xFC\x47\x19\x22\x10\x85\x18\x24\xAC\x5A\xA4\x49\x42\x52\x92\x39\x79\xFE\xC2\x12\x2F\x4C\xF1\xC2\x16\x2F\x8C\x71\xC5\x3C\xE7\x48\x12\x92\x92\xCC\xC9\xF3\xDC\x24\x49\x48\x4A\x32\x27\xCF\x73\x98\x24\x21\x29\xC9\x9C\x3C\xCF\x75\x92\x84\xA4\x24\x73\xF2\x3C\x27\x4A\x12\x92\x92\xCC\xC9\xF3\xDC\x29\x49\x48\x4A\x32\x27\xCF\x73\xAC\x24\x21\x29\xC9\x9C\x3C\xCF\xC5\x92\x84\xA4\x24\x23\x85\x35\x57\x4B\x12\x92\x92\xCC\xE9\xEB\x93\x4B\xFF\x09'; /** @type {?} */ var fileHeader = '\x50\x4B\x03\x04'; /** @type {?} */ var version = '\x14\x00'; /** @type {?} */ var flags = '\x00\x00'; /** @type {?} */ var modTime = '\x00\x00'; /** @type {?} */ var modDate = '\x21\x00'; /** @type {?} */ var fileNameLen = '\x14\x00'; /** @type {?} */ var extraFieldLen = '\x00\x00'; /** @type {?} */ var fileName = '\x78\x6C\x2F\x73\x68\x61\x72\x65\x64\x53\x74\x72\x69\x6E\x67\x73\x2E\x78\x6D\x6C'; /** @type {?} */ var extraField = ''; // Dynamically generated // var uncompressedContent = '\x3C\x3F\x78\x6D\x6C\x20\x76\x65\x72\x73\x69\x6F\x6E\x3D\x22\x31\x2E\x30\x22\x20\x65\x6E\x63\x6F\x64\x69\x6E\x67\x3D\x22\x55\x54\x46\x2D\x38\x22\x20\x73\x74\x61\x6E\x64\x61\x6C\x6F\x6E\x65\x3D\x22\x79\x65\x73\x22\x3F\x3E\x0D\x0A\x3C\x73\x73\x74\x20\x78\x6D\x6C\x6E\x73\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x73\x63\x68\x65\x6D\x61\x73\x2E\x6F\x70\x65\x6E\x78\x6D\x6C\x66\x6F\x72\x6D\x61\x74\x73\x2E\x6F\x72\x67\x2F\x73\x70\x72\x65\x61\x64\x73\x68\x65\x65\x74\x6D\x6C\x2F\x32\x30\x30\x36\x2F\x6D\x61\x69\x6E\x22\x20\x63\x6F\x75\x6E\x74\x3D\x22\x31\x30\x30\x22\x20\x75\x6E\x69\x71\x75\x65\x43\x6F\x75\x6E\x74\x3D\x22\x31\x30\x30\x22\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x31\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x32\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x33\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x34\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x35\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x36\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x37\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x38\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x31\x39\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x41\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x42\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x43\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x44\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x73\x69\x3E\x3C\x74\x3E\x45\x32\x30\x3C\x2F\x74\x3E\x3C\x2F\x73\x69\x3E\x3C\x2F\x73\x73\x74\x3E'; /** @type {?} */ var generatedString = ''; /** @type {?} */ var i = 0; for (i = 0; i < uniques.length; i++) { generatedString += '\x3c\x73\x69\x3e\x3c\x74\x3e' + uniques[i] + '\x3c\x2f\x74\x3e\x3c\x2f\x73\x69\x3e'; } /** @type {?} */ var uncompressedContent = '\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\x2d\x38\x22\x3f\x3e\x3c\x73\x73\x74\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x6f\x70\x65\x6e\x78\x6d\x6c\x66\x6f\x72\x6d\x61\x74\x73\x2e\x6f\x72\x67\x2f\x73\x70\x