UNPKG

metronome-contracts

Version:
1 lines 1.53 MB
!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports["metronome-contracts"]=n():e["metronome-contracts"]=n()}(window,function(){return function(e){var n={};function t(a){if(n[a])return n[a].exports;var s=n[a]={i:a,l:!1,exports:{}};return e[a].call(s.exports,s,s.exports,t),s.l=!0,s.exports}return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:a})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(t.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var s in e)t.d(a,s,function(n){return e[n]}.bind(null,s));return a},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/dist/",t(t.s=17)}([function(module,exports,__webpack_require__){"use strict";eval("\n\nvar bind = __webpack_require__(12);\nvar isBuffer = __webpack_require__(34);\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (typeof result[key] === 'object' && typeof val === 'object') {\n      result[key] = merge(result[key], val);\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcz9jNTMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLFdBQVcsbUJBQU8sQ0FBQyxFQUFnQjtBQUNuQyxlQUFlLG1CQUFPLENBQUMsRUFBVzs7QUFFbEM7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsU0FBUyxHQUFHLFNBQVM7QUFDNUMsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsdUNBQXVDLE9BQU87QUFDOUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcbnZhciBpc0J1ZmZlciA9IHJlcXVpcmUoJ2lzLWJ1ZmZlcicpO1xuXG4vKmdsb2JhbCB0b1N0cmluZzp0cnVlKi9cblxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcblxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gRm9ybURhdGEsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Zvcm1EYXRhKHZhbCkge1xuICByZXR1cm4gKHR5cGVvZiBGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCcpICYmICh2YWwgaW5zdGFuY2VvZiBGb3JtRGF0YSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykgJiYgKEFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICByZXN1bHQgPSBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAodmFsKSAmJiAodmFsLmJ1ZmZlcikgJiYgKHZhbC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcik7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmluZ1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyaW5nLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIE51bWJlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgTnVtYmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOdW1iZXIodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIERhdGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0ZpbGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZpbGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJsb2IsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Jsb2IodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEJsb2JdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGdW5jdGlvbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmVhbSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyZWFtKHZhbCkge1xuICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC5waXBlKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VSTFNlYXJjaFBhcmFtcyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMgIT09ICd1bmRlZmluZWQnICYmIHZhbCBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcztcbn1cblxuLyoqXG4gKiBUcmltIGV4Y2VzcyB3aGl0ZXNwYWNlIG9mZiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBTdHJpbmcgdG8gdHJpbVxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFN0cmluZyBmcmVlZCBvZiBleGNlc3Mgd2hpdGVzcGFjZVxuICovXG5mdW5jdGlvbiB0cmltKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMqLywgJycpLnJlcGxhY2UoL1xccyokLywgJycpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudFxuICpcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXG4gKiBCb3RoIGVudmlyb25tZW50cyBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LCBidXQgbm90IGZ1bGx5IHN0YW5kYXJkIGdsb2JhbHMuXG4gKlxuICogd2ViIHdvcmtlcnM6XG4gKiAgdHlwZW9mIHdpbmRvdyAtPiB1bmRlZmluZWRcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXG4gKlxuICogcmVhY3QtbmF0aXZlOlxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcbiAqL1xuZnVuY3Rpb24gaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuICApO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbikge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0eXBlb2YgcmVzdWx0W2tleV0gPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3VsdGluZyB2YWx1ZSBvZiBvYmplY3QgYVxuICovXG5mdW5jdGlvbiBleHRlbmQoYSwgYiwgdGhpc0FyZykge1xuICBmb3JFYWNoKGIsIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKHRoaXNBcmcgJiYgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhW2tleV0gPSB2YWw7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0FycmF5OiBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gIGlzRm9ybURhdGE6IGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3OiBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICBpc051bWJlcjogaXNOdW1iZXIsXG4gIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc0RhdGU6IGlzRGF0ZSxcbiAgaXNGaWxlOiBpc0ZpbGUsXG4gIGlzQmxvYjogaXNCbG9iLFxuICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbTogaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zOiBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNTdGFuZGFyZEJyb3dzZXJFbnY6IGlzU3RhbmRhcmRCcm93c2VyRW52LFxuICBmb3JFYWNoOiBmb3JFYWNoLFxuICBtZXJnZTogbWVyZ2UsXG4gIGV4dGVuZDogZXh0ZW5kLFxuICB0cmltOiB0cmltXG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n")},function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n\n\nvar base64 = __webpack_require__(20)\nvar ieee754 = __webpack_require__(21)\nvar isArray = __webpack_require__(22)\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(2)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL25vZGUtbGlicy1icm93c2VyL25vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanM/MWMzNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFWTs7QUFFWixhQUFhLG1CQUFPLENBQUMsRUFBVztBQUNoQyxjQUFjLG1CQUFPLENBQUMsRUFBUztBQUMvQixjQUFjLG1CQUFPLENBQUMsRUFBUzs7QUFFL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixtREFBbUQ7QUFDeEU7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsdUNBQXVDLFNBQVM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpQkFBaUI7QUFDaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLGlCQUFpQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsU0FBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsRUFBRTtBQUNsRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsU0FBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSx3QkFBd0IsUUFBUTtBQUNoQztBQUNBLHFCQUFxQixlQUFlO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVEQUF1RCxPQUFPO0FBQzlEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1REFBdUQsT0FBTztBQUM5RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUJBQWlCO0FBQ2hDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZ0JBQWdCO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6IjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG4ndXNlIHN0cmljdCdcblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJ2Jhc2U2NC1qcycpXG52YXIgaWVlZTc1NCA9IHJlcXVpcmUoJ2llZWU3NTQnKVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpc2FycmF5JylcblxuZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXJcbmV4cG9ydHMuU2xvd0J1ZmZlciA9IFNsb3dCdWZmZXJcbmV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVMgPSA1MFxuXG4vKipcbiAqIElmIGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGA6XG4gKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KVxuICogICA9PT0gZmFsc2UgICBVc2UgT2JqZWN0IGltcGxlbWVudGF0aW9uIChtb3N0IGNvbXBhdGlibGUsIGV2ZW4gSUU2KVxuICpcbiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKyxcbiAqIE9wZXJhIDExLjYrLCBpT1MgNC4yKy5cbiAqXG4gKiBEdWUgdG8gdmFyaW91cyBicm93c2VyIGJ1Z3MsIHNvbWV0aW1lcyB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uIHdpbGwgYmUgdXNlZCBldmVuXG4gKiB3aGVuIHRoZSBicm93c2VyIHN1cHBvcnRzIHR5cGVkIGFycmF5cy5cbiAqXG4gKiBOb3RlOlxuICpcbiAqICAgLSBGaXJlZm94IDQtMjkgbGFja3Mgc3VwcG9ydCBmb3IgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzIHRvIGBVaW50OEFycmF5YCBpbnN0YW5jZXMsXG4gKiAgICAgU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzguXG4gKlxuICogICAtIENocm9tZSA5LTEwIGlzIG1pc3NpbmcgdGhlIGBUeXBlZEFycmF5LnByb3RvdHlwZS5zdWJhcnJheWAgZnVuY3Rpb24uXG4gKlxuICogICAtIElFMTAgaGFzIGEgYnJva2VuIGBUeXBlZEFycmF5LnByb3RvdHlwZS5zdWJhcnJheWAgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhcnJheXMgb2ZcbiAqICAgICBpbmNvcnJlY3QgbGVuZ3RoIGluIHNvbWUgc2l0dWF0aW9ucy5cblxuICogV2UgZGV0ZWN0IHRoZXNlIGJ1Z2d5IGJyb3dzZXJzIGFuZCBzZXQgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYCB0byBgZmFsc2VgIHNvIHRoZXlcbiAqIGdldCB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyBzbG93ZXIgYnV0IGJlaGF2ZXMgY29ycmVjdGx5LlxuICovXG5CdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCA9IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUICE9PSB1bmRlZmluZWRcbiAgPyBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVFxuICA6IHR5cGVkQXJyYXlTdXBwb3J0KClcblxuLypcbiAqIEV4cG9ydCBrTWF4TGVuZ3RoIGFmdGVyIHR5cGVkIGFycmF5IHN1cHBvcnQgaXMgZGV0ZXJtaW5lZC5cbiAqL1xuZXhwb3J0cy5rTWF4TGVuZ3RoID0ga01heExlbmd0aCgpXG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgICBhcnIuX19wcm90b19fID0ge19fcHJvdG9fXzogVWludDhBcnJheS5wcm90b3R5cGUsIGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfX1cbiAgICByZXR1cm4gYXJyLmZvbygpID09PSA0MiAmJiAvLyB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZFxuICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoa01heExlbmd0aCgpIDwgbGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJylcbiAgfVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICBpZiAodGhhdCA9PT0gbnVsbCkge1xuICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuICAgIH1cbiAgICB0aGF0Lmxlbmd0aCA9IGxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5mdW5jdGlvbiBCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgISh0aGlzIGluc3RhbmNlb2YgQnVmZmVyKSkge1xuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0lmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUodGhpcywgYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKHRoaXMsIGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyIC8vIG5vdCB1c2VkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb25cblxuLy8gVE9ETzogTGVnYWN5LCBub3QgbmVlZGVkIGFueW1vcmUuIFJlbW92ZSBpbiBuZXh0IG1ham9yIHZlcnNpb24uXG5CdWZmZXIuX2F1Z21lbnQgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGFyci5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gZnJvbSAodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cblxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIHJldHVybiBmcm9tT2JqZWN0KHRoYXQsIHZhbHVlKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKG51bGwsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbmlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICBCdWZmZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXkucHJvdG90eXBlXG4gIEJ1ZmZlci5fX3Byb3RvX18gPSBVaW50OEFycmF5XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuc3BlY2llcyAmJlxuICAgICAgQnVmZmVyW1N5bWJvbC5zcGVjaWVzXSA9PT0gQnVmZmVyKSB7XG4gICAgLy8gRml4IHN1YmFycmF5KCkgaW4gRVMyMDE2LiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvOTdcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLCBTeW1ib2wuc3BlY2llcywge1xuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJylcbiAgfVxufVxuXG5mdW5jdGlvbiBhbGxvYyAodGhhdCwgc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICBpZiAoc2l6ZSA8PSAwKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKVxuICB9XG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPbmx5IHBheSBhdHRlbnRpb24gdG8gZW5jb2RpbmcgaWYgaXQncyBhIHN0cmluZy4gVGhpc1xuICAgIC8vIHByZXZlbnRzIGFjY2lkZW50YWxseSBzZW5kaW5nIGluIGEgbnVtYmVyIHRoYXQgd291bGRcbiAgICAvLyBiZSBpbnRlcnByZXR0ZWQgYXMgYSBzdGFydCBvZmZzZXQuXG4gICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZydcbiAgICAgID8gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgICA6IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqIGFsbG9jKHNpemVbLCBmaWxsWywgZW5jb2RpbmddXSlcbiAqKi9cbkJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICByZXR1cm4gYWxsb2MobnVsbCwgc2l6ZSwgZmlsbCwgZW5jb2RpbmcpXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlICh0aGF0LCBzaXplKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplIDwgMCA/IDAgOiBjaGVja2VkKHNpemUpIHwgMClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7XG4gICAgICB0aGF0W2ldID0gMFxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gQnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKG51bGwsIHNpemUpXG59XG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gU2xvd0J1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICovXG5CdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKG51bGwsIHNpemUpXG59XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmcgKHRoYXQsIHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycgfHwgZW5jb2RpbmcgPT09ICcnKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJlbmNvZGluZ1wiIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKVxuICB9XG5cbiAgdmFyIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKVxuXG4gIHZhciBhY3R1YWwgPSB0aGF0LndyaXRlKHN0cmluZywgZW5jb2RpbmcpXG5cbiAgaWYgKGFjdHVhbCAhPT0gbGVuZ3RoKSB7XG4gICAgLy8gV3JpdGluZyBhIGhleCBzdHJpbmcsIGZvciBleGFtcGxlLCB0aGF0IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyB3aWxsXG4gICAgLy8gY2F1c2UgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgaW52YWxpZCBjaGFyYWN0ZXIgdG8gYmUgaWdub3JlZC4gKGUuZy5cbiAgICAvLyAnYWJ4eGNkJyB3aWxsIGJlIHRyZWF0ZWQgYXMgJ2FiJylcbiAgICB0aGF0ID0gdGhhdC5zbGljZSgwLCBhY3R1YWwpXG4gIH1cblxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlICh0aGF0LCBhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyICh0aGF0LCBhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGFycmF5LmJ5dGVMZW5ndGggLy8gdGhpcyB0aHJvd3MgaWYgYGFycmF5YCBpcyBub3QgYSB2YWxpZCBBcnJheUJ1ZmZlclxuXG4gIGlmIChieXRlT2Zmc2V0IDwgMCB8fCBhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQgKyAobGVuZ3RoIHx8IDApKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChieXRlT2Zmc2V0ID09PSB1bmRlZmluZWQgJiYgbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5KVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldClcbiAgfSBlbHNlIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gYXJyYXlcbiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgdGhhdCA9IGZyb21BcnJheUxpa2UodGhhdCwgYXJyYXkpXG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdCAodGhhdCwgb2JqKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkge1xuICAgIHZhciBsZW4gPSBjaGVja2VkKG9iai5sZW5ndGgpIHwgMFxuICAgIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuKVxuXG4gICAgaWYgKHRoYXQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhhdFxuICAgIH1cblxuICAgIG9iai5jb3B5KHRoYXQsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gdGhhdFxuICB9XG5cbiAgaWYgKG9iaikge1xuICAgIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBvYmouYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHx8ICdsZW5ndGgnIGluIG9iaikge1xuICAgICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBpc25hbihvYmoubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIDApXG4gICAgICB9XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmopXG4gICAgfVxuXG4gICAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBpc0FycmF5KG9iai5kYXRhKSkge1xuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqLmRhdGEpXG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LicpXG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoKClgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW5cbiAgLy8gbGVuZ3RoIGlzIE5hTiAod2hpY2ggaXMgb3RoZXJ3aXNlIGNvZXJjZWQgdG8gemVyby4pXG4gIGlmIChsZW5ndGggPj0ga01heExlbmd0aCgpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemU6IDB4JyArIGtNYXhMZW5ndGgoKS50b1N0cmluZygxNikgKyAnIGJ5dGVzJylcbiAgfVxuICByZXR1cm4gbGVuZ3RoIHwgMFxufVxuXG5mdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldXG4gICAgICB5ID0gYltpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkge1xuICBpZiAoIWlzQXJyYXkobGlzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbmd0aClcbiAgdmFyIHBvcyA9IDBcbiAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYnVmID0gbGlzdFtpXVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfVxuICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IHN0cmluZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nXG4gIH1cblxuICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAobGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0XG4vLyBCdWZmZXIgaW5zdGFuY2VzLlxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dXG4gIGJbbl0gPSBiW21dXG4gIGJbbV0gPSBpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAodGhpcywgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDBcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgdmFyIHN0ciA9ICcnXG4gIHZhciBtYXggPSBleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLm1hdGNoKC8uezJ9L2cpLmpvaW4oJyAnKVxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgfVxuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlICh0YXJnZXQsIHN0YXJ0LCBlbmQsIHRoaXNTdGFydCwgdGhpc0VuZCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAoaXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkYgLy8gU2VhcmNoIGZvciBhIGJ5dGUgdmFsdWUgWzAtMjU1XVxuICAgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJlxuICAgICAgICB0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGRpcikge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCBbIHZhbCBdLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyJylcbn1cblxuZnVuY3Rpb24gYXJyYXlJbmRleE9mIChhcnIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICB2YXIgaW5kZXhTaXplID0gMVxuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aFxuICB2YXIgdmFsTGVuZ3RoID0gdmFsLmxlbmd0aFxuXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fFxuICAgICAgICBlbmNvZGluZyA9PT0gJ3V0ZjE2bGUnIHx8IGVuY29kaW5nID09PSAndXRmLTE2bGUnKSB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA8IDIgfHwgdmFsLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9XG4gICAgICBpbmRleFNpemUgPSAyXG4gICAgICBhcnJMZW5ndGggLz0gMlxuICAgICAgdmFsTGVuZ3RoIC89IDJcbiAgICAgIGJ5dGVPZmZzZXQgLz0gMlxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkge1xuICAgIGlmIChpbmRleFNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBidWZbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1Zi5yZWFkVUludDE2QkUoaSAqIGluZGV4U2l6ZSlcbiAgICB9XG4gIH1cblxuICB2YXIgaVxuICBpZiAoZGlyKSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPCBhcnJMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbExlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXggKiBpbmRleFNpemVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGhcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGZvdW5kID0gdHJ1ZVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAocmVhZChhcnIsIGkgKyBqKSAhPT0gcmVhZCh2YWwsIGopKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmNsdWRlcyA9IGZ1bmN0aW9uIGluY2x1ZGVzICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiB0aGlzLmluZGV4T2YodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgIT09IC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIGluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZmFsc2UpXG59XG5cbmZ1bmN0aW9uIGhleFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gTnVtYmVyKG9mZnNldCkgfHwgMFxuICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgLy8gbXVzdCBiZSBhbiBldmVuIG51bWJlciBvZiBkaWdpdHNcbiAgdmFyIHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKHN0ckxlbiAlIDIgIT09IDApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKGlzTmFOKHBhcnNlZCkpIHJldHVybiBpXG4gICAgYnVmW29mZnNldCArIGldID0gcGFyc2VkXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gdXRmOFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYXNjaWlXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBsYXRpbjFXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBhc2NpaVdyaXRlKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYmFzZTY0V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihiYXNlNjRUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHVjczJXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHtcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZylcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBvZmZzZXRbLCBsZW5ndGhdWywgZW5jb2RpbmddKVxuICB9IGVsc2UgaWYgKGlzRmluaXRlKG9mZnNldCkpIHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gICAgaWYgKGlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCB8IDBcbiAgICAgIGlmIChlbmNvZGluZyA9PT0gdW5kZWZpbmVkKSBlbmNvZGluZyA9ICd1dGY4J1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gICAgfVxuICAvLyBsZWdhY3kgd3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpIC0gcmVtb3ZlIGluIHYwLjEzXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJ1xuICAgIClcbiAgfVxuXG4gIHZhciByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldFxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgfHwgbGVuZ3RoID4gcmVtYWluaW5nKSBsZW5ndGggPSByZW1haW5pbmdcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgdmFyIHJlcyA9IFtdXG5cbiAgdmFyIGkgPSBzdGFydFxuICB3aGlsZSAoaSA8IGVuZCkge1xuICAgIHZhciBmaXJzdEJ5dGUgPSBidWZbaV1cbiAgICB2YXIgY29kZVBvaW50ID0gbnVsbFxuICAgIHZhciBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpID8gNFxuICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzXG4gICAgICA6IChmaXJzdEJ5dGUgPiAweEJGKSA/IDJcbiAgICAgIDogMVxuXG4gICAgaWYgKGkgKyBieXRlc1BlclNlcXVlbmNlIDw9IGVuZCkge1xuICAgICAgdmFyIHNlY29uZEJ5dGUsIHRoaXJkQnl0ZSwgZm91cnRoQnl0ZSwgdGVtcENvZGVQb2ludFxuXG4gICAgICBzd2l0Y2ggKGJ5dGVzUGVyU2VxdWVuY2UpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7XG4gICAgICAgICAgICBjb2RlUG9pbnQgPSBmaXJzdEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHgxRikgPDwgMHg2IHwgKHNlY29uZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4QyB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKHRoaXJkQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweDEyIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweEMgfCAodGhpcmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKGZvdXJ0aEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweEZGRkYgJiYgdGVtcENvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEXG4gICAgICBieXRlc1BlclNlcXVlbmNlID0gMVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50ID4gMHhGRkZGKSB7XG4gICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKVxuICAgICAgY29kZVBvaW50IC09IDB4MTAwMDBcbiAgICAgIHJlcy5wdXNoKGNvZGVQb2ludCA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMClcbiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGXG4gICAgfVxuXG4gICAgcmVzLnB1c2goY29kZVBvaW50KVxuICAgIGkgKz0gYnl0ZXNQZXJTZXF1ZW5jZVxuICB9XG5cbiAgcmV0dXJuIGRlY29kZUNvZGVQb2ludHNBcnJheShyZXMpXG59XG5cbi8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIyNzQ3MjcyLzY4MDc0MiwgdGhlIGJyb3dzZXIgd2l0aFxuLy8gdGhlIGxvd2VzdCBsaW1pdCBpcyBDaHJvbWUsIHdpdGggMHgxMDAwMCBhcmdzLlxuLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eVxudmFyIE1BWF9BUkdVTUVOVFNfTEVOR1RIID0gMHgxMDAwXG5cbmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykge1xuICB2YXIgbGVuID0gY29kZVBvaW50cy5sZW5ndGhcbiAgaWYgKGxlbiA8PSBNQVhfQVJHVU1FTlRTX0xFTkdUSCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKVxuICB9XG5cbiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCBcImNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiLlxuICB2YXIgcmVzID0gJydcbiAgdmFyIGkgPSAwXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoXG4gICAgICBTdHJpbmcsXG4gICAgICBjb2RlUG9pbnRzLnNsaWNlKGksIGkgKz0gTUFYX0FSR1VNRU5UU19MRU5HVEgpXG4gICAgKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0gJiAweDdGKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gaGV4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aFxuXG4gIGlmICghc3RhcnQgfHwgc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgfHwgZW5kIDwgMCB8fCBlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIHZhciBvdXQgPSAnJ1xuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIG91dCArPSB0b0hleChidWZbaV0pXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiB1dGYxNmxlU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgYnl0ZXMgPSBidWYuc2xpY2Uoc3RhcnQsIGVuZClcbiAgdmFyIHJlcyA9ICcnXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSArIGJ5dGVzW2kgKyAxXSAqIDI1NilcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiBzbGljZSAoc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgc3RhcnQgPSB+fnN0YXJ0XG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogfn5lbmRcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgKz0gbGVuXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIH0gZWxzZSBpZiAoc3RhcnQgPiBsZW4pIHtcbiAgICBzdGFydCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuXG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDBcbiAgfSBlbHNlIGlmIChlbmQgPiBsZW4pIHtcbiAgICBlbmQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICB2YXIgbmV3QnVmXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIG5ld0J1ZiA9IHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZClcbiAgICBuZXdCdWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIHZhciBzbGljZUxlbiA9IGVuZCAtIHN0YXJ0XG4gICAgbmV3QnVmID0gbmV3IEJ1ZmZlcihzbGljZUxlbiwgdW5kZWZpbmVkKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2xpY2VMZW47ICsraSkge1xuICAgICAgbmV3QnVmW2ldID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0J1ZlxufVxuXG4vKlxuICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrT2Zmc2V0IChvZmZzZXQsIGV4dCwgbGVuZ3RoKSB7XG4gIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBsZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludExFID0gZnVuY3Rpb24gcmVhZFVJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcbiAgfVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF1cbiAgdmFyIG11bCA9IDFcbiAgd2hpbGUgKGJ5dGVMZW5ndGggPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OCA9IGZ1bmN0aW9uIHJlYWRVSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCA4KSB8IHRoaXNbb2Zmc2V0ICsgMV1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyTEUgPSBmdW5jdGlvbiByZWFkVUludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKCh0aGlzW29mZnNldF0pIHxcbiAgICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSkgK1xuICAgICAgKHRoaXNbb2Zmc2V0ICsgM10gKiAweDEwMDAwMDApXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gKiAweDEwMDAwMDApICtcbiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgdGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50TEUgPSBmdW5jdGlvbiByZWFkSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50QkUgPSBmdW5jdGlvbiByZWFkSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGhcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXVxuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OCA9IGZ1bmN0aW9uIHJlYWRJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIGlmICghKHRoaXNbb2Zmc2V0XSAmIDB4ODApKSByZXR1cm4gKHRoaXNbb2Zmc2V0XSlcbiAgcmV0dXJuICgoMHhmZiAtIHRoaXNbb2Zmc2V0XSArIDEpICogLTEpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEUgPSBmdW5jdGlvbiByZWFkSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFID0gZnVuY3Rpb24gcmVhZEludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgMV0gfCAodGhpc1tvZmZzZXRdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0pIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSA8PCAyNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRMRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdExFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdEJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCA1MiwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlQkUgPSBmdW5jdGlvbiByZWFkRG91YmxlQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlVUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVVSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDE2IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDIpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlICYgKDB4ZmYgPDwgKDggKiAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSkpKSA+Pj5cbiAgICAgIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpICogOFxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDMyIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCA0KTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSA+Pj4gKGxpdHRsZUVuZGlhbiA/IGkgOiAzIC0gaSkgKiA4KSAmIDB4ZmZcbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSAwXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4N2YsIC0weDgwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiBjaGVja0lFRUU3NTQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwXG4gIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aFxuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDBcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zXG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIH1cbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJylcblxuICAvLyBBcmUgd2Ugb29iP1xuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICB2YXIgbGVuID0gZW5kIC0gc3RhcnRcbiAgdmFyIGlcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHN0YXJ0IDwgdGFyZ2V0U3RhcnQgJiYgdGFyZ2V0U3RhcnQgPCBlbmQpIHtcbiAgICAvLyBkZXNjZW5kaW5nIGNvcHkgZnJvbSBlbmRcbiAgICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSBpZiAobGVuIDwgMTAwMCB8fCAhQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBhc2NlbmRpbmcgY29weSBmcm9tIHN0YXJ0XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMClcbiAgICAgIGlmIChjb2RlIDwgMjU2KSB7XG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfVxuXG4gIC8vIEludmFsaWQgcmFuZ2VzIGFyZSBub3Qgc2V0IHRvIGEgZGVmYXVsdCwgc28gY2FuIHJhbmdlIGNoZWNrIGVhcmx5LlxuICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhcnQgPSBzdGFydCA+Pj4gMFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwXG5cbiAgaWYgKCF2YWwpIHZhbCA9IDBcblxuICB2YXIgaVxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gdmFsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IEJ1ZmZlci5pc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teK1xcLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0cmluZ3RyaW0oc3RyKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHtcbiAgaWYgKHN0ci50cmltKSByZXR1cm4gc3RyLnRyaW0oKVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKVxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikge1xuICByZXR1cm4gYmFzZTY0LnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKHN0cikpXG59XG5cbmZ1bmN0aW9uIGJsaXRCdWZmZXIgKHNyYywgZHN0LCBvZmZzZXQsIGxlbmd0aCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVha1xuICAgIGRzdFtpICsgb2Zmc2V0XSA9IHNyY1tpXVxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIGlzbmFuICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gdmFsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n")},function(module,exports){eval('var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function("return this")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === "object") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it\'s\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcz9jZDAwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QyIsImZpbGUiOiIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xufSBjYXRjaCAoZSkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcbn1cblxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3Ncbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cblxubW9kdWxlLmV4cG9ydHMgPSBnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n')},function(module,exports,__webpack_require__){"use strict";eval('\nObject.defineProperty(exports, "__esModule", { value: true });\nconst { decodeParams, encodeMethod, logDecoder, configure: configureABI, } = __webpack_require__(6);\nconfigureABI({ noHexStringPrefix: true });\nfunction encodeInputs(method, args = []) {\n    const calldata = encodeMethod(method, args);\n    return calldata;\n}\nexports.encodeInputs = encodeInputs;\nfunction decodeOutputs(method, outputData) {\n    const types = method.outputs.map((output) => output.type);\n    // FIXME: would be nice to explicitly request for Array result\n    const result = decodeParams(types, outputData);\n    // Convert result to normal array...\n    const values = [];\n    for (let i = 0; i < types.length; i++) {\n        values[i] = result[i];\n    }\n    return values;\n}\nexports.decodeOutputs = decodeOutputs;\nclass ContractLogDecoder {\n    constructor(abi) {\n        this.abi = abi;\n        this._decoder = logDecoder(abi);\n    }\n    decode(rawlog) {\n        const result = this._decoder([rawlog]);\n        if (result.length === 0) {\n            return null;\n        }\n        const log = result[0];\n        return log;\n    }\n}\nexports.ContractLogDecoder = ContractLogDecoder;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvYWJpLmpzPzg1MzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxPQUFPLG1FQUFtRSxHQUFHLG1CQUFPLENBQUMsQ0FBa0I7QUFDdkcsY0FBYywwQkFBMEI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB7IGRlY29kZVBhcmFtcywgZW5jb2RlTWV0aG9kLCBsb2dEZWNvZGVyLCBjb25maWd1cmU6IGNvbmZpZ3VyZUFCSSwgfSA9IHJlcXVpcmUoXCJxdHVtanMtZXRoanMtYWJpXCIpO1xuY29uZmlndXJlQUJJKHsgbm9IZXhTdHJpbmdQcmVmaXg6IHRydWUgfSk7XG5mdW5jdGlvbiBlbmNvZGVJbnB1dHMobWV0aG9kLCBhcmdzID0gW10pIHtcbiAgICBjb25zdCBjYWxsZGF0YSA9IGVuY29kZU1ldGhvZChtZXRob2QsIGFyZ3MpO1xuICAgIHJldHVybiBjYWxsZGF0YTtcbn1cbmV4cG9ydHMuZW5jb2RlSW5wdXRzID0gZW5jb2RlSW5wdXRzO1xuZnVuY3Rpb24gZGVjb2RlT3V0cHV0cyhtZXRob2QsIG91dHB1dERhdGEpIHtcbiAgICBjb25zdCB0eXBlcyA9IG1ldGhvZC5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiBvdXRwdXQudHlwZSk7XG4gICAgLy8gRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gZXhwbGljaXRseSByZXF1ZXN0IGZvciBBcnJheSByZXN1bHRcbiAgICBjb25zdCByZXN1bHQgPSBkZWNvZGVQYXJhbXModHlwZXMsIG91dHB1dERhdGEpO1xuICAgIC8vIENvbnZlcnQgcmVzdWx0IHRvIG5vcm1hbCBhcnJheS4uLlxuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsdWVzW2ldID0gcmVzdWx0W2ldO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xufVxuZXhwb3J0cy5kZWNvZGVPdXRwdXRzID0gZGVjb2RlT3V0cHV0cztcbmNsYXNzIENvbnRyYWN0TG9nRGVjb2RlciB7XG4gICAgY29uc3RydWN0b3IoYWJpKSB7XG4gICAgICAgIHRoaXMuYWJpID0gYWJpO1xuICAgICAgICB0aGlzLl9kZWNvZGVyID0gbG9nRGVjb2RlcihhYmkpO1xuICAgIH1cbiAgICBkZWNvZGUocmF3bG9nKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2RlY29kZXIoW3Jhd2xvZ10pO1xuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG9nID0gcmVzdWx0WzBdO1xuICAgICAgICByZXR1cm4gbG9nO1xuICAgIH1cbn1cbmV4cG9ydHMuQ29udHJhY3RMb2dEZWNvZGVyID0gQ29udHJhY3RMb2dEZWNvZGVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n  module.exports = EventEmitter;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2V2ZW50ZW1pdHRlcjMvaW5kZXguanM/YmExMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxRQUFRO0FBQ25CLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwwREFBMEQsT0FBTztBQUNqRTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUNBQXlDLFNBQVM7QUFDbEQ7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLGVBQWUsWUFBWTtBQUMzQjs7QUFFQTtBQUNBLDJEQUEyRDtBQUMzRCwrREFBK0Q7QUFDL0QsbUVBQW1FO0FBQ25FLHVFQUF1RTtBQUN2RTtBQUNBLDBEQUEwRCxTQUFTO0FBQ25FO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsTUFBTTtBQUNqQixhQUFhLGFBQWE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsTUFBTTtBQUNqQixhQUFhLGFBQWE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsTUFBTTtBQUNqQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsMkRBQTJELFlBQVk7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixhQUFhLGFBQWE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBNkI7QUFDakM7QUFDQSIsImZpbGUiOiI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eVxuICAsIHByZWZpeCA9ICd+JztcblxuLyoqXG4gKiBDb25zdHJ1Y3RvciB0byBjcmVhdGUgYSBzdG9yYWdlIGZvciBvdXIgYEVFYCBvYmplY3RzLlxuICogQW4gYEV2ZW50c2AgaW5zdGFuY2UgaXMgYSBwbGFpbiBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhcmUgZXZlbnQgbmFtZXMuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gRXZlbnRzKCkge31cblxuLy9cbi8vIFdlIHRyeSB0byBub3QgaW5oZXJpdCBmcm9tIGBPYmplY3QucHJvdG90eXBlYC4gSW4gc29tZSBlbmdpbmVzIGNyZWF0aW5nIGFuXG4vLyBpbnN0YW5jZSBpbiB0aGlzIHdheSBpcyBmYXN0ZXIgdGhhbiBjYWxsaW5nIGBPYmplY3QuY3JlYXRlKG51bGwpYCBkaXJlY3RseS5cbi8vIElmIGBPYmplY3QuY3JlYXRlKG51bGwpYCBpcyBub3Qgc3VwcG9ydGVkIHdlIHByZWZpeCB0aGUgZXZlbnQgbmFtZXMgd2l0aCBhXG4vLyBjaGFyYWN0ZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGJ1aWx0LWluIG9iamVjdCBwcm9wZXJ0aWVzIGFyZSBub3Rcbi8vIG92ZXJyaWRkZW4gb3IgdXNlZCBhcyBhbiBhdHRhY2sgdmVjdG9yLlxuLy9cbmlmIChPYmplY3QuY3JlYXRlKSB7XG4gIEV2ZW50cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIC8vXG4gIC8vIFRoaXMgaGFjayBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgYF9fcHJvdG9fX2AgcHJvcGVydHkgaXMgc3RpbGwgaW5oZXJpdGVkIGluXG4gIC8vIHNvbWUgb2xkIGJyb3dzZXJzIGxpa2UgQW5kcm9pZCA0LCBpUGhvbmUgNS4xLCBPcGVyYSAxMSBhbmQgU2FmYXJpIDUuXG4gIC8vXG4gIGlmICghbmV3IEV2ZW50cygpLl9fcHJvdG9fXykgcHJlZml4ID0gZmFsc2U7XG59XG5cbi8qKlxuICogUmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGUgZXZlbnQgbGlzdGVuZXIuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGxpc3RlbmVyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHtNaXhlZH0gY29udGV4dCBUaGUgY29udGV4dCB0byBpbnZva2UgdGhlIGxpc3RlbmVyIHdpdGguXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvbmNlPWZhbHNlXSBTcGVjaWZ5IGlmIHRoZSBsaXN0ZW5lciBpcyBhIG9uZS10aW1lIGxpc3RlbmVyLlxuICogQGNvbnN0cnVjdG9yXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gRUUoZm4sIGNvbnRleHQsIG9uY2UpIHtcbiAgdGhpcy5mbiA9IGZuO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLm9uY2UgPSBvbmNlIHx8IGZhbHNlO1xufVxuXG4vKipcbiAqIE1pbmltYWwgYEV2ZW50RW1pdHRlcmAgaW50ZXJmYWNlIHRoYXQgaXMgbW9sZGVkIGFnYWluc3QgdGhlIE5vZGUuanNcbiAqIGBFdmVudEVtaXR0ZXJgIGludGVyZmFjZS5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBhcGkgcHVibGljXG4gKi9cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgdGhpcy5fZXZlbnRzID0gbmV3IEV2ZW50cygpO1xuICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG59XG5cbi8qKlxuICogUmV0dXJuIGFuIGFycmF5IGxpc3RpbmcgdGhlIGV2ZW50cyBmb3Igd2hpY2ggdGhlIGVtaXR0ZXIgaGFzIHJlZ2lzdGVyZWRcbiAqIGxpc3RlbmVycy5cbiAqXG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmV2ZW50TmFtZXMgPSBmdW5jdGlvbiBldmVudE5hbWVzKCkge1xuICB2YXIgbmFtZXMgPSBbXVxuICAgICwgZXZlbnRzXG4gICAgLCBuYW1lO1xuXG4gIGlmICh0aGlzLl9ldmVudHNDb3VudCA9PT0gMCkgcmV0dXJuIG5hbWVzO1xuXG4gIGZvciAobmFtZSBpbiAoZXZlbnRzID0gdGhpcy5fZXZlbnRzKSkge1xuICAgIGlmIChoYXMuY2FsbChldmVudHMsIG5hbWUpKSBuYW1lcy5wdXNoKHByZWZpeCA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lKTtcbiAgfVxuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgcmV0dXJuIG5hbWVzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGV2ZW50cykpO1xuICB9XG5cbiAgcmV0dXJuIG5hbWVzO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxpc3RlbmVycyByZWdpc3RlcmVkIGZvciBhIGdpdmVuIGV2ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfFN5bWJvbH0gZXZlbnQgVGhlIGV2ZW50IG5hbWUuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGV4aXN0cyBPbmx5IGNoZWNrIGlmIHRoZXJlIGFyZSBsaXN0ZW5lcnMuXG4gKiBAcmV0dXJucyB7QXJyYXl8Qm9vbGVhbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24gbGlzdGVuZXJzKGV2ZW50LCBleGlzdHMpIHtcbiAgdmFyIGV2dCA9IHByZWZpeCA/IHByZWZpeCArIGV2ZW50IDogZXZlbnRcbiAgICAsIGF2YWlsYWJsZSA9IHRoaXMuX2V2ZW50c1tldnRdO1xuXG4gIGlmIChleGlzdHMpIHJldHVybiAhIWF2YWlsYWJsZTtcbiAgaWYgKCFhdmFpbGFibGUpIHJldHVybiBbXTtcbiAgaWYgKGF2YWlsYWJsZS5mbikgcmV0dXJuIFthdmFpbGFibGUuZm5dO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXZhaWxhYmxlLmxlbmd0aCwgZWUgPSBuZXcgQXJyYXkobCk7IGkgPCBsOyBpKyspIHtcbiAgICBlZVtpXSA9IGF2YWlsYWJsZVtpXS5mbjtcbiAgfVxuXG4gIHJldHVybiBlZTtcbn07XG5cbi8qKlxuICogQ2FsbHMgZWFjaCBvZiB0aGUgbGlzdGVuZXJzIHJlZ2lzdGVyZWQgZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8U3ltYm9sfSBldmVudCBUaGUgZXZlbnQgbmFtZS5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBgdHJ1ZWAgaWYgdGhlIGV2ZW50IGhhZCBsaXN0ZW5lcnMsIGVsc2UgYGZhbHNlYC5cbiAqIEBhcGkgcHVibGljXG4gKi9cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uIGVtaXQoZXZlbnQsIGExLCBhMiwgYTMsIGE0LCBhNSkge1xuICB2YXIgZXZ0ID0gcHJlZml4ID8gcHJlZml4ICsgZXZlbnQgOiBldmVudDtcblxuICBpZiAoIXRoaXMuX2V2ZW50c1tldnRdKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1tldnRdXG4gICAgLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoXG4gICAgLCBhcmdzXG4gICAgLCBpO1xuXG4gIGlmIChsaXN0ZW5lcnMuZm4pIHtcbiAgICBpZiAobGlzdGVuZXJzLm9uY2UpIHRoaXMucmVtb3ZlTGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVycy5mbiwgdW5kZWZpbmVkLCB0cnVlKTtcblxuICAgIHN3aXRjaCAobGVuKSB7XG4gICAgICBjYXNlIDE6IHJldHVybiBsaXN0ZW5lcnMuZm4uY2FsbChsaXN0ZW5lcnMuY29udGV4dCksIHRydWU7XG4gICAgICBjYXNlIDI6IHJldHVybiBsaXN0ZW5lcnMuZm4uY2FsbChsaXN0ZW5lcnMuY29udGV4dCwgYTEpLCB0cnVlO1xuICAgICAgY2FzZSAzOiByZXR1cm4gbGlzdGVuZXJzLmZuLmNhbGwobGlzdGVuZXJzLmNvbnRleHQsIGExLCBhMiksIHRydWU7XG4gICAgICBjYXNlIDQ6IHJldHVybiBsaXN0ZW5lcnMuZm4uY2FsbChsaXN0ZW5lcnMuY29udGV4dCwgYTEsIGEyLCBhMyksIHRydWU7XG4gICAgICBjYXNlIDU6IHJldHVybiBsaXN0ZW5lcnMuZm4uY2FsbChsaXN0ZW5lcnMuY29udGV4dCwgYTEsIGEyLCBhMywgYTQpLCB0cnVlO1xuICAgICAgY2FzZSA2OiByZXR1cm4gbGlzdGVuZXJzLmZuLmNhbGwobGlzdGVuZXJzLmNvbnRleHQsIGExLCBhMiwgYTMsIGE0LCBhNSksIHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMSwgYXJncyA9IG5ldyBBcnJheShsZW4gLTEpOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgIH1cblxuICAgIGxpc3RlbmVycy5mbi5hcHBseShsaXN0ZW5lcnMuY29udGV4dCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxlbmd0aCA9IGxpc3RlbmVycy5sZW5ndGhcbiAgICAgICwgajtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGxpc3RlbmVyc1tpXS5vbmNlKSB0aGlzLnJlbW92ZUxpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lcnNbaV0uZm4sIHVuZGVmaW5lZCwgdHJ1ZSk7XG5cbiAgICAgIHN3aXRjaCAobGVuKSB7XG4gICAgICAgIGNhc2UgMTogbGlzdGVuZXJzW2ldLmZuLmNhbGwobGlzdGVuZXJzW2ldLmNvbnRleHQpOyBicmVhaztcbiAgICAgICAgY2FzZSAyOiBsaXN0ZW5lcnNbaV0uZm4uY2FsbChsaXN0ZW5lcnNbaV0uY29udGV4dCwgYTEpOyBicmVhaztcbiAgICAgICAgY2FzZSAzOiBsaXN0ZW5lcnNbaV0uZm4uY2FsbChsaXN0ZW5lcnNbaV0uY29udGV4dCwgYTEsIGEyKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgNDogbGlzdGVuZXJzW2ldLmZuLmNhbGwobGlzdGVuZXJzW2ldLmNvbnRleHQsIGExLCBhMiwgYTMpOyBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAoIWFyZ3MpIGZvciAoaiA9IDEsIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0xKTsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgICAgICBhcmdzW2ogLSAxXSA9IGFyZ3VtZW50c1tqXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaXN0ZW5lcnNbaV0uZm4uYXBwbHkobGlzdGVuZXJzW2ldLmNvbnRleHQsIGFyZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuLyoqXG4gKiBBZGQgYSBsaXN0ZW5lciBmb3IgYSBnaXZlbiBldmVudC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xTeW1ib2x9IGV2ZW50IFRoZSBldmVudCBuYW1lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGxpc3RlbmVyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHtNaXhlZH0gW2NvbnRleHQ9dGhpc10gVGhlIGNvbnRleHQgdG8gaW52b2tlIHRoZSBsaXN0ZW5lciB3aXRoLlxuICogQHJldHVybnMge0V2ZW50RW1pdHRlcn0gYHRoaXNgLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIG9uKGV2ZW50LCBmbiwgY29udGV4dCkge1xuICB2YXIgbGlzdGVuZXIgPSBuZXcgRUUoZm4sIGNvbnRleHQgfHwgdGhpcylcbiAgICAsIGV2dCA9IHByZWZpeCA/IHByZWZpeCArIGV2ZW50IDogZXZlbnQ7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHNbZXZ0XSkgdGhpcy5fZXZlbnRzW2V2dF0gPSBsaXN0ZW5lciwgdGhpcy5fZXZlbnRzQ291bnQrKztcbiAgZWxzZSBpZiAoIXRoaXMuX2V2ZW50c1tldnRdLmZuKSB0aGlzLl9ldmVudHNbZXZ0XS5wdXNoKGxpc3RlbmVyKTtcbiAgZWxzZSB0aGlzLl9ldmVudHNbZXZ0XSA9IFt0aGlzLl9ldmVudHNbZXZ0XSwgbGlzdGVuZXJdO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBBZGQgYSBvbmUtdGltZSBsaXN0ZW5lciBmb3IgYSBnaXZlbiBldmVudC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xTeW1ib2x9IGV2ZW50IFRoZSBldmVudCBuYW1lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGxpc3RlbmVyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHtNaXhlZH0gW2NvbnRleHQ9dGhpc10gVGhlIGNvbnRleHQgdG8gaW52b2tlIHRoZSBsaXN0ZW5lciB3aXRoLlxuICogQHJldHVybnMge0V2ZW50RW1pdHRlcn0gYHRoaXNgLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gb25jZShldmVudCwgZm4sIGNvbnRleHQpIHtcbiAgdmFyIGxpc3RlbmVyID0gbmV3IEVFKGZuLCBjb250ZXh0IHx8IHRoaXMsIHRydWUpXG4gICAgLCBldnQgPSBwcmVmaXggPyBwcmVmaXggKyBldmVudCA6IGV2ZW50O1xuXG4gIGlmICghdGhpcy5fZXZlbnRzW2V2dF0pIHRoaXMuX2V2ZW50c1tldnRdID0gbGlzdGVuZXIsIHRoaXMuX2V2ZW50c0NvdW50Kys7XG4gIGVsc2UgaWYgKCF0aGlzLl9ldmVudHNbZXZ0XS5mbikgdGhpcy5fZXZlbnRzW2V2dF0ucHVzaChsaXN0ZW5lcik7XG4gIGVsc2UgdGhpcy5fZXZlbnRzW2V2dF0gPSBbdGhpcy5fZXZlbnRzW2V2dF0sIGxpc3RlbmVyXTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBsaXN0ZW5lcnMgb2YgYSBnaXZlbiBldmVudC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xTeW1ib2x9IGV2ZW50IFRoZSBldmVudCBuYW1lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gT25seSByZW1vdmUgdGhlIGxpc3RlbmVycyB0aGF0IG1hdGNoIHRoaXMgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge01peGVkfSBjb250ZXh0IE9ubHkgcmVtb3ZlIHRoZSBsaXN0ZW5lcnMgdGhhdCBoYXZlIHRoaXMgY29udGV4dC5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gb25jZSBPbmx5IHJlbW92ZSBvbmUtdGltZSBsaXN0ZW5lcnMuXG4gKiBAcmV0dXJucyB7RXZlbnRFbWl0dGVyfSBgdGhpc2AuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIoZXZlbnQsIGZuLCBjb250ZXh0LCBvbmNlKSB7XG4gIHZhciBldnQgPSBwcmVmaXggPyBwcmVmaXggKyBldmVudCA6IGV2ZW50O1xuXG4gIGlmICghdGhpcy5fZXZlbnRzW2V2dF0pIHJldHVybiB0aGlzO1xuICBpZiAoIWZuKSB7XG4gICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApIHRoaXMuX2V2ZW50cyA9IG5ldyBFdmVudHMoKTtcbiAgICBlbHNlIGRlbGV0ZSB0aGlzLl9ldmVudHNbZXZ0XTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHNbZXZ0XTtcblxuICBpZiAobGlzdGVuZXJzLmZuKSB7XG4gICAgaWYgKFxuICAgICAgICAgbGlzdGVuZXJzLmZuID09PSBmblxuICAgICAgJiYgKCFvbmNlIHx8IGxpc3RlbmVycy5vbmNlKVxuICAgICAgJiYgKCFjb250ZXh0IHx8IGxpc3RlbmVycy5jb250ZXh0ID09PSBjb250ZXh0KVxuICAgICkge1xuICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApIHRoaXMuX2V2ZW50cyA9IG5ldyBFdmVudHMoKTtcbiAgICAgIGVsc2UgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMCwgZXZlbnRzID0gW10sIGxlbmd0aCA9IGxpc3RlbmVycy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFxuICAgICAgICAgICBsaXN0ZW5lcnNbaV0uZm4gIT09IGZuXG4gICAgICAgIHx8IChvbmNlICYmICFsaXN0ZW5lcnNbaV0ub25jZSlcbiAgICAgICAgfHwgKGNvbnRleHQgJiYgbGlzdGVuZXJzW2ldLmNvbnRleHQgIT09IGNvbnRleHQpXG4gICAgICApIHtcbiAgICAgICAgZXZlbnRzLnB1c2gobGlzdGVuZXJzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIFJlc2V0IHRoZSBhcnJheSwgb3IgcmVtb3ZlIGl0IGNvbXBsZXRlbHkgaWYgd2UgaGF2ZSBubyBtb3JlIGxpc3RlbmVycy5cbiAgICAvL1xuICAgIGlmIChldmVudHMubGVuZ3RoKSB0aGlzLl9ldmVudHNbZXZ0XSA9IGV2ZW50cy5sZW5ndGggPT09IDEgPyBldmVudHNbMF0gOiBldmVudHM7XG4gICAgZWxzZSBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMCkgdGhpcy5fZXZlbnRzID0gbmV3IEV2ZW50cygpO1xuICAgIGVsc2UgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbGwgbGlzdGVuZXJzLCBvciB0aG9zZSBvZiB0aGUgc3BlY2lmaWVkIGV2ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfFN5bWJvbH0gW2V2ZW50XSBUaGUgZXZlbnQgbmFtZS5cbiAqIEByZXR1cm5zIHtFdmVudEVtaXR0ZXJ9IGB0aGlzYC5cbiAqIEBhcGkgcHVibGljXG4gKi9cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKGV2ZW50KSB7XG4gIHZhciBldnQ7XG5cbiAgaWYgKGV2ZW50KSB7XG4gICAgZXZ0ID0gcHJlZml4ID8gcHJlZml4ICsgZXZlbnQgOiBldmVudDtcbiAgICBpZiAodGhpcy5fZXZlbnRzW2V2dF0pIHtcbiAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKSB0aGlzLl9ldmVudHMgPSBuZXcgRXZlbnRzKCk7XG4gICAgICBlbHNlIGRlbGV0ZSB0aGlzLl9ldmVudHNbZXZ0XTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZXZlbnRzID0gbmV3IEV2ZW50cygpO1xuICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy9cbi8vIEFsaWFzIG1ldGhvZHMgbmFtZXMgYmVjYXVzZSBwZW9wbGUgcm9sbCBsaWtlIHRoYXQuXG4vL1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vZmYgPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUub247XG5cbi8vXG4vLyBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgYXBwbHkgYW55bW9yZS5cbi8vXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIHNldE1heExpc3RlbmVycygpIHtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gRXhwb3NlIHRoZSBwcmVmaXguXG4vL1xuRXZlbnRFbWl0dGVyLnByZWZpeGVkID0gcHJlZml4O1xuXG4vL1xuLy8gQWxsb3cgYEV2ZW50RW1pdHRlcmAgdG8gYmUgaW1wb3J0ZWQgYXMgbW9kdWxlIG5hbWVzcGFjZS5cbi8vXG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG4vL1xuLy8gRXhwb3NlIHRoZSBtb2R1bGUuXG4vL1xuaWYgKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgbW9kdWxlKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nvar utils = __webpack_require__(0);\nvar normalizeHeaderName = __webpack_require__(36);\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = __webpack_require__(13);\n  } else if (typeof process !== 'undefined') {\n    // For node use HTTP adapter\n    adapter = __webpack_require__(13);\n  }\n  return adapter;\n}\n\nvar defaults = {\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Content-Type');\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data)) {\n      setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n      return JSON.stringify(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    /*eslint no-param-reassign:0*/\n    if (typeof data === 'string') {\n      try {\n        data = JSON.parse(data);\n      } catch (e) { /* Ignore */ }\n    }\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(8)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy5qcz8yNDQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxDQUFTO0FBQzdCLDBCQUEwQixtQkFBTyxDQUFDLEVBQStCOztBQUVqRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxFQUFnQjtBQUN0QyxHQUFHO0FBQ0g7QUFDQSxjQUFjLG1CQUFPLENBQUMsRUFBaUI7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFlBQVk7QUFDbkI7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIG5vcm1hbGl6ZUhlYWRlck5hbWUgPSByZXF1aXJlKCcuL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZScpO1xuXG52YXIgREVGQVVMVF9DT05URU5UX1RZUEUgPSB7XG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xufTtcblxuZnVuY3Rpb24gc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsIHZhbHVlKSB7XG4gIGlmICghdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVycykgJiYgdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVyc1snQ29udGVudC1UeXBlJ10pKSB7XG4gICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSB2YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0QWRhcHRlcigpIHtcbiAgdmFyIGFkYXB0ZXI7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gRm9yIGJyb3dzZXJzIHVzZSBYSFIgYWRhcHRlclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuL2FkYXB0ZXJzL3hocicpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIEZvciBub2RlIHVzZSBIVFRQIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy9odHRwJyk7XG4gIH1cbiAgcmV0dXJuIGFkYXB0ZXI7XG59XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgYWRhcHRlcjogZ2V0RGVmYXVsdEFkYXB0ZXIoKSxcblxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQ29udGVudC1UeXBlJyk7XG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQXJyYXlCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc1N0cmVhbShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNGaWxlKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0Jsb2IoZGF0YSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlclZpZXcoZGF0YSkpIHtcbiAgICAgIHJldHVybiBkYXRhLmJ1ZmZlcjtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKGRhdGEpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04Jyk7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNPYmplY3QoZGF0YSkpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04Jyk7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgLyogSWdub3JlICovIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuXG4gIHZhbGlkYXRlU3RhdHVzOiBmdW5jdGlvbiB2YWxpZGF0ZVN0YXR1cyhzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gIH1cbn07XG5cbmRlZmF1bHRzLmhlYWRlcnMgPSB7XG4gIGNvbW1vbjoge1xuICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJ1xuICB9XG59O1xuXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHt9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHV0aWxzLm1lcmdlKERFRkFVTFRfQ09OVEVOVF9UWVBFKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports,__webpack_require__){eval("/* eslint-disable */\n/*\nPrimary Attribution\nRichard Moore <ricmoo@me.com>\nhttps://github.com/ethers-io\n\nNote, Richard is a god of ether gods. Follow and respect him, and use Ethers.io!\n*/\n\nconst Buffer = __webpack_require__(1).Buffer;\nconst utils = __webpack_require__(23);\nconst uint256Coder = utils.uint256Coder;\nconst coderBoolean = utils.coderBoolean;\nconst coderFixedBytes = utils.coderFixedBytes;\nconst coderAddress = utils.coderAddress;\nconst coderDynamicBytes = utils.coderDynamicBytes;\nconst coderString = utils.coderString;\nconst coderArray = utils.coderArray;\nconst paramTypePart = utils.paramTypePart;\nconst getParamCoder = utils.getParamCoder;\n\nconst {\n  hexStringToBuffer,\n  toHexStringNoPrefix,\n  toHexString,\n  configure,\n} = utils\n\n// function Result() { }\nclass Result {\n  constructor(size = undefined) {\n    if (size) {\n      Object.defineProperty(this, \"length\", {\n        value: size\n      })\n    }\n  }\n\n  // Implements iterator protocol for array-like destructuring and for..of loop.\n  [Symbol.iterator]() {\n    const size = this.length || 0\n\n    let i = 0\n    return {\n      next: () => {\n        const done = i > size - 1\n        const v = {\n          value: !done ? this[i] : undefined,\n          done,\n        }\n\n        i++\n\n        return v\n      }\n    }\n  }\n}\n\n/**\n * @param {Array<string>} types\n * @param {any[]} values\n */\nfunction encodeParams(types, values, noHexPrefix = false) {\n  if (types.length !== values.length) {\n    throw new Error(`[ethjs-abi] while encoding params, types/values mismatch, Your contract requires ${types.length} types (arguments), and you passed in ${values.length}`);\n  }\n\n  var parts = [];\n\n  types.forEach(function (type, index) {\n    var coder = getParamCoder(type);\n    parts.push({ dynamic: coder.dynamic, value: coder.encode(values[index]) });\n  });\n\n  function alignSize(size) {\n    return parseInt(32 * Math.ceil(size / 32));\n  }\n\n  var staticSize = 0, dynamicSize = 0;\n  parts.forEach(function (part) {\n    if (part.dynamic) {\n      staticSize += 32;\n      dynamicSize += alignSize(part.value.length);\n    } else {\n      staticSize += alignSize(part.value.length);\n    }\n  });\n\n  var offset = 0, dynamicOffset = staticSize;\n  const data = new Buffer(staticSize + dynamicSize);\n\n  parts.forEach(function (part, index) {\n    if (part.dynamic) {\n      uint256Coder.encode(dynamicOffset).copy(data, offset);\n      offset += 32;\n\n      part.value.copy(data, dynamicOffset);\n      dynamicOffset += alignSize(part.value.length);\n    } else {\n      part.value.copy(data, offset);\n      offset += alignSize(part.value.length);\n    }\n  });\n\n  if (noHexPrefix) {\n    return toHexStringNoPrefix(data);\n  } else {\n    return toHexString(data);\n  }\n}\n\n/**\n * Decode bytecode data from output names and types\n *\n * @param {string[]} names\n * @param {string[]} types\n * @param {(string | Buffer)} data\n * @param {boolean} useNumberedParams\n * @param {Result} values\n * @returns {Result}\n */\nfunction decodeParams(names, types, data, useNumberedParams = true, values = new Result()) {\n  // Names is optional, so shift over all the parameters if not provided\n  if (arguments.length < 3) {\n    data = types;\n    types = names;\n    names = [];\n  }\n\n  data = utils.hexOrBuffer(data);\n\n  var offset = 0;\n  types.forEach(function (type, index) {\n    var coder = getParamCoder(type);\n\n    if (coder.dynamic) {\n      var dynamicOffset = uint256Coder.decode(data, offset);\n      var result = coder.decode(data, dynamicOffset.value.toNumber());\n      offset += dynamicOffset.consumed;\n    } else {\n      var result = coder.decode(data, offset);\n      offset += result.consumed;\n    }\n\n    if (useNumberedParams) {\n      values[index] = result.value;\n    }\n\n    if (names[index]) {\n      values[names[index]] = result.value;\n    }\n  });\n  return values;\n}\n\n// create an encoded method signature from an ABI object\nfunction encodeSignature(method) {\n  const signature = `${method.name}(${utils.getKeys(method.inputs, 'type').join(',')})`;\n  const signatureEncoded = utils.keccak256(signature).slice(0, 8)\n\n  return toHexString(signatureEncoded);\n}\n\n// encode method ABI object with values in an array, output bytecode\nfunction encodeMethod(method, values) {\n  const paramsEncoded = encodeParams(utils.getKeys(method.inputs, 'type'), values, true);\n\n  return `${encodeSignature(method)}${paramsEncoded}`;\n}\n\n// decode method data bytecode, from method ABI object\nfunction decodeMethod(method, data) {\n  const outputNames = utils.getKeys(method.outputs, 'name', true);\n  const outputTypes = utils.getKeys(method.outputs, 'type');\n\n  return decodeParams(outputNames, outputTypes, utils.hexOrBuffer(data));\n}\n\n// decode method data bytecode, from method ABI object\nfunction encodeEvent(eventObject, values) {\n  return encodeMethod(eventObject, values);\n}\n\nfunction eventSignature(eventObject) {\n  const signature = `${eventObject.name}(${utils.getKeys(eventObject.inputs, 'type').join(',')})`;\n\n  return toHexString(utils.keccak256(signature));\n}\n\n// decode method data bytecode, from method ABI object\nfunction decodeEvent(eventObject, data, topics, useNumberedParams = true) {\n  const nonIndexed = eventObject.inputs.filter((input) => !input.indexed)\n  const nonIndexedNames = utils.getKeys(nonIndexed, 'name', true);\n  const nonIndexedTypes = utils.getKeys(nonIndexed, 'type');\n  const event = decodeParams(\n    nonIndexedNames, nonIndexedTypes, utils.hexOrBuffer(data), false,\n    new Result(eventObject.inputs.length)\n  );\n  const topicOffset = eventObject.anonymous ? 0 : 1;\n\n  let iTopic = 0;\n\n  eventObject.inputs.map((input, i) => {\n    // FIXME: special handling for string and bytes\n\n    if (input.indexed) {\n      const topic = hexStringToBuffer(topics[iTopic + topicOffset]);\n      const coder = getParamCoder(input.type);\n      event[input.name] = coder.decode(topic, 0).value;\n      iTopic++;\n    }\n\n    if (useNumberedParams) {\n      Object.defineProperty(event, i, {\n        enumerable: false,\n        value: event[input.name],\n      });\n    }\n  });\n\n  event.type = eventObject.name;\n\n  return event;\n}\n\n// Decode a specific log item with a specific event abi\nfunction decodeLogItem(eventObject, log, useNumberedParams = true) {\n  if (eventObject && log.topics[0] === eventSignature(eventObject)) {\n    return decodeEvent(eventObject, log.data, log.topics, useNumberedParams)\n  }\n}\n\n// Create a decoder for all events defined in an abi. It returns a function which is called\n// on an array of log entries such as received from getLogs or getTransactionReceipt and parses\n// any matching log entries\nfunction logDecoder(abi, useNumberedParams = true) {\n  const eventMap = {}\n  abi.filter(item => item.type === 'event').map(item => {\n    eventMap[eventSignature(item)] = item\n  })\n  return function (logItems) {\n    return logItems.map(log => decodeLogItem(eventMap[log.topics[0]], log, useNumberedParams)).filter(i => i)\n  }\n}\n\n\nmodule.exports = {\n  encodeParams,\n  decodeParams,\n  encodeMethod,\n  decodeMethod,\n  encodeEvent,\n  decodeEvent,\n  decodeLogItem,\n  logDecoder,\n  eventSignature,\n  encodeSignature,\n  configure,\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy1ldGhqcy1hYmkvc3JjL2luZGV4LmpzP2ZiM2IiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGVBQWUsbUJBQU8sQ0FBQyxDQUFRO0FBQy9CLGNBQWMsbUJBQU8sQ0FBQyxFQUFrQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsTUFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQSx3R0FBd0csYUFBYSx3Q0FBd0MsY0FBYztBQUMzSzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLDZEQUE2RDtBQUM3RSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxrQkFBa0I7QUFDN0IsV0FBVyxRQUFRO0FBQ25CLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCLFlBQVksR0FBRywrQ0FBK0M7QUFDckY7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsWUFBWSx3QkFBd0IsRUFBRSxjQUFjO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsaUJBQWlCLEdBQUcsb0RBQW9EOztBQUUvRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG4vKlxuUHJpbWFyeSBBdHRyaWJ1dGlvblxuUmljaGFyZCBNb29yZSA8cmljbW9vQG1lLmNvbT5cbmh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcnMtaW9cblxuTm90ZSwgUmljaGFyZCBpcyBhIGdvZCBvZiBldGhlciBnb2RzLiBGb2xsb3cgYW5kIHJlc3BlY3QgaGltLCBhbmQgdXNlIEV0aGVycy5pbyFcbiovXG5cbmNvbnN0IEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscy9pbmRleC5qcycpO1xuY29uc3QgdWludDI1NkNvZGVyID0gdXRpbHMudWludDI1NkNvZGVyO1xuY29uc3QgY29kZXJCb29sZWFuID0gdXRpbHMuY29kZXJCb29sZWFuO1xuY29uc3QgY29kZXJGaXhlZEJ5dGVzID0gdXRpbHMuY29kZXJGaXhlZEJ5dGVzO1xuY29uc3QgY29kZXJBZGRyZXNzID0gdXRpbHMuY29kZXJBZGRyZXNzO1xuY29uc3QgY29kZXJEeW5hbWljQnl0ZXMgPSB1dGlscy5jb2RlckR5bmFtaWNCeXRlcztcbmNvbnN0IGNvZGVyU3RyaW5nID0gdXRpbHMuY29kZXJTdHJpbmc7XG5jb25zdCBjb2RlckFycmF5ID0gdXRpbHMuY29kZXJBcnJheTtcbmNvbnN0IHBhcmFtVHlwZVBhcnQgPSB1dGlscy5wYXJhbVR5cGVQYXJ0O1xuY29uc3QgZ2V0UGFyYW1Db2RlciA9IHV0aWxzLmdldFBhcmFtQ29kZXI7XG5cbmNvbnN0IHtcbiAgaGV4U3RyaW5nVG9CdWZmZXIsXG4gIHRvSGV4U3RyaW5nTm9QcmVmaXgsXG4gIHRvSGV4U3RyaW5nLFxuICBjb25maWd1cmUsXG59ID0gdXRpbHNcblxuLy8gZnVuY3Rpb24gUmVzdWx0KCkgeyB9XG5jbGFzcyBSZXN1bHQge1xuICBjb25zdHJ1Y3RvcihzaXplID0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHNpemUpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImxlbmd0aFwiLCB7XG4gICAgICAgIHZhbHVlOiBzaXplXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudHMgaXRlcmF0b3IgcHJvdG9jb2wgZm9yIGFycmF5LWxpa2UgZGVzdHJ1Y3R1cmluZyBhbmQgZm9yLi5vZiBsb29wLlxuICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICBjb25zdCBzaXplID0gdGhpcy5sZW5ndGggfHwgMFxuXG4gICAgbGV0IGkgPSAwXG4gICAgcmV0dXJuIHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgY29uc3QgZG9uZSA9IGkgPiBzaXplIC0gMVxuICAgICAgICBjb25zdCB2ID0ge1xuICAgICAgICAgIHZhbHVlOiAhZG9uZSA/IHRoaXNbaV0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgZG9uZSxcbiAgICAgICAgfVxuXG4gICAgICAgIGkrK1xuXG4gICAgICAgIHJldHVybiB2XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSB0eXBlc1xuICogQHBhcmFtIHthbnlbXX0gdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIGVuY29kZVBhcmFtcyh0eXBlcywgdmFsdWVzLCBub0hleFByZWZpeCA9IGZhbHNlKSB7XG4gIGlmICh0eXBlcy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFtldGhqcy1hYmldIHdoaWxlIGVuY29kaW5nIHBhcmFtcywgdHlwZXMvdmFsdWVzIG1pc21hdGNoLCBZb3VyIGNvbnRyYWN0IHJlcXVpcmVzICR7dHlwZXMubGVuZ3RofSB0eXBlcyAoYXJndW1lbnRzKSwgYW5kIHlvdSBwYXNzZWQgaW4gJHt2YWx1ZXMubGVuZ3RofWApO1xuICB9XG5cbiAgdmFyIHBhcnRzID0gW107XG5cbiAgdHlwZXMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHtcbiAgICB2YXIgY29kZXIgPSBnZXRQYXJhbUNvZGVyKHR5cGUpO1xuICAgIHBhcnRzLnB1c2goeyBkeW5hbWljOiBjb2Rlci5keW5hbWljLCB2YWx1ZTogY29kZXIuZW5jb2RlKHZhbHVlc1tpbmRleF0pIH0pO1xuICB9KTtcblxuICBmdW5jdGlvbiBhbGlnblNpemUoc2l6ZSkge1xuICAgIHJldHVybiBwYXJzZUludCgzMiAqIE1hdGguY2VpbChzaXplIC8gMzIpKTtcbiAgfVxuXG4gIHZhciBzdGF0aWNTaXplID0gMCwgZHluYW1pY1NpemUgPSAwO1xuICBwYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgaWYgKHBhcnQuZHluYW1pYykge1xuICAgICAgc3RhdGljU2l6ZSArPSAzMjtcbiAgICAgIGR5bmFtaWNTaXplICs9IGFsaWduU2l6ZShwYXJ0LnZhbHVlLmxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRpY1NpemUgKz0gYWxpZ25TaXplKHBhcnQudmFsdWUubGVuZ3RoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBvZmZzZXQgPSAwLCBkeW5hbWljT2Zmc2V0ID0gc3RhdGljU2l6ZTtcbiAgY29uc3QgZGF0YSA9IG5ldyBCdWZmZXIoc3RhdGljU2l6ZSArIGR5bmFtaWNTaXplKTtcblxuICBwYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uIChwYXJ0LCBpbmRleCkge1xuICAgIGlmIChwYXJ0LmR5bmFtaWMpIHtcbiAgICAgIHVpbnQyNTZDb2Rlci5lbmNvZGUoZHluYW1pY09mZnNldCkuY29weShkYXRhLCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IDMyO1xuXG4gICAgICBwYXJ0LnZhbHVlLmNvcHkoZGF0YSwgZHluYW1pY09mZnNldCk7XG4gICAgICBkeW5hbWljT2Zmc2V0ICs9IGFsaWduU2l6ZShwYXJ0LnZhbHVlLmxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnQudmFsdWUuY29weShkYXRhLCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IGFsaWduU2l6ZShwYXJ0LnZhbHVlLmxlbmd0aCk7XG4gICAgfVxuICB9KTtcblxuICBpZiAobm9IZXhQcmVmaXgpIHtcbiAgICByZXR1cm4gdG9IZXhTdHJpbmdOb1ByZWZpeChkYXRhKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdG9IZXhTdHJpbmcoZGF0YSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWNvZGUgYnl0ZWNvZGUgZGF0YSBmcm9tIG91dHB1dCBuYW1lcyBhbmQgdHlwZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBuYW1lc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gdHlwZXNcbiAqIEBwYXJhbSB7KHN0cmluZyB8IEJ1ZmZlcil9IGRhdGFcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdXNlTnVtYmVyZWRQYXJhbXNcbiAqIEBwYXJhbSB7UmVzdWx0fSB2YWx1ZXNcbiAqIEByZXR1cm5zIHtSZXN1bHR9XG4gKi9cbmZ1bmN0aW9uIGRlY29kZVBhcmFtcyhuYW1lcywgdHlwZXMsIGRhdGEsIHVzZU51bWJlcmVkUGFyYW1zID0gdHJ1ZSwgdmFsdWVzID0gbmV3IFJlc3VsdCgpKSB7XG4gIC8vIE5hbWVzIGlzIG9wdGlvbmFsLCBzbyBzaGlmdCBvdmVyIGFsbCB0aGUgcGFyYW1ldGVycyBpZiBub3QgcHJvdmlkZWRcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKSB7XG4gICAgZGF0YSA9IHR5cGVzO1xuICAgIHR5cGVzID0gbmFtZXM7XG4gICAgbmFtZXMgPSBbXTtcbiAgfVxuXG4gIGRhdGEgPSB1dGlscy5oZXhPckJ1ZmZlcihkYXRhKTtcblxuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdHlwZXMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHtcbiAgICB2YXIgY29kZXIgPSBnZXRQYXJhbUNvZGVyKHR5cGUpO1xuXG4gICAgaWYgKGNvZGVyLmR5bmFtaWMpIHtcbiAgICAgIHZhciBkeW5hbWljT2Zmc2V0ID0gdWludDI1NkNvZGVyLmRlY29kZShkYXRhLCBvZmZzZXQpO1xuICAgICAgdmFyIHJlc3VsdCA9IGNvZGVyLmRlY29kZShkYXRhLCBkeW5hbWljT2Zmc2V0LnZhbHVlLnRvTnVtYmVyKCkpO1xuICAgICAgb2Zmc2V0ICs9IGR5bmFtaWNPZmZzZXQuY29uc3VtZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSBjb2Rlci5kZWNvZGUoZGF0YSwgb2Zmc2V0KTtcbiAgICAgIG9mZnNldCArPSByZXN1bHQuY29uc3VtZWQ7XG4gICAgfVxuXG4gICAgaWYgKHVzZU51bWJlcmVkUGFyYW1zKSB7XG4gICAgICB2YWx1ZXNbaW5kZXhdID0gcmVzdWx0LnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChuYW1lc1tpbmRleF0pIHtcbiAgICAgIHZhbHVlc1tuYW1lc1tpbmRleF1dID0gcmVzdWx0LnZhbHVlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB2YWx1ZXM7XG59XG5cbi8vIGNyZWF0ZSBhbiBlbmNvZGVkIG1ldGhvZCBzaWduYXR1cmUgZnJvbSBhbiBBQkkgb2JqZWN0XG5mdW5jdGlvbiBlbmNvZGVTaWduYXR1cmUobWV0aG9kKSB7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGAke21ldGhvZC5uYW1lfSgke3V0aWxzLmdldEtleXMobWV0aG9kLmlucHV0cywgJ3R5cGUnKS5qb2luKCcsJyl9KWA7XG4gIGNvbnN0IHNpZ25hdHVyZUVuY29kZWQgPSB1dGlscy5rZWNjYWsyNTYoc2lnbmF0dXJlKS5zbGljZSgwLCA4KVxuXG4gIHJldHVybiB0b0hleFN0cmluZyhzaWduYXR1cmVFbmNvZGVkKTtcbn1cblxuLy8gZW5jb2RlIG1ldGhvZCBBQkkgb2JqZWN0IHdpdGggdmFsdWVzIGluIGFuIGFycmF5LCBvdXRwdXQgYnl0ZWNvZGVcbmZ1bmN0aW9uIGVuY29kZU1ldGhvZChtZXRob2QsIHZhbHVlcykge1xuICBjb25zdCBwYXJhbXNFbmNvZGVkID0gZW5jb2RlUGFyYW1zKHV0aWxzLmdldEtleXMobWV0aG9kLmlucHV0cywgJ3R5cGUnKSwgdmFsdWVzLCB0cnVlKTtcblxuICByZXR1cm4gYCR7ZW5jb2RlU2lnbmF0dXJlKG1ldGhvZCl9JHtwYXJhbXNFbmNvZGVkfWA7XG59XG5cbi8vIGRlY29kZSBtZXRob2QgZGF0YSBieXRlY29kZSwgZnJvbSBtZXRob2QgQUJJIG9iamVjdFxuZnVuY3Rpb24gZGVjb2RlTWV0aG9kKG1ldGhvZCwgZGF0YSkge1xuICBjb25zdCBvdXRwdXROYW1lcyA9IHV0aWxzLmdldEtleXMobWV0aG9kLm91dHB1dHMsICduYW1lJywgdHJ1ZSk7XG4gIGNvbnN0IG91dHB1dFR5cGVzID0gdXRpbHMuZ2V0S2V5cyhtZXRob2Qub3V0cHV0cywgJ3R5cGUnKTtcblxuICByZXR1cm4gZGVjb2RlUGFyYW1zKG91dHB1dE5hbWVzLCBvdXRwdXRUeXBlcywgdXRpbHMuaGV4T3JCdWZmZXIoZGF0YSkpO1xufVxuXG4vLyBkZWNvZGUgbWV0aG9kIGRhdGEgYnl0ZWNvZGUsIGZyb20gbWV0aG9kIEFCSSBvYmplY3RcbmZ1bmN0aW9uIGVuY29kZUV2ZW50KGV2ZW50T2JqZWN0LCB2YWx1ZXMpIHtcbiAgcmV0dXJuIGVuY29kZU1ldGhvZChldmVudE9iamVjdCwgdmFsdWVzKTtcbn1cblxuZnVuY3Rpb24gZXZlbnRTaWduYXR1cmUoZXZlbnRPYmplY3QpIHtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYCR7ZXZlbnRPYmplY3QubmFtZX0oJHt1dGlscy5nZXRLZXlzKGV2ZW50T2JqZWN0LmlucHV0cywgJ3R5cGUnKS5qb2luKCcsJyl9KWA7XG5cbiAgcmV0dXJuIHRvSGV4U3RyaW5nKHV0aWxzLmtlY2NhazI1NihzaWduYXR1cmUpKTtcbn1cblxuLy8gZGVjb2RlIG1ldGhvZCBkYXRhIGJ5dGVjb2RlLCBmcm9tIG1ldGhvZCBBQkkgb2JqZWN0XG5mdW5jdGlvbiBkZWNvZGVFdmVudChldmVudE9iamVjdCwgZGF0YSwgdG9waWNzLCB1c2VOdW1iZXJlZFBhcmFtcyA9IHRydWUpIHtcbiAgY29uc3Qgbm9uSW5kZXhlZCA9IGV2ZW50T2JqZWN0LmlucHV0cy5maWx0ZXIoKGlucHV0KSA9PiAhaW5wdXQuaW5kZXhlZClcbiAgY29uc3Qgbm9uSW5kZXhlZE5hbWVzID0gdXRpbHMuZ2V0S2V5cyhub25JbmRleGVkLCAnbmFtZScsIHRydWUpO1xuICBjb25zdCBub25JbmRleGVkVHlwZXMgPSB1dGlscy5nZXRLZXlzKG5vbkluZGV4ZWQsICd0eXBlJyk7XG4gIGNvbnN0IGV2ZW50ID0gZGVjb2RlUGFyYW1zKFxuICAgIG5vbkluZGV4ZWROYW1lcywgbm9uSW5kZXhlZFR5cGVzLCB1dGlscy5oZXhPckJ1ZmZlcihkYXRhKSwgZmFsc2UsXG4gICAgbmV3IFJlc3VsdChldmVudE9iamVjdC5pbnB1dHMubGVuZ3RoKVxuICApO1xuICBjb25zdCB0b3BpY09mZnNldCA9IGV2ZW50T2JqZWN0LmFub255bW91cyA/IDAgOiAxO1xuXG4gIGxldCBpVG9waWMgPSAwO1xuXG4gIGV2ZW50T2JqZWN0LmlucHV0cy5tYXAoKGlucHV0LCBpKSA9PiB7XG4gICAgLy8gRklYTUU6IHNwZWNpYWwgaGFuZGxpbmcgZm9yIHN0cmluZyBhbmQgYnl0ZXNcblxuICAgIGlmIChpbnB1dC5pbmRleGVkKSB7XG4gICAgICBjb25zdCB0b3BpYyA9IGhleFN0cmluZ1RvQnVmZmVyKHRvcGljc1tpVG9waWMgKyB0b3BpY09mZnNldF0pO1xuICAgICAgY29uc3QgY29kZXIgPSBnZXRQYXJhbUNvZGVyKGlucHV0LnR5cGUpO1xuICAgICAgZXZlbnRbaW5wdXQubmFtZV0gPSBjb2Rlci5kZWNvZGUodG9waWMsIDApLnZhbHVlO1xuICAgICAgaVRvcGljKys7XG4gICAgfVxuXG4gICAgaWYgKHVzZU51bWJlcmVkUGFyYW1zKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsIGksIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBldmVudFtpbnB1dC5uYW1lXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgZXZlbnQudHlwZSA9IGV2ZW50T2JqZWN0Lm5hbWU7XG5cbiAgcmV0dXJuIGV2ZW50O1xufVxuXG4vLyBEZWNvZGUgYSBzcGVjaWZpYyBsb2cgaXRlbSB3aXRoIGEgc3BlY2lmaWMgZXZlbnQgYWJpXG5mdW5jdGlvbiBkZWNvZGVMb2dJdGVtKGV2ZW50T2JqZWN0LCBsb2csIHVzZU51bWJlcmVkUGFyYW1zID0gdHJ1ZSkge1xuICBpZiAoZXZlbnRPYmplY3QgJiYgbG9nLnRvcGljc1swXSA9PT0gZXZlbnRTaWduYXR1cmUoZXZlbnRPYmplY3QpKSB7XG4gICAgcmV0dXJuIGRlY29kZUV2ZW50KGV2ZW50T2JqZWN0LCBsb2cuZGF0YSwgbG9nLnRvcGljcywgdXNlTnVtYmVyZWRQYXJhbXMpXG4gIH1cbn1cblxuLy8gQ3JlYXRlIGEgZGVjb2RlciBmb3IgYWxsIGV2ZW50cyBkZWZpbmVkIGluIGFuIGFiaS4gSXQgcmV0dXJucyBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZFxuLy8gb24gYW4gYXJyYXkgb2YgbG9nIGVudHJpZXMgc3VjaCBhcyByZWNlaXZlZCBmcm9tIGdldExvZ3Mgb3IgZ2V0VHJhbnNhY3Rpb25SZWNlaXB0IGFuZCBwYXJzZXNcbi8vIGFueSBtYXRjaGluZyBsb2cgZW50cmllc1xuZnVuY3Rpb24gbG9nRGVjb2RlcihhYmksIHVzZU51bWJlcmVkUGFyYW1zID0gdHJ1ZSkge1xuICBjb25zdCBldmVudE1hcCA9IHt9XG4gIGFiaS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICdldmVudCcpLm1hcChpdGVtID0+IHtcbiAgICBldmVudE1hcFtldmVudFNpZ25hdHVyZShpdGVtKV0gPSBpdGVtXG4gIH0pXG4gIHJldHVybiBmdW5jdGlvbiAobG9nSXRlbXMpIHtcbiAgICByZXR1cm4gbG9nSXRlbXMubWFwKGxvZyA9PiBkZWNvZGVMb2dJdGVtKGV2ZW50TWFwW2xvZy50b3BpY3NbMF1dLCBsb2csIHVzZU51bWJlcmVkUGFyYW1zKSkuZmlsdGVyKGkgPT4gaSlcbiAgfVxufVxuXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBlbmNvZGVQYXJhbXMsXG4gIGRlY29kZVBhcmFtcyxcbiAgZW5jb2RlTWV0aG9kLFxuICBkZWNvZGVNZXRob2QsXG4gIGVuY29kZUV2ZW50LFxuICBkZWNvZGVFdmVudCxcbiAgZGVjb2RlTG9nSXRlbSxcbiAgbG9nRGVjb2RlcixcbiAgZXZlbnRTaWduYXR1cmUsXG4gIGVuY29kZVNpZ25hdHVyZSxcbiAgY29uZmlndXJlLFxufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    Buffer = __webpack_require__(1).Buffer;\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n    }\n\n    if (base === 16) {\n      this._parseHex(number, start);\n    } else {\n      this._parseBase(number, base, start);\n    }\n\n    if (number[0] === '-') {\n      this.negative = 1;\n    }\n\n    this.strip();\n\n    if (endian !== 'le') return;\n\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex (str, start, end) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r <<= 4;\n\n      // 'a' - 'f'\n      if (c >= 49 && c <= 54) {\n        r |= c - 49 + 0xa;\n\n      // 'A' - 'F'\n      } else if (c >= 17 && c <= 22) {\n        r |= c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r |= c & 0xf;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    // Scan 24-bit chunks and add them to the number\n    var off = 0;\n    for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n      w = parseHex(number, i, i + 6);\n      this.words[j] |= (w << off) & 0x3ffffff;\n      // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n      this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n      off += 24;\n      if (off >= 26) {\n        off -= 26;\n        j++;\n      }\n    }\n    if (i + 6 !== start) {\n      w = parseHex(number, start, i + 6);\n      this.words[j] |= (w << off) & 0x3ffffff;\n      this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n    }\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      r.strip();\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})( false || module, this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(24)(module)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcz8zOTlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsbUJBQU8sQ0FBQyxDQUFhO0FBQ2xDLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsUUFBUTtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsd0JBQXdCLG1CQUFtQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFNBQVM7QUFDaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLFlBQVk7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsU0FBUztBQUNoQzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQyxzQkFBc0I7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLFNBQVM7QUFDaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpQkFBaUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw0QkFBNEI7QUFDN0M7QUFDQTs7QUFFQSxpQkFBaUIsYUFBYTtBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLGFBQWE7QUFDOUI7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFlBQVksZUFBZTtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxxQkFBcUIsZ0JBQWdCO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxtQkFBbUIsY0FBYztBQUNqQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsY0FBYztBQUNqQztBQUNBOztBQUVBO0FBQ0EsWUFBWSxjQUFjO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsY0FBYztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsNkJBQTZCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsWUFBWSxjQUFjO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDZCQUE2QjtBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxjQUFjO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELFdBQVc7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxXQUFXO0FBQy9EO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixPQUFPO0FBQzFCOztBQUVBO0FBQ0E7O0FBRUEscUJBQXFCLE9BQU87QUFDNUI7QUFDQTs7QUFFQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLEdBQUc7QUFDMUI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLFdBQVc7QUFDOUI7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCOztBQUVBLGtDQUFrQztBQUNsQyxzQ0FBc0M7QUFDdEM7O0FBRUE7QUFDQSxxQkFBcUIsT0FBTztBQUM1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQztBQUNBOztBQUVBO0FBQ0EsNkJBQTZCLGNBQWM7QUFDM0M7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQixRQUFRO0FBQ3ZDO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIsbUNBQW1DO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQiwrQ0FBK0M7QUFDbEU7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUJBQXFCLHNDQUFzQztBQUMzRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGVBQWUsZ0JBQWdCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUseUJBQXlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUJBQWlCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixjQUFjO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsUUFBUTtBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUMsUUFBUTtBQUN6QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUNBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNkJBQTZCLG1DQUFtQztBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkIsbUNBQW1DO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsNkJBQTZCLG1DQUFtQztBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZCQUE2QixtQ0FBbUM7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLDBCQUEwQjtBQUNqRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsZ0NBQWdDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUMsUUFBUTtBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLGtCQUFrQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG9CQUFvQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUE0QixRQUFRO0FBQ3BDO0FBQ0EsNkJBQTZCLFFBQVE7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRSxNQUE2QiIsImZpbGUiOiI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBCdWZmZXIgPSByZXF1aXJlKCdidWYnICsgJ2ZlcicpLkJ1ZmZlcjtcbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIGlmIChudW0gaW5zdGFuY2VvZiBCTikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bSAhPT0gbnVsbCAmJiB0eXBlb2YgbnVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgbnVtLmNvbnN0cnVjdG9yLndvcmRTaXplID09PSBCTi53b3JkU2l6ZSAmJiBBcnJheS5pc0FycmF5KG51bS53b3Jkcyk7XG4gIH07XG5cbiAgQk4ubWF4ID0gZnVuY3Rpb24gbWF4IChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPiAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ubWluID0gZnVuY3Rpb24gbWluIChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPCAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdCAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0QXJyYXkobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAnaGV4Jykge1xuICAgICAgYmFzZSA9IDE2O1xuICAgIH1cbiAgICBhc3NlcnQoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNik7XG5cbiAgICBudW1iZXIgPSBudW1iZXIudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgc3RhcnQrKztcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgfVxuXG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleCAoc3RyLCBzdGFydCwgZW5kKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgPDw9IDQ7XG5cbiAgICAgIC8vICdhJyAtICdmJ1xuICAgICAgaWYgKGMgPj0gNDkgJiYgYyA8PSA1NCkge1xuICAgICAgICByIHw9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnIC0gJ0YnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcgJiYgYyA8PSAyMikge1xuICAgICAgICByIHw9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByIHw9IGMgJiAweGY7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCkge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIC8vIFNjYW4gMjQtYml0IGNodW5rcyBhbmQgYWRkIHRoZW0gdG8gdGhlIG51bWJlclxuICAgIHZhciBvZmYgPSAwO1xuICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSA2LCBqID0gMDsgaSA+PSBzdGFydDsgaSAtPSA2KSB7XG4gICAgICB3ID0gcGFyc2VIZXgobnVtYmVyLCBpLCBpICsgNik7XG4gICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAvLyBOT1RFOiBgMHgzZmZmZmZgIGlzIGludGVudGlvbmFsIGhlcmUsIDI2Yml0cyBtYXggc2hpZnQgKyAyNGJpdCBoZXggbGltYlxuICAgICAgdGhpcy53b3Jkc1tqICsgMV0gfD0gdyA+Pj4gKDI2IC0gb2ZmKSAmIDB4M2ZmZmZmO1xuICAgICAgb2ZmICs9IDI0O1xuICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgIGorKztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGkgKyA2ICE9PSBzdGFydCkge1xuICAgICAgdyA9IHBhcnNlSGV4KG51bWJlciwgc3RhcnQsIGkgKyA2KTtcbiAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaiArIDFdIHw9IHcgPj4+ICgyNiAtIG9mZikgJiAweDNmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgci5zdHJpcCgpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICAgIHJldHVybiBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tLnN1YihhKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5zdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zaGwgPSBmdW5jdGlvbiBzaGwgKGEsIG51bSkge1xuICAgIHRoaXMuX3ZlcmlmeTEoYSk7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLnVzaGxuKG51bSkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5pbXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLm11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLmltdWwoYSwgYS5jbG9uZSgpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLm11bChhLCBhKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0IChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgbW9kMyA9IHRoaXMubS5hbmRsbigzKTtcbiAgICBhc3NlcnQobW9kMyAlIDIgPT09IDEpO1xuXG4gICAgLy8gRmFzdCBjYXNlXG4gICAgaWYgKG1vZDMgPT09IDMpIHtcbiAgICAgIHZhciBwb3cgPSB0aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO1xuICAgICAgcmV0dXJuIHRoaXMucG93KGEsIHBvdyk7XG4gICAgfVxuXG4gICAgLy8gVG9uZWxsaS1TaGFua3MgYWxnb3JpdGhtIChUb3RhbGx5IHVub3B0aW1pemVkIGFuZCBzbG93KVxuICAgIC8vXG4gICAgLy8gRmluZCBRIGFuZCBTLCB0aGF0IFEgKiAyIF4gUyA9IChQIC0gMSlcbiAgICB2YXIgcSA9IHRoaXMubS5zdWJuKDEpO1xuICAgIHZhciBzID0gMDtcbiAgICB3aGlsZSAoIXEuaXNaZXJvKCkgJiYgcS5hbmRsbigxKSA9PT0gMCkge1xuICAgICAgcysrO1xuICAgICAgcS5pdXNocm4oMSk7XG4gICAgfVxuICAgIGFzc2VydCghcS5pc1plcm8oKSk7XG5cbiAgICB2YXIgb25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHZhciBuT25lID0gb25lLnJlZE5lZygpO1xuXG4gICAgLy8gRmluZCBxdWFkcmF0aWMgbm9uLXJlc2lkdWVcbiAgICAvLyBOT1RFOiBNYXggaXMgc3VjaCBiZWNhdXNlIG9mIGdlbmVyYWxpemVkIFJpZW1hbm4gaHlwb3RoZXNpcy5cbiAgICB2YXIgbHBvdyA9IHRoaXMubS5zdWJuKDEpLml1c2hybigxKTtcbiAgICB2YXIgeiA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICB6ID0gbmV3IEJOKDIgKiB6ICogeikudG9SZWQodGhpcyk7XG5cbiAgICB3aGlsZSAodGhpcy5wb3coeiwgbHBvdykuY21wKG5PbmUpICE9PSAwKSB7XG4gICAgICB6LnJlZElBZGQobk9uZSk7XG4gICAgfVxuXG4gICAgdmFyIGMgPSB0aGlzLnBvdyh6LCBxKTtcbiAgICB2YXIgciA9IHRoaXMucG93KGEsIHEuYWRkbigxKS5pdXNocm4oMSkpO1xuICAgIHZhciB0ID0gdGhpcy5wb3coYSwgcSk7XG4gICAgdmFyIG0gPSBzO1xuICAgIHdoaWxlICh0LmNtcChvbmUpICE9PSAwKSB7XG4gICAgICB2YXIgdG1wID0gdDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyB0bXAuY21wKG9uZSkgIT09IDA7IGkrKykge1xuICAgICAgICB0bXAgPSB0bXAucmVkU3FyKCk7XG4gICAgICB9XG4gICAgICBhc3NlcnQoaSA8IG0pO1xuICAgICAgdmFyIGIgPSB0aGlzLnBvdyhjLCBuZXcgQk4oMSkuaXVzaGxuKG0gLSBpIC0gMSkpO1xuXG4gICAgICByID0gci5yZWRNdWwoYik7XG4gICAgICBjID0gYi5yZWRTcXIoKTtcbiAgICAgIHQgPSB0LnJlZE11bChjKTtcbiAgICAgIG0gPSBpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICB2YXIgaW52ID0gYS5faW52bXAodGhpcy5tKTtcbiAgICBpZiAoaW52Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpbnYubmVnYXRpdmUgPSAwO1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpLnJlZE5lZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludik7XG4gICAgfVxuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChhLCBudW0pIHtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDEpO1xuICAgIGlmIChudW0uY21wbigxKSA9PT0gMCkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciB3aW5kb3dTaXplID0gNDtcbiAgICB2YXIgd25kID0gbmV3IEFycmF5KDEgPDwgd2luZG93U2l6ZSk7XG4gICAgd25kWzBdID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHduZFsxXSA9IGE7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCB3bmQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHduZFtpXSA9IHRoaXMubXVsKHduZFtpIC0gMV0sIGEpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB3bmRbMF07XG4gICAgdmFyIGN1cnJlbnQgPSAwO1xuICAgIHZhciBjdXJyZW50TGVuID0gMDtcbiAgICB2YXIgc3RhcnQgPSBudW0uYml0TGVuZ3RoKCkgJSAyNjtcbiAgICBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgZm9yIChpID0gbnVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IG51bS53b3Jkc1tpXTtcbiAgICAgIGZvciAodmFyIGogPSBzdGFydCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBiaXQgPSAod29yZCA+PiBqKSAmIDE7XG4gICAgICAgIGlmIChyZXMgIT09IHduZFswXSkge1xuICAgICAgICAgIHJlcyA9IHRoaXMuc3FyKHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0ID09PSAwICYmIGN1cnJlbnQgPT09IDApIHtcbiAgICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnQgPDw9IDE7XG4gICAgICAgIGN1cnJlbnQgfD0gYml0O1xuICAgICAgICBjdXJyZW50TGVuKys7XG4gICAgICAgIGlmIChjdXJyZW50TGVuICE9PSB3aW5kb3dTaXplICYmIChpICE9PSAwIHx8IGogIT09IDApKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSB0aGlzLm11bChyZXMsIHduZFtjdXJyZW50XSk7XG4gICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICBjdXJyZW50ID0gMDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgdmFyIHIgPSBudW0udW1vZCh0aGlzLm0pO1xuXG4gICAgcmV0dXJuIHIgPT09IG51bSA/IHIuY2xvbmUoKSA6IHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgcmVzID0gbnVtLmNsb25lKCk7XG4gICAgcmVzLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvL1xuICAvLyBNb250Z29tZXJ5IG1ldGhvZCBlbmdpbmVcbiAgLy9cblxuICBCTi5tb250ID0gZnVuY3Rpb24gbW9udCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBNb250KG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gTW9udCAobSkge1xuICAgIFJlZC5jYWxsKHRoaXMsIG0pO1xuXG4gICAgdGhpcy5zaGlmdCA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5zaGlmdCAlIDI2ICE9PSAwKSB7XG4gICAgICB0aGlzLnNoaWZ0ICs9IDI2IC0gKHRoaXMuc2hpZnQgJSAyNik7XG4gICAgfVxuXG4gICAgdGhpcy5yID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLnNoaWZ0KTtcbiAgICB0aGlzLnIyID0gdGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7XG4gICAgdGhpcy5yaW52ID0gdGhpcy5yLl9pbnZtcCh0aGlzLm0pO1xuXG4gICAgdGhpcy5taW52ID0gdGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO1xuICAgIHRoaXMubWludiA9IHRoaXMubWludi51bW9kKHRoaXMucik7XG4gICAgdGhpcy5taW52ID0gdGhpcy5yLnN1Yih0aGlzLm1pbnYpO1xuICB9XG4gIGluaGVyaXRzKE1vbnQsIFJlZCk7XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5pbW9kKG51bS51c2hsbih0aGlzLnNoaWZ0KSk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHIgPSB0aGlzLmltb2QobnVtLm11bCh0aGlzLnJpbnYpKTtcbiAgICByLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSB7XG4gICAgICBhLndvcmRzWzBdID0gMDtcbiAgICAgIGEubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIHZhciB0ID0gYS5pbXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuXG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIHZhciB0ID0gYS5tdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIC8vIChBUileLTEgKiBSXjIgPSAoQV4tMSAqIFJeLTEpICogUl4yID0gQV4tMSAqIFJcbiAgICB2YXIgcmVzID0gdGhpcy5pbW9kKGEuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtcbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcbn0pKHR5cGVvZiBtb2R1bGUgPT09ICd1bmRlZmluZWQnIHx8IG1vZHVsZSwgdGhpcyk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///7\n")},function(module,exports){eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL25vZGUtbGlicy1icm93c2VyL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanM/MjgyMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixVQUFVIiwiZmlsZSI6IjguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xuXG5wcm9jZXNzLmxpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBbXSB9XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8\n")},function(module,exports,__webpack_require__){"use strict";eval('\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === "function")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nObject.defineProperty(exports, "__esModule", { value: true });\nconst eventemitter3_1 = __webpack_require__(4);\nconst { logDecoder, } = __webpack_require__(6);\nconst abi_1 = __webpack_require__(3);\nconst TxReceiptPromise_1 = __webpack_require__(10);\nconst MethodMap_1 = __webpack_require__(30);\n/**\n * Contract represents a Smart Contract deployed on the blockchain.\n */\nclass Contract {\n    /**\n     * Create a Contract\n     *\n     * @param rpc - The RPC object used to access the blockchain.\n     * @param info - The deployment information about this contract generated by\n     *      [solar](https://github.com/qtumproject/solar). It includes the contract\n     *      address, owner address, and ABI definition for methods and types.\n     * @param opts - init options\n     */\n    constructor(rpc, info, opts = {}) {\n        this.rpc = rpc;\n        this.info = info;\n        this.methodMap = new MethodMap_1.MethodMap(info.abi);\n        this.address = info.address;\n        this._logDecoder = opts.logDecoder || new abi_1.ContractLogDecoder(this.info.abi);\n        this._useBigNumber = false;\n    }\n    encodeParams(method, args = []) {\n        const methodABI = this.methodMap.findMethod(method, args);\n        if (!methodABI) {\n            throw new Error(`Unknown method to call: ${method}`);\n        }\n        return abi_1.encodeInputs(methodABI, args);\n    }\n    /**\n     * Call a contract method using ABI encoding, and return the RPC result as is.\n     * This does not create a transaction. It is useful for gas estimation or\n     * getting results from read-only methods.\n     *\n     * @param method name of contract method to call\n     * @param args arguments\n     */\n    async rawCall(method, args = [], opts = {}) {\n        const calldata = this.encodeParams(method, args);\n        return this.rpc.callContract(Object.assign({ address: this.address, datahex: calldata, senderAddress: opts.senderAddress || this.info.sender }, opts));\n    }\n    /**\n     * Executes contract method on your own local qtumd node as a "simulation"\n     * using `callcontract`. It is free, and does not actually modify the\n     * blockchain.\n     *\n     * @param method Name of the contract method\n     * @param args Arguments for calling the method\n     * @param opts call options\n     */\n    async call(method, args = [], opts = {}) {\n        const r = await this.rawCall(method, args, opts);\n        const exception = r.executionResult.excepted;\n        if (exception !== "None") {\n            throw new Error(`Call exception: ${exception}`);\n        }\n        const output = r.executionResult.output;\n        let decodedOutputs = [];\n        if (output !== "") {\n            const methodABI = this.methodMap.findMethod(method, args);\n            decodedOutputs = abi_1.decodeOutputs(methodABI, output);\n        }\n        const decodedLogs = r.transactionReceipt.log.map((rawLog) => {\n            return this.logDecoder.decode(rawLog);\n        });\n        return Object.assign(r, {\n            outputs: decodedOutputs,\n            logs: decodedLogs,\n        });\n    }\n    /**\n     * Call a method, and return only the first return value of the method. This\n     * is a convenient syntatic sugar to get the return value when there is only\n     * one.\n     *\n     * @param method Name of the contract method\n     * @param args Arguments for calling the method\n     * @param opts call options\n     */\n    async return(method, args = [], opts = {}) {\n        const result = await this.call(method, args, opts);\n        return result.outputs[0];\n    }\n    async returnNumber(method, args = [], opts = {}) {\n        const result = await this.call(method, args, opts);\n        const val = result.outputs[0];\n        // Convert big number to JavaScript number\n        if (typeof val.toNumber !== "function") {\n            throw new Error("Cannot convert result to a number");\n        }\n        return val.toNumber();\n    }\n    /**\n     * Call a method, and return the first return value as Date. It is assumed\n     * that the returned value is unix second.\n     *\n     * @param method\n     * @param args\n     * @param opts\n     */\n    async returnDate(method, args = [], opts = {}) {\n        const result = await this.return(method, args, opts);\n        if (typeof result !== "number") {\n            throw Error("Cannot convert return value to Date. Expect return value to be a number.");\n        }\n        return new Date(result * 1000);\n    }\n    /**\n     * Call a method, and return the first return value (a uint). Convert the value to\n     * the desired currency unit.\n     *\n     * @param targetBase The currency unit to convert to. If a number, it is\n     * treated as the power of 10. -8 is satoshi. 0 is the canonical unit.\n     * @param method\n     * @param args\n     * @param opts\n     */\n    async returnCurrency(targetBase, method, args = [], opts = {}) {\n        const value = await this.return(method, args, opts);\n        if (typeof value !== "number") {\n            throw Error("Cannot convert return value to currency unit. Expect return value to be a number.");\n        }\n        let base = 0;\n        if (typeof targetBase === "number") {\n            base = targetBase;\n        }\n        else {\n            switch (targetBase) {\n                case "qtum":\n                case "btc":\n                    base = 0;\n                    break;\n                case "sat":\n                case "satoshi":\n                    base = -8;\n                default:\n                    throw Error(`Unknown base currency unit: ${targetBase}`);\n            }\n        }\n        const satoshi = 1e-8;\n        return value * satoshi / (10 ** base);\n    }\n    async returnAs(converter, method, args = [], opts = {}) {\n        const value = await this.return(method, args, opts);\n        return await converter(value);\n    }\n    /**\n     * Create a transaction that calls a method using ABI encoding, and return the\n     * RPC result as is. A transaction will require network consensus to confirm,\n     * and costs you gas.\n     *\n     * @param method name of contract method to call\n     * @param args arguments\n     */\n    async rawSend(method, args, opts = {}) {\n        // TODO opts: gas limit, gas price, sender address\n        const methodABI = this.methodMap.findMethod(method, args);\n        if (methodABI == null) {\n            throw new Error(`Unknown method to send: ${method}`);\n        }\n        if (methodABI.constant) {\n            throw new Error(`cannot send to a constant method: ${method}`);\n        }\n        const calldata = abi_1.encodeInputs(methodABI, args);\n        return this.rpc.sendToContract(Object.assign({ address: this.address, datahex: calldata, senderAddress: opts.senderAddress || this.info.sender }, opts));\n    }\n    /**\n     * Confirms an in-wallet transaction, and return the receipt.\n     *\n     * @param txid transaction id. Must be an in-wallet transaction\n     * @param confirm how many confirmations to ensure\n     * @param onConfirm callback that receives the receipt for each additional confirmation\n     */\n    async confirm(txid, confirm, onConfirm) {\n        const txrp = new TxReceiptPromise_1.TxReceiptPromise(this.rpc, txid);\n        if (onConfirm) {\n            txrp.onConfirm((tx2, receipt2) => {\n                const sendTxReceipt = this._makeSendTxReceipt(receipt2);\n                onConfirm(tx2, sendTxReceipt);\n            });\n        }\n        const receipt = await txrp.confirm(confirm);\n        return this._makeSendTxReceipt(receipt);\n    }\n    /**\n     * Returns the receipt for a transaction, with decoded event logs.\n     *\n     * @param txid transaction id. Must be an in-wallet transaction\n     * @returns The receipt, or null if transaction is not yet confirmed.\n     */\n    async receipt(txid) {\n        const receipt = await this.rpc.getTransactionReceipt({ txid });\n        if (!receipt) {\n            return null;\n        }\n        return this._makeSendTxReceipt(receipt);\n    }\n    async send(method, args = [], opts = {}) {\n        const methodABI = this.methodMap.findMethod(method, args);\n        if (methodABI == null) {\n            throw new Error(`Unknown method to send: ${method}`);\n        }\n        if (methodABI.constant) {\n            throw new Error(`cannot send to a constant method: ${method}`);\n        }\n        const calldata = abi_1.encodeInputs(methodABI, args);\n        const sent = await this.rpc.sendToContract(Object.assign({ datahex: calldata, address: this.address, senderAddress: opts.senderAddress || this.info.sender }, opts));\n        const txid = sent.txid;\n        const txinfo = await this.rpc.getTransaction({ txid });\n        const sendTx = Object.assign({}, txinfo, { method, confirm: (n, handler) => {\n                return this.confirm(txid, n, handler);\n            } });\n        return sendTx;\n    }\n    /**\n     * Get contract event logs, up to the latest block. By default, it starts looking\n     * for logs from the beginning of the blockchain.\n     * @param req\n     */\n    async logs(req = {}) {\n        return this.waitLogs(Object.assign({ fromBlock: 0, toBlock: "latest" }, req));\n    }\n    /**\n     * Get contract event logs. Long-poll wait if no log is found.\n     * @param req (optional) IRPCWaitForLogsRequest\n     */\n    async waitLogs(req = {}) {\n        const filter = req.filter || {};\n        if (!filter.addresses) {\n            filter.addresses = [this.address];\n        }\n        const result = await this.rpc.waitforlogs(Object.assign({}, req, { filter }));\n        const entries = result.entries.map((entry) => {\n            const parsedLog = this.logDecoder.decode(entry);\n            return Object.assign({}, entry, { event: parsedLog });\n        });\n        return Object.assign({}, result, { entries });\n    }\n    /**\n     * Subscribe to contract\'s events, using callback interface.\n     */\n    onLog(fn, opts = {}) {\n        let nextblock = opts.fromBlock || "latest";\n        const loop = async () => {\n            while (true) {\n                const result = await this.waitLogs(Object.assign({}, opts, { fromBlock: nextblock }));\n                for (const entry of result.entries) {\n                    fn(entry);\n                }\n                nextblock = result.nextblock;\n            }\n        };\n        loop();\n    }\n    /**\n     * Subscribe to contract\'s events, use EventsEmitter interface.\n     */\n    logEmitter(opts = {}) {\n        const emitter = new eventemitter3_1.EventEmitter();\n        this.onLog((entry) => {\n            const key = (entry.event && entry.event.type) || "?";\n            emitter.emit(key, entry);\n        }, opts);\n        return emitter;\n    }\n    get logDecoder() {\n        return this._logDecoder;\n    }\n    _makeSendTxReceipt(receipt) {\n        // https://stackoverflow.com/a/34710102\n        // ...receiptNoLog will be a copy of receipt, without the `log` property\n        const { log: rawlogs } = receipt, receiptNoLog = __rest(receipt, ["log"]);\n        const logs = rawlogs.map((rawLog) => this.logDecoder.decode(rawLog));\n        return Object.assign({}, receiptNoLog, { logs,\n            rawlogs });\n    }\n}\nexports.Contract = Contract;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvQ29udHJhY3QuanM/NGJlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsY0FBYztBQUMxRTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsY0FBYztBQUM1RCx3QkFBd0IsbUJBQU8sQ0FBQyxDQUFlO0FBQy9DLE9BQU8sY0FBYyxHQUFHLG1CQUFPLENBQUMsQ0FBa0I7QUFDbEQsY0FBYyxtQkFBTyxDQUFDLENBQU87QUFDN0IsMkJBQTJCLG1CQUFPLENBQUMsRUFBb0I7QUFDdkQsb0JBQW9CLG1CQUFPLENBQUMsRUFBYTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxPQUFPO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQSxvREFBb0Qsa0dBQWtHO0FBQ3RKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxVQUFVO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxXQUFXO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQSx1REFBdUQsT0FBTztBQUM5RDtBQUNBO0FBQ0EsaUVBQWlFLE9BQU87QUFDeEU7QUFDQTtBQUNBLHNEQUFzRCxrR0FBa0c7QUFDeEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThELE9BQU87QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0EsdURBQXVELE9BQU87QUFDOUQ7QUFDQTtBQUNBLGlFQUFpRSxPQUFPO0FBQ3hFO0FBQ0E7QUFDQSxrRUFBa0Usa0dBQWtHO0FBQ3BLO0FBQ0Esc0RBQXNELE9BQU87QUFDN0QsdUNBQXVDLFdBQVc7QUFDbEQ7QUFDQSxhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2Qiw0Q0FBNEMsa0NBQWtDO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsUUFBUSxTQUFTO0FBQ25GO0FBQ0E7QUFDQSxtQ0FBbUMsVUFBVSxtQkFBbUI7QUFDaEUsU0FBUztBQUNULCtCQUErQixXQUFXLFVBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FLFNBQVMsdUJBQXVCO0FBQ25HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsZUFBZTtBQUM5QjtBQUNBLCtCQUErQixpQkFBaUI7QUFDaEQscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSIsImZpbGUiOiI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMClcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgIHJldHVybiB0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IGV2ZW50ZW1pdHRlcjNfMSA9IHJlcXVpcmUoXCJldmVudGVtaXR0ZXIzXCIpO1xuY29uc3QgeyBsb2dEZWNvZGVyLCB9ID0gcmVxdWlyZShcInF0dW1qcy1ldGhqcy1hYmlcIik7XG5jb25zdCBhYmlfMSA9IHJlcXVpcmUoXCIuL2FiaVwiKTtcbmNvbnN0IFR4UmVjZWlwdFByb21pc2VfMSA9IHJlcXVpcmUoXCIuL1R4UmVjZWlwdFByb21pc2VcIik7XG5jb25zdCBNZXRob2RNYXBfMSA9IHJlcXVpcmUoXCIuL01ldGhvZE1hcFwiKTtcbi8qKlxuICogQ29udHJhY3QgcmVwcmVzZW50cyBhIFNtYXJ0IENvbnRyYWN0IGRlcGxveWVkIG9uIHRoZSBibG9ja2NoYWluLlxuICovXG5jbGFzcyBDb250cmFjdCB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgQ29udHJhY3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBycGMgLSBUaGUgUlBDIG9iamVjdCB1c2VkIHRvIGFjY2VzcyB0aGUgYmxvY2tjaGFpbi5cbiAgICAgKiBAcGFyYW0gaW5mbyAtIFRoZSBkZXBsb3ltZW50IGluZm9ybWF0aW9uIGFib3V0IHRoaXMgY29udHJhY3QgZ2VuZXJhdGVkIGJ5XG4gICAgICogICAgICBbc29sYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9xdHVtcHJvamVjdC9zb2xhcikuIEl0IGluY2x1ZGVzIHRoZSBjb250cmFjdFxuICAgICAqICAgICAgYWRkcmVzcywgb3duZXIgYWRkcmVzcywgYW5kIEFCSSBkZWZpbml0aW9uIGZvciBtZXRob2RzIGFuZCB0eXBlcy5cbiAgICAgKiBAcGFyYW0gb3B0cyAtIGluaXQgb3B0aW9uc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJwYywgaW5mbywgb3B0cyA9IHt9KSB7XG4gICAgICAgIHRoaXMucnBjID0gcnBjO1xuICAgICAgICB0aGlzLmluZm8gPSBpbmZvO1xuICAgICAgICB0aGlzLm1ldGhvZE1hcCA9IG5ldyBNZXRob2RNYXBfMS5NZXRob2RNYXAoaW5mby5hYmkpO1xuICAgICAgICB0aGlzLmFkZHJlc3MgPSBpbmZvLmFkZHJlc3M7XG4gICAgICAgIHRoaXMuX2xvZ0RlY29kZXIgPSBvcHRzLmxvZ0RlY29kZXIgfHwgbmV3IGFiaV8xLkNvbnRyYWN0TG9nRGVjb2Rlcih0aGlzLmluZm8uYWJpKTtcbiAgICAgICAgdGhpcy5fdXNlQmlnTnVtYmVyID0gZmFsc2U7XG4gICAgfVxuICAgIGVuY29kZVBhcmFtcyhtZXRob2QsIGFyZ3MgPSBbXSkge1xuICAgICAgICBjb25zdCBtZXRob2RBQkkgPSB0aGlzLm1ldGhvZE1hcC5maW5kTWV0aG9kKG1ldGhvZCwgYXJncyk7XG4gICAgICAgIGlmICghbWV0aG9kQUJJKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbWV0aG9kIHRvIGNhbGw6ICR7bWV0aG9kfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhYmlfMS5lbmNvZGVJbnB1dHMobWV0aG9kQUJJLCBhcmdzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbCBhIGNvbnRyYWN0IG1ldGhvZCB1c2luZyBBQkkgZW5jb2RpbmcsIGFuZCByZXR1cm4gdGhlIFJQQyByZXN1bHQgYXMgaXMuXG4gICAgICogVGhpcyBkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbi4gSXQgaXMgdXNlZnVsIGZvciBnYXMgZXN0aW1hdGlvbiBvclxuICAgICAqIGdldHRpbmcgcmVzdWx0cyBmcm9tIHJlYWQtb25seSBtZXRob2RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1ldGhvZCBuYW1lIG9mIGNvbnRyYWN0IG1ldGhvZCB0byBjYWxsXG4gICAgICogQHBhcmFtIGFyZ3MgYXJndW1lbnRzXG4gICAgICovXG4gICAgYXN5bmMgcmF3Q2FsbChtZXRob2QsIGFyZ3MgPSBbXSwgb3B0cyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGNhbGxkYXRhID0gdGhpcy5lbmNvZGVQYXJhbXMobWV0aG9kLCBhcmdzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucnBjLmNhbGxDb250cmFjdChPYmplY3QuYXNzaWduKHsgYWRkcmVzczogdGhpcy5hZGRyZXNzLCBkYXRhaGV4OiBjYWxsZGF0YSwgc2VuZGVyQWRkcmVzczogb3B0cy5zZW5kZXJBZGRyZXNzIHx8IHRoaXMuaW5mby5zZW5kZXIgfSwgb3B0cykpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBjb250cmFjdCBtZXRob2Qgb24geW91ciBvd24gbG9jYWwgcXR1bWQgbm9kZSBhcyBhIFwic2ltdWxhdGlvblwiXG4gICAgICogdXNpbmcgYGNhbGxjb250cmFjdGAuIEl0IGlzIGZyZWUsIGFuZCBkb2VzIG5vdCBhY3R1YWxseSBtb2RpZnkgdGhlXG4gICAgICogYmxvY2tjaGFpbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtZXRob2QgTmFtZSBvZiB0aGUgY29udHJhY3QgbWV0aG9kXG4gICAgICogQHBhcmFtIGFyZ3MgQXJndW1lbnRzIGZvciBjYWxsaW5nIHRoZSBtZXRob2RcbiAgICAgKiBAcGFyYW0gb3B0cyBjYWxsIG9wdGlvbnNcbiAgICAgKi9cbiAgICBhc3luYyBjYWxsKG1ldGhvZCwgYXJncyA9IFtdLCBvcHRzID0ge30pIHtcbiAgICAgICAgY29uc3QgciA9IGF3YWl0IHRoaXMucmF3Q2FsbChtZXRob2QsIGFyZ3MsIG9wdHMpO1xuICAgICAgICBjb25zdCBleGNlcHRpb24gPSByLmV4ZWN1dGlvblJlc3VsdC5leGNlcHRlZDtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbiAhPT0gXCJOb25lXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FsbCBleGNlcHRpb246ICR7ZXhjZXB0aW9ufWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IHIuZXhlY3V0aW9uUmVzdWx0Lm91dHB1dDtcbiAgICAgICAgbGV0IGRlY29kZWRPdXRwdXRzID0gW107XG4gICAgICAgIGlmIChvdXRwdXQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZEFCSSA9IHRoaXMubWV0aG9kTWFwLmZpbmRNZXRob2QobWV0aG9kLCBhcmdzKTtcbiAgICAgICAgICAgIGRlY29kZWRPdXRwdXRzID0gYWJpXzEuZGVjb2RlT3V0cHV0cyhtZXRob2RBQkksIG91dHB1dCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVjb2RlZExvZ3MgPSByLnRyYW5zYWN0aW9uUmVjZWlwdC5sb2cubWFwKChyYXdMb2cpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvZ0RlY29kZXIuZGVjb2RlKHJhd0xvZyk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihyLCB7XG4gICAgICAgICAgICBvdXRwdXRzOiBkZWNvZGVkT3V0cHV0cyxcbiAgICAgICAgICAgIGxvZ3M6IGRlY29kZWRMb2dzLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbCBhIG1ldGhvZCwgYW5kIHJldHVybiBvbmx5IHRoZSBmaXJzdCByZXR1cm4gdmFsdWUgb2YgdGhlIG1ldGhvZC4gVGhpc1xuICAgICAqIGlzIGEgY29udmVuaWVudCBzeW50YXRpYyBzdWdhciB0byBnZXQgdGhlIHJldHVybiB2YWx1ZSB3aGVuIHRoZXJlIGlzIG9ubHlcbiAgICAgKiBvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWV0aG9kIE5hbWUgb2YgdGhlIGNvbnRyYWN0IG1ldGhvZFxuICAgICAqIEBwYXJhbSBhcmdzIEFyZ3VtZW50cyBmb3IgY2FsbGluZyB0aGUgbWV0aG9kXG4gICAgICogQHBhcmFtIG9wdHMgY2FsbCBvcHRpb25zXG4gICAgICovXG4gICAgYXN5bmMgcmV0dXJuKG1ldGhvZCwgYXJncyA9IFtdLCBvcHRzID0ge30pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jYWxsKG1ldGhvZCwgYXJncywgb3B0cyk7XG4gICAgICAgIHJldHVybiByZXN1bHQub3V0cHV0c1swXTtcbiAgICB9XG4gICAgYXN5bmMgcmV0dXJuTnVtYmVyKG1ldGhvZCwgYXJncyA9IFtdLCBvcHRzID0ge30pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jYWxsKG1ldGhvZCwgYXJncywgb3B0cyk7XG4gICAgICAgIGNvbnN0IHZhbCA9IHJlc3VsdC5vdXRwdXRzWzBdO1xuICAgICAgICAvLyBDb252ZXJ0IGJpZyBudW1iZXIgdG8gSmF2YVNjcmlwdCBudW1iZXJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwudG9OdW1iZXIgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNvbnZlcnQgcmVzdWx0IHRvIGEgbnVtYmVyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWwudG9OdW1iZXIoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbCBhIG1ldGhvZCwgYW5kIHJldHVybiB0aGUgZmlyc3QgcmV0dXJuIHZhbHVlIGFzIERhdGUuIEl0IGlzIGFzc3VtZWRcbiAgICAgKiB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZSBpcyB1bml4IHNlY29uZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtZXRob2RcbiAgICAgKiBAcGFyYW0gYXJnc1xuICAgICAqIEBwYXJhbSBvcHRzXG4gICAgICovXG4gICAgYXN5bmMgcmV0dXJuRGF0ZShtZXRob2QsIGFyZ3MgPSBbXSwgb3B0cyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmV0dXJuKG1ldGhvZCwgYXJncywgb3B0cyk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcIkNhbm5vdCBjb252ZXJ0IHJldHVybiB2YWx1ZSB0byBEYXRlLiBFeHBlY3QgcmV0dXJuIHZhbHVlIHRvIGJlIGEgbnVtYmVyLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERhdGUocmVzdWx0ICogMTAwMCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGwgYSBtZXRob2QsIGFuZCByZXR1cm4gdGhlIGZpcnN0IHJldHVybiB2YWx1ZSAoYSB1aW50KS4gQ29udmVydCB0aGUgdmFsdWUgdG9cbiAgICAgKiB0aGUgZGVzaXJlZCBjdXJyZW5jeSB1bml0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldEJhc2UgVGhlIGN1cnJlbmN5IHVuaXQgdG8gY29udmVydCB0by4gSWYgYSBudW1iZXIsIGl0IGlzXG4gICAgICogdHJlYXRlZCBhcyB0aGUgcG93ZXIgb2YgMTAuIC04IGlzIHNhdG9zaGkuIDAgaXMgdGhlIGNhbm9uaWNhbCB1bml0LlxuICAgICAqIEBwYXJhbSBtZXRob2RcbiAgICAgKiBAcGFyYW0gYXJnc1xuICAgICAqIEBwYXJhbSBvcHRzXG4gICAgICovXG4gICAgYXN5bmMgcmV0dXJuQ3VycmVuY3kodGFyZ2V0QmFzZSwgbWV0aG9kLCBhcmdzID0gW10sIG9wdHMgPSB7fSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMucmV0dXJuKG1ldGhvZCwgYXJncywgb3B0cyk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwiQ2Fubm90IGNvbnZlcnQgcmV0dXJuIHZhbHVlIHRvIGN1cnJlbmN5IHVuaXQuIEV4cGVjdCByZXR1cm4gdmFsdWUgdG8gYmUgYSBudW1iZXIuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBiYXNlID0gMDtcbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXRCYXNlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBiYXNlID0gdGFyZ2V0QmFzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0QmFzZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJxdHVtXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcImJ0Y1wiOlxuICAgICAgICAgICAgICAgICAgICBiYXNlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInNhdFwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJzYXRvc2hpXCI6XG4gICAgICAgICAgICAgICAgICAgIGJhc2UgPSAtODtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5rbm93biBiYXNlIGN1cnJlbmN5IHVuaXQ6ICR7dGFyZ2V0QmFzZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzYXRvc2hpID0gMWUtODtcbiAgICAgICAgcmV0dXJuIHZhbHVlICogc2F0b3NoaSAvICgxMCAqKiBiYXNlKTtcbiAgICB9XG4gICAgYXN5bmMgcmV0dXJuQXMoY29udmVydGVyLCBtZXRob2QsIGFyZ3MgPSBbXSwgb3B0cyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5yZXR1cm4obWV0aG9kLCBhcmdzLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNvbnZlcnRlcih2YWx1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIHRyYW5zYWN0aW9uIHRoYXQgY2FsbHMgYSBtZXRob2QgdXNpbmcgQUJJIGVuY29kaW5nLCBhbmQgcmV0dXJuIHRoZVxuICAgICAqIFJQQyByZXN1bHQgYXMgaXMuIEEgdHJhbnNhY3Rpb24gd2lsbCByZXF1aXJlIG5ldHdvcmsgY29uc2Vuc3VzIHRvIGNvbmZpcm0sXG4gICAgICogYW5kIGNvc3RzIHlvdSBnYXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWV0aG9kIG5hbWUgb2YgY29udHJhY3QgbWV0aG9kIHRvIGNhbGxcbiAgICAgKiBAcGFyYW0gYXJncyBhcmd1bWVudHNcbiAgICAgKi9cbiAgICBhc3luYyByYXdTZW5kKG1ldGhvZCwgYXJncywgb3B0cyA9IHt9KSB7XG4gICAgICAgIC8vIFRPRE8gb3B0czogZ2FzIGxpbWl0LCBnYXMgcHJpY2UsIHNlbmRlciBhZGRyZXNzXG4gICAgICAgIGNvbnN0IG1ldGhvZEFCSSA9IHRoaXMubWV0aG9kTWFwLmZpbmRNZXRob2QobWV0aG9kLCBhcmdzKTtcbiAgICAgICAgaWYgKG1ldGhvZEFCSSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbWV0aG9kIHRvIHNlbmQ6ICR7bWV0aG9kfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXRob2RBQkkuY29uc3RhbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHNlbmQgdG8gYSBjb25zdGFudCBtZXRob2Q6ICR7bWV0aG9kfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhbGxkYXRhID0gYWJpXzEuZW5jb2RlSW5wdXRzKG1ldGhvZEFCSSwgYXJncyk7XG4gICAgICAgIHJldHVybiB0aGlzLnJwYy5zZW5kVG9Db250cmFjdChPYmplY3QuYXNzaWduKHsgYWRkcmVzczogdGhpcy5hZGRyZXNzLCBkYXRhaGV4OiBjYWxsZGF0YSwgc2VuZGVyQWRkcmVzczogb3B0cy5zZW5kZXJBZGRyZXNzIHx8IHRoaXMuaW5mby5zZW5kZXIgfSwgb3B0cykpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb25maXJtcyBhbiBpbi13YWxsZXQgdHJhbnNhY3Rpb24sIGFuZCByZXR1cm4gdGhlIHJlY2VpcHQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHhpZCB0cmFuc2FjdGlvbiBpZC4gTXVzdCBiZSBhbiBpbi13YWxsZXQgdHJhbnNhY3Rpb25cbiAgICAgKiBAcGFyYW0gY29uZmlybSBob3cgbWFueSBjb25maXJtYXRpb25zIHRvIGVuc3VyZVxuICAgICAqIEBwYXJhbSBvbkNvbmZpcm0gY2FsbGJhY2sgdGhhdCByZWNlaXZlcyB0aGUgcmVjZWlwdCBmb3IgZWFjaCBhZGRpdGlvbmFsIGNvbmZpcm1hdGlvblxuICAgICAqL1xuICAgIGFzeW5jIGNvbmZpcm0odHhpZCwgY29uZmlybSwgb25Db25maXJtKSB7XG4gICAgICAgIGNvbnN0IHR4cnAgPSBuZXcgVHhSZWNlaXB0UHJvbWlzZV8xLlR4UmVjZWlwdFByb21pc2UodGhpcy5ycGMsIHR4aWQpO1xuICAgICAgICBpZiAob25Db25maXJtKSB7XG4gICAgICAgICAgICB0eHJwLm9uQ29uZmlybSgodHgyLCByZWNlaXB0MikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbmRUeFJlY2VpcHQgPSB0aGlzLl9tYWtlU2VuZFR4UmVjZWlwdChyZWNlaXB0Mik7XG4gICAgICAgICAgICAgICAgb25Db25maXJtKHR4Miwgc2VuZFR4UmVjZWlwdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWNlaXB0ID0gYXdhaXQgdHhycC5jb25maXJtKGNvbmZpcm0pO1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFrZVNlbmRUeFJlY2VpcHQocmVjZWlwdCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJlY2VpcHQgZm9yIGEgdHJhbnNhY3Rpb24sIHdpdGggZGVjb2RlZCBldmVudCBsb2dzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHR4aWQgdHJhbnNhY3Rpb24gaWQuIE11c3QgYmUgYW4gaW4td2FsbGV0IHRyYW5zYWN0aW9uXG4gICAgICogQHJldHVybnMgVGhlIHJlY2VpcHQsIG9yIG51bGwgaWYgdHJhbnNhY3Rpb24gaXMgbm90IHlldCBjb25maXJtZWQuXG4gICAgICovXG4gICAgYXN5bmMgcmVjZWlwdCh0eGlkKSB7XG4gICAgICAgIGNvbnN0IHJlY2VpcHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRUcmFuc2FjdGlvblJlY2VpcHQoeyB0eGlkIH0pO1xuICAgICAgICBpZiAoIXJlY2VpcHQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9tYWtlU2VuZFR4UmVjZWlwdChyZWNlaXB0KTtcbiAgICB9XG4gICAgYXN5bmMgc2VuZChtZXRob2QsIGFyZ3MgPSBbXSwgb3B0cyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IG1ldGhvZEFCSSA9IHRoaXMubWV0aG9kTWFwLmZpbmRNZXRob2QobWV0aG9kLCBhcmdzKTtcbiAgICAgICAgaWYgKG1ldGhvZEFCSSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbWV0aG9kIHRvIHNlbmQ6ICR7bWV0aG9kfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXRob2RBQkkuY29uc3RhbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHNlbmQgdG8gYSBjb25zdGFudCBtZXRob2Q6ICR7bWV0aG9kfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhbGxkYXRhID0gYWJpXzEuZW5jb2RlSW5wdXRzKG1ldGhvZEFCSSwgYXJncyk7XG4gICAgICAgIGNvbnN0IHNlbnQgPSBhd2FpdCB0aGlzLnJwYy5zZW5kVG9Db250cmFjdChPYmplY3QuYXNzaWduKHsgZGF0YWhleDogY2FsbGRhdGEsIGFkZHJlc3M6IHRoaXMuYWRkcmVzcywgc2VuZGVyQWRkcmVzczogb3B0cy5zZW5kZXJBZGRyZXNzIHx8IHRoaXMuaW5mby5zZW5kZXIgfSwgb3B0cykpO1xuICAgICAgICBjb25zdCB0eGlkID0gc2VudC50eGlkO1xuICAgICAgICBjb25zdCB0eGluZm8gPSBhd2FpdCB0aGlzLnJwYy5nZXRUcmFuc2FjdGlvbih7IHR4aWQgfSk7XG4gICAgICAgIGNvbnN0IHNlbmRUeCA9IE9iamVjdC5hc3NpZ24oe30sIHR4aW5mbywgeyBtZXRob2QsIGNvbmZpcm06IChuLCBoYW5kbGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybSh0eGlkLCBuLCBoYW5kbGVyKTtcbiAgICAgICAgICAgIH0gfSk7XG4gICAgICAgIHJldHVybiBzZW5kVHg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBjb250cmFjdCBldmVudCBsb2dzLCB1cCB0byB0aGUgbGF0ZXN0IGJsb2NrLiBCeSBkZWZhdWx0LCBpdCBzdGFydHMgbG9va2luZ1xuICAgICAqIGZvciBsb2dzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2tjaGFpbi5cbiAgICAgKiBAcGFyYW0gcmVxXG4gICAgICovXG4gICAgYXN5bmMgbG9ncyhyZXEgPSB7fSkge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0TG9ncyhPYmplY3QuYXNzaWduKHsgZnJvbUJsb2NrOiAwLCB0b0Jsb2NrOiBcImxhdGVzdFwiIH0sIHJlcSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgY29udHJhY3QgZXZlbnQgbG9ncy4gTG9uZy1wb2xsIHdhaXQgaWYgbm8gbG9nIGlzIGZvdW5kLlxuICAgICAqIEBwYXJhbSByZXEgKG9wdGlvbmFsKSBJUlBDV2FpdEZvckxvZ3NSZXF1ZXN0XG4gICAgICovXG4gICAgYXN5bmMgd2FpdExvZ3MocmVxID0ge30pIHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gcmVxLmZpbHRlciB8fCB7fTtcbiAgICAgICAgaWYgKCFmaWx0ZXIuYWRkcmVzc2VzKSB7XG4gICAgICAgICAgICBmaWx0ZXIuYWRkcmVzc2VzID0gW3RoaXMuYWRkcmVzc107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMud2FpdGZvcmxvZ3MoT2JqZWN0LmFzc2lnbih7fSwgcmVxLCB7IGZpbHRlciB9KSk7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSByZXN1bHQuZW50cmllcy5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRMb2cgPSB0aGlzLmxvZ0RlY29kZXIuZGVjb2RlKGVudHJ5KTtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBlbnRyeSwgeyBldmVudDogcGFyc2VkTG9nIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlc3VsdCwgeyBlbnRyaWVzIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gY29udHJhY3QncyBldmVudHMsIHVzaW5nIGNhbGxiYWNrIGludGVyZmFjZS5cbiAgICAgKi9cbiAgICBvbkxvZyhmbiwgb3B0cyA9IHt9KSB7XG4gICAgICAgIGxldCBuZXh0YmxvY2sgPSBvcHRzLmZyb21CbG9jayB8fCBcImxhdGVzdFwiO1xuICAgICAgICBjb25zdCBsb29wID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLndhaXRMb2dzKE9iamVjdC5hc3NpZ24oe30sIG9wdHMsIHsgZnJvbUJsb2NrOiBuZXh0YmxvY2sgfSkpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgcmVzdWx0LmVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm4oZW50cnkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXh0YmxvY2sgPSByZXN1bHQubmV4dGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBsb29wKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZSB0byBjb250cmFjdCdzIGV2ZW50cywgdXNlIEV2ZW50c0VtaXR0ZXIgaW50ZXJmYWNlLlxuICAgICAqL1xuICAgIGxvZ0VtaXR0ZXIob3B0cyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgZXZlbnRlbWl0dGVyM18xLkV2ZW50RW1pdHRlcigpO1xuICAgICAgICB0aGlzLm9uTG9nKChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gKGVudHJ5LmV2ZW50ICYmIGVudHJ5LmV2ZW50LnR5cGUpIHx8IFwiP1wiO1xuICAgICAgICAgICAgZW1pdHRlci5lbWl0KGtleSwgZW50cnkpO1xuICAgICAgICB9LCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIGVtaXR0ZXI7XG4gICAgfVxuICAgIGdldCBsb2dEZWNvZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9nRGVjb2RlcjtcbiAgICB9XG4gICAgX21ha2VTZW5kVHhSZWNlaXB0KHJlY2VpcHQpIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM0NzEwMTAyXG4gICAgICAgIC8vIC4uLnJlY2VpcHROb0xvZyB3aWxsIGJlIGEgY29weSBvZiByZWNlaXB0LCB3aXRob3V0IHRoZSBgbG9nYCBwcm9wZXJ0eVxuICAgICAgICBjb25zdCB7IGxvZzogcmF3bG9ncyB9ID0gcmVjZWlwdCwgcmVjZWlwdE5vTG9nID0gX19yZXN0KHJlY2VpcHQsIFtcImxvZ1wiXSk7XG4gICAgICAgIGNvbnN0IGxvZ3MgPSByYXdsb2dzLm1hcCgocmF3TG9nKSA9PiB0aGlzLmxvZ0RlY29kZXIuZGVjb2RlKHJhd0xvZykpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjZWlwdE5vTG9nLCB7IGxvZ3MsXG4gICAgICAgICAgICByYXdsb2dzIH0pO1xuICAgIH1cbn1cbmV4cG9ydHMuQ29udHJhY3QgPSBDb250cmFjdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n')},function(module,exports,__webpack_require__){"use strict";eval('\nObject.defineProperty(exports, "__esModule", { value: true });\nconst eventemitter3_1 = __webpack_require__(4);\nconst sleep_1 = __webpack_require__(29);\nconst EVENT_CONFIRM = "confirm";\nclass TxReceiptPromise {\n    constructor(_rpc, txid) {\n        this._rpc = _rpc;\n        this.txid = txid;\n        this._emitter = new eventemitter3_1.EventEmitter();\n    }\n    // TODO should return parsed logs with the receipt\n    async confirm(confirm = 6, opts = {}) {\n        const minconf = confirm;\n        const pollInterval = opts.pollInterval || 3000;\n        const hasTxWaitSupport = await this._rpc.checkTransactionWaitSupport();\n        // if hasTxWaitSupport, make one long-poll per confirmation\n        let curConfirmation = 1;\n        // if !hasTxWaitSupport, poll every interval until tx.confirmations increased\n        let lastConfirmation = 0;\n        while (true) {\n            const req = { txid: this.txid };\n            if (hasTxWaitSupport) {\n                req.waitconf = curConfirmation;\n            }\n            const tx = await this._rpc.getTransaction(req);\n            if (tx.confirmations > 0) {\n                const receipt = await this._rpc.getTransactionReceipt({ txid: tx.txid });\n                if (!receipt) {\n                    throw new Error("Cannot get transaction receipt");\n                }\n                // TODO augment receipt2 with parsed logs\n                const receipt2 = receipt;\n                // const ctx = new ConfirmedTransaction(this.contract.info.abi, tx, receipt)\n                if (tx.confirmations > lastConfirmation) {\n                    // confirmation increased since last check\n                    curConfirmation = tx.confirmations;\n                    this._emitter.emit(EVENT_CONFIRM, tx, receipt2);\n                    // TODO emit update event\n                    // txUpdated(ctx)\n                }\n                if (tx.confirmations >= minconf) {\n                    // reached number of required confirmations. done\n                    return receipt2;\n                }\n            }\n            lastConfirmation = tx.confirmations;\n            if (hasTxWaitSupport) {\n                // long-poll for one additional confirmation\n                curConfirmation++;\n            }\n            else {\n                await sleep_1.sleep(pollInterval + Math.random() * 200);\n            }\n        }\n    }\n    onConfirm(fn) {\n        this._emitter.on(EVENT_CONFIRM, fn);\n    }\n    offConfirm(fn) {\n        this._emitter.off(EVENT_CONFIRM, fn);\n    }\n}\nexports.TxReceiptPromise = TxReceiptPromise;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvVHhSZWNlaXB0UHJvbWlzZS5qcz83ZjlhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsd0JBQXdCLG1CQUFPLENBQUMsQ0FBZTtBQUMvQyxnQkFBZ0IsbUJBQU8sQ0FBQyxFQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUVBQXVFLGdCQUFnQjtBQUN2RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IGV2ZW50ZW1pdHRlcjNfMSA9IHJlcXVpcmUoXCJldmVudGVtaXR0ZXIzXCIpO1xuY29uc3Qgc2xlZXBfMSA9IHJlcXVpcmUoXCIuL3NsZWVwXCIpO1xuY29uc3QgRVZFTlRfQ09ORklSTSA9IFwiY29uZmlybVwiO1xuY2xhc3MgVHhSZWNlaXB0UHJvbWlzZSB7XG4gICAgY29uc3RydWN0b3IoX3JwYywgdHhpZCkge1xuICAgICAgICB0aGlzLl9ycGMgPSBfcnBjO1xuICAgICAgICB0aGlzLnR4aWQgPSB0eGlkO1xuICAgICAgICB0aGlzLl9lbWl0dGVyID0gbmV3IGV2ZW50ZW1pdHRlcjNfMS5FdmVudEVtaXR0ZXIoKTtcbiAgICB9XG4gICAgLy8gVE9ETyBzaG91bGQgcmV0dXJuIHBhcnNlZCBsb2dzIHdpdGggdGhlIHJlY2VpcHRcbiAgICBhc3luYyBjb25maXJtKGNvbmZpcm0gPSA2LCBvcHRzID0ge30pIHtcbiAgICAgICAgY29uc3QgbWluY29uZiA9IGNvbmZpcm07XG4gICAgICAgIGNvbnN0IHBvbGxJbnRlcnZhbCA9IG9wdHMucG9sbEludGVydmFsIHx8IDMwMDA7XG4gICAgICAgIGNvbnN0IGhhc1R4V2FpdFN1cHBvcnQgPSBhd2FpdCB0aGlzLl9ycGMuY2hlY2tUcmFuc2FjdGlvbldhaXRTdXBwb3J0KCk7XG4gICAgICAgIC8vIGlmIGhhc1R4V2FpdFN1cHBvcnQsIG1ha2Ugb25lIGxvbmctcG9sbCBwZXIgY29uZmlybWF0aW9uXG4gICAgICAgIGxldCBjdXJDb25maXJtYXRpb24gPSAxO1xuICAgICAgICAvLyBpZiAhaGFzVHhXYWl0U3VwcG9ydCwgcG9sbCBldmVyeSBpbnRlcnZhbCB1bnRpbCB0eC5jb25maXJtYXRpb25zIGluY3JlYXNlZFxuICAgICAgICBsZXQgbGFzdENvbmZpcm1hdGlvbiA9IDA7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCByZXEgPSB7IHR4aWQ6IHRoaXMudHhpZCB9O1xuICAgICAgICAgICAgaWYgKGhhc1R4V2FpdFN1cHBvcnQpIHtcbiAgICAgICAgICAgICAgICByZXEud2FpdGNvbmYgPSBjdXJDb25maXJtYXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMuX3JwYy5nZXRUcmFuc2FjdGlvbihyZXEpO1xuICAgICAgICAgICAgaWYgKHR4LmNvbmZpcm1hdGlvbnMgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWlwdCA9IGF3YWl0IHRoaXMuX3JwYy5nZXRUcmFuc2FjdGlvblJlY2VpcHQoeyB0eGlkOiB0eC50eGlkIH0pO1xuICAgICAgICAgICAgICAgIGlmICghcmVjZWlwdCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZ2V0IHRyYW5zYWN0aW9uIHJlY2VpcHRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRPRE8gYXVnbWVudCByZWNlaXB0MiB3aXRoIHBhcnNlZCBsb2dzXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWlwdDIgPSByZWNlaXB0O1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IGN0eCA9IG5ldyBDb25maXJtZWRUcmFuc2FjdGlvbih0aGlzLmNvbnRyYWN0LmluZm8uYWJpLCB0eCwgcmVjZWlwdClcbiAgICAgICAgICAgICAgICBpZiAodHguY29uZmlybWF0aW9ucyA+IGxhc3RDb25maXJtYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlybWF0aW9uIGluY3JlYXNlZCBzaW5jZSBsYXN0IGNoZWNrXG4gICAgICAgICAgICAgICAgICAgIGN1ckNvbmZpcm1hdGlvbiA9IHR4LmNvbmZpcm1hdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXR0ZXIuZW1pdChFVkVOVF9DT05GSVJNLCB0eCwgcmVjZWlwdDIpO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIGVtaXQgdXBkYXRlIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgIC8vIHR4VXBkYXRlZChjdHgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eC5jb25maXJtYXRpb25zID49IG1pbmNvbmYpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlZCBudW1iZXIgb2YgcmVxdWlyZWQgY29uZmlybWF0aW9ucy4gZG9uZVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjZWlwdDI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFzdENvbmZpcm1hdGlvbiA9IHR4LmNvbmZpcm1hdGlvbnM7XG4gICAgICAgICAgICBpZiAoaGFzVHhXYWl0U3VwcG9ydCkge1xuICAgICAgICAgICAgICAgIC8vIGxvbmctcG9sbCBmb3Igb25lIGFkZGl0aW9uYWwgY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgY3VyQ29uZmlybWF0aW9uKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF8xLnNsZWVwKHBvbGxJbnRlcnZhbCArIE1hdGgucmFuZG9tKCkgKiAyMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9uQ29uZmlybShmbikge1xuICAgICAgICB0aGlzLl9lbWl0dGVyLm9uKEVWRU5UX0NPTkZJUk0sIGZuKTtcbiAgICB9XG4gICAgb2ZmQ29uZmlybShmbikge1xuICAgICAgICB0aGlzLl9lbWl0dGVyLm9mZihFVkVOVF9DT05GSVJNLCBmbik7XG4gICAgfVxufVxuZXhwb3J0cy5UeFJlY2VpcHRQcm9taXNlID0gVHhSZWNlaXB0UHJvbWlzZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///10\n')},function(module,exports,__webpack_require__){"use strict";eval('\nObject.defineProperty(exports, "__esModule", { value: true });\nconst QtumRPCRaw_1 = __webpack_require__(31);\nconst sendToContractRequestDefaults = {\n    amount: 0,\n    gasLimit: 200000,\n    // FIXME: Does not support string gasPrice although the doc says it does.\n    gasPrice: 0.0000004,\n};\nclass QtumRPC extends QtumRPCRaw_1.QtumRPCRaw {\n    getInfo() {\n        return this.rawCall("getinfo");\n    }\n    sendToContract(req) {\n        const vals = Object.assign({}, sendToContractRequestDefaults, req);\n        const args = [\n            vals.address,\n            vals.datahex,\n            vals.amount,\n            vals.gasLimit,\n            vals.gasPrice,\n        ];\n        if (vals.senderAddress) {\n            args.push(vals.senderAddress);\n        }\n        return this.rawCall("sendtocontract", args);\n    }\n    callContract(req) {\n        const args = [\n            req.address,\n            req.datahex,\n        ];\n        if (req.senderAddress) {\n            args.push(req.senderAddress);\n        }\n        return this.rawCall("callcontract", args);\n    }\n    getTransaction(req) {\n        const args = [\n            req.txid,\n        ];\n        if (req.include_watchonly) {\n            args.push(req.include_watchonly);\n        }\n        else {\n            args.push(false);\n        }\n        if (req.waitconf) {\n            args.push(req.waitconf);\n        }\n        return this.rawCall("gettransaction", args);\n    }\n    async getTransactionReceipt(req) {\n        // The raw RPC API returns [] if tx id doesn\'t exist or not mined yet\n        // When transaction is mined, the API returns [receipt]\n        //\n        // We\'ll do the unwrapping here.\n        const result = await this.rawCall("gettransactionreceipt", [req.txid]);\n        if (result.length === 0) {\n            return null;\n        }\n        return result[0];\n    }\n    /**\n     * Long-poll request to get logs. Cancel the returned promise to terminate polling early.\n     */\n    waitforlogs(req = {}) {\n        const args = [\n            req.fromBlock,\n            req.toBlock,\n            req.filter,\n            req.minconf,\n        ];\n        const cancelTokenSource = this.cancelTokenSource();\n        const p = this.rawCall("waitforlogs", args, { cancelToken: cancelTokenSource.token });\n        return Object.assign(p, {\n            cancel: cancelTokenSource.cancel.bind(cancelTokenSource),\n        });\n    }\n    async searchlogs(_req = {}) {\n        const searchlogsDefaults = {\n            fromBlock: "latest",\n            toBlock: -1,\n            addresses: [],\n            topics: [],\n            minconf: 0,\n        };\n        const req = Object.assign({ searchlogsDefaults }, _req);\n        const args = [\n            req.fromBlock,\n            req.toBlock,\n            req.addresses,\n            req.topics,\n            req.minconf,\n        ];\n        return this.rawCall("searchlogs", args);\n    }\n    async checkTransactionWaitSupport() {\n        if (this._hasTxWaitSupport !== undefined) {\n            return this._hasTxWaitSupport;\n        }\n        const helpmsg = await this.rawCall("help", ["gettransaction"]);\n        this._hasTxWaitSupport = helpmsg.split("\\n")[0].indexOf("waitconf") !== -1;\n        return this._hasTxWaitSupport;\n    }\n    async fromHexAddress(hexAddress) {\n        return this.rawCall("fromhexaddress", [hexAddress]);\n    }\n    async getHexAddress(address) {\n        return this.rawCall("gethexaddress", [address]);\n    }\n}\nexports.QtumRPC = QtumRPC;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvUXR1bVJQQy5qcz80MGRkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQscUJBQXFCLG1CQUFPLENBQUMsRUFBYztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCx1Q0FBdUM7QUFDNUY7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxxQkFBcUI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IFF0dW1SUENSYXdfMSA9IHJlcXVpcmUoXCIuL1F0dW1SUENSYXdcIik7XG5jb25zdCBzZW5kVG9Db250cmFjdFJlcXVlc3REZWZhdWx0cyA9IHtcbiAgICBhbW91bnQ6IDAsXG4gICAgZ2FzTGltaXQ6IDIwMDAwMCxcbiAgICAvLyBGSVhNRTogRG9lcyBub3Qgc3VwcG9ydCBzdHJpbmcgZ2FzUHJpY2UgYWx0aG91Z2ggdGhlIGRvYyBzYXlzIGl0IGRvZXMuXG4gICAgZ2FzUHJpY2U6IDAuMDAwMDAwNCxcbn07XG5jbGFzcyBRdHVtUlBDIGV4dGVuZHMgUXR1bVJQQ1Jhd18xLlF0dW1SUENSYXcge1xuICAgIGdldEluZm8oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhd0NhbGwoXCJnZXRpbmZvXCIpO1xuICAgIH1cbiAgICBzZW5kVG9Db250cmFjdChyZXEpIHtcbiAgICAgICAgY29uc3QgdmFscyA9IE9iamVjdC5hc3NpZ24oe30sIHNlbmRUb0NvbnRyYWN0UmVxdWVzdERlZmF1bHRzLCByZXEpO1xuICAgICAgICBjb25zdCBhcmdzID0gW1xuICAgICAgICAgICAgdmFscy5hZGRyZXNzLFxuICAgICAgICAgICAgdmFscy5kYXRhaGV4LFxuICAgICAgICAgICAgdmFscy5hbW91bnQsXG4gICAgICAgICAgICB2YWxzLmdhc0xpbWl0LFxuICAgICAgICAgICAgdmFscy5nYXNQcmljZSxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKHZhbHMuc2VuZGVyQWRkcmVzcykge1xuICAgICAgICAgICAgYXJncy5wdXNoKHZhbHMuc2VuZGVyQWRkcmVzcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmF3Q2FsbChcInNlbmR0b2NvbnRyYWN0XCIsIGFyZ3MpO1xuICAgIH1cbiAgICBjYWxsQ29udHJhY3QocmVxKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICAgICAgICByZXEuYWRkcmVzcyxcbiAgICAgICAgICAgIHJlcS5kYXRhaGV4LFxuICAgICAgICBdO1xuICAgICAgICBpZiAocmVxLnNlbmRlckFkZHJlc3MpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChyZXEuc2VuZGVyQWRkcmVzcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmF3Q2FsbChcImNhbGxjb250cmFjdFwiLCBhcmdzKTtcbiAgICB9XG4gICAgZ2V0VHJhbnNhY3Rpb24ocmVxKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICAgICAgICByZXEudHhpZCxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKHJlcS5pbmNsdWRlX3dhdGNob25seSkge1xuICAgICAgICAgICAgYXJncy5wdXNoKHJlcS5pbmNsdWRlX3dhdGNob25seSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXEud2FpdGNvbmYpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChyZXEud2FpdGNvbmYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhd0NhbGwoXCJnZXR0cmFuc2FjdGlvblwiLCBhcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0VHJhbnNhY3Rpb25SZWNlaXB0KHJlcSkge1xuICAgICAgICAvLyBUaGUgcmF3IFJQQyBBUEkgcmV0dXJucyBbXSBpZiB0eCBpZCBkb2Vzbid0IGV4aXN0IG9yIG5vdCBtaW5lZCB5ZXRcbiAgICAgICAgLy8gV2hlbiB0cmFuc2FjdGlvbiBpcyBtaW5lZCwgdGhlIEFQSSByZXR1cm5zIFtyZWNlaXB0XVxuICAgICAgICAvL1xuICAgICAgICAvLyBXZSdsbCBkbyB0aGUgdW53cmFwcGluZyBoZXJlLlxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJhd0NhbGwoXCJnZXR0cmFuc2FjdGlvbnJlY2VpcHRcIiwgW3JlcS50eGlkXSk7XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0WzBdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMb25nLXBvbGwgcmVxdWVzdCB0byBnZXQgbG9ncy4gQ2FuY2VsIHRoZSByZXR1cm5lZCBwcm9taXNlIHRvIHRlcm1pbmF0ZSBwb2xsaW5nIGVhcmx5LlxuICAgICAqL1xuICAgIHdhaXRmb3Jsb2dzKHJlcSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICAgICAgICByZXEuZnJvbUJsb2NrLFxuICAgICAgICAgICAgcmVxLnRvQmxvY2ssXG4gICAgICAgICAgICByZXEuZmlsdGVyLFxuICAgICAgICAgICAgcmVxLm1pbmNvbmYsXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGNhbmNlbFRva2VuU291cmNlID0gdGhpcy5jYW5jZWxUb2tlblNvdXJjZSgpO1xuICAgICAgICBjb25zdCBwID0gdGhpcy5yYXdDYWxsKFwid2FpdGZvcmxvZ3NcIiwgYXJncywgeyBjYW5jZWxUb2tlbjogY2FuY2VsVG9rZW5Tb3VyY2UudG9rZW4gfSk7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHAsIHtcbiAgICAgICAgICAgIGNhbmNlbDogY2FuY2VsVG9rZW5Tb3VyY2UuY2FuY2VsLmJpbmQoY2FuY2VsVG9rZW5Tb3VyY2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgc2VhcmNobG9ncyhfcmVxID0ge30pIHtcbiAgICAgICAgY29uc3Qgc2VhcmNobG9nc0RlZmF1bHRzID0ge1xuICAgICAgICAgICAgZnJvbUJsb2NrOiBcImxhdGVzdFwiLFxuICAgICAgICAgICAgdG9CbG9jazogLTEsXG4gICAgICAgICAgICBhZGRyZXNzZXM6IFtdLFxuICAgICAgICAgICAgdG9waWNzOiBbXSxcbiAgICAgICAgICAgIG1pbmNvbmY6IDAsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlcSA9IE9iamVjdC5hc3NpZ24oeyBzZWFyY2hsb2dzRGVmYXVsdHMgfSwgX3JlcSk7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICAgICAgICByZXEuZnJvbUJsb2NrLFxuICAgICAgICAgICAgcmVxLnRvQmxvY2ssXG4gICAgICAgICAgICByZXEuYWRkcmVzc2VzLFxuICAgICAgICAgICAgcmVxLnRvcGljcyxcbiAgICAgICAgICAgIHJlcS5taW5jb25mLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdDYWxsKFwic2VhcmNobG9nc1wiLCBhcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgY2hlY2tUcmFuc2FjdGlvbldhaXRTdXBwb3J0KCkge1xuICAgICAgICBpZiAodGhpcy5faGFzVHhXYWl0U3VwcG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faGFzVHhXYWl0U3VwcG9ydDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoZWxwbXNnID0gYXdhaXQgdGhpcy5yYXdDYWxsKFwiaGVscFwiLCBbXCJnZXR0cmFuc2FjdGlvblwiXSk7XG4gICAgICAgIHRoaXMuX2hhc1R4V2FpdFN1cHBvcnQgPSBoZWxwbXNnLnNwbGl0KFwiXFxuXCIpWzBdLmluZGV4T2YoXCJ3YWl0Y29uZlwiKSAhPT0gLTE7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNUeFdhaXRTdXBwb3J0O1xuICAgIH1cbiAgICBhc3luYyBmcm9tSGV4QWRkcmVzcyhoZXhBZGRyZXNzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhd0NhbGwoXCJmcm9taGV4YWRkcmVzc1wiLCBbaGV4QWRkcmVzc10pO1xuICAgIH1cbiAgICBhc3luYyBnZXRIZXhBZGRyZXNzKGFkZHJlc3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3Q2FsbChcImdldGhleGFkZHJlc3NcIiwgW2FkZHJlc3NdKTtcbiAgICB9XG59XG5leHBvcnRzLlF0dW1SUEMgPSBRdHVtUlBDO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///11\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2JpbmQuanM/MWQyYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfTtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///12\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\nvar settle = __webpack_require__(37);\nvar buildURL = __webpack_require__(39);\nvar parseHeaders = __webpack_require__(40);\nvar isURLSameOrigin = __webpack_require__(41);\nvar createError = __webpack_require__(14);\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password || '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    // Listen for ready state\n    request.onreadystatechange = function handleLoad() {\n      if (!request || request.readyState !== 4) {\n        return;\n      }\n\n      // The request errored out and we didn't get a response, this will be\n      // handled by onerror instead\n      // With one exception: request that using file: protocol, most browsers\n      // will return status as 0 even though it's a successful request\n      if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n        return;\n      }\n\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      var cookies = __webpack_require__(42);\n\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n          cookies.read(config.xsrfCookieName) :\n          undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (config.withCredentials) {\n      request.withCredentials = true;\n    }\n\n    // Add responseType to request if needed\n    if (config.responseType) {\n      try {\n        request.responseType = config.responseType;\n      } catch (e) {\n        // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n        // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n        if (config.responseType !== 'json') {\n          throw e;\n        }\n      }\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (requestData === undefined) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanM/YjUwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMsQ0FBWTtBQUNoQyxhQUFhLG1CQUFPLENBQUMsRUFBa0I7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLEVBQXVCO0FBQzlDLG1CQUFtQixtQkFBTyxDQUFDLEVBQTJCO0FBQ3RELHNCQUFzQixtQkFBTyxDQUFDLEVBQThCO0FBQzVELGtCQUFrQixtQkFBTyxDQUFDLEVBQXFCOztBQUUvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixtQkFBTyxDQUFDLEVBQXNCOztBQUVsRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSCIsImZpbGUiOiIxMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHNldHRsZSA9IHJlcXVpcmUoJy4vLi4vY29yZS9zZXR0bGUnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9idWlsZFVSTCcpO1xudmFyIHBhcnNlSGVhZGVycyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9wYXJzZUhlYWRlcnMnKTtcbnZhciBpc1VSTFNhbWVPcmlnaW4gPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luJyk7XG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL2NyZWF0ZUVycm9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geGhyQWRhcHRlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdERhdGEgPSBjb25maWcuZGF0YTtcbiAgICB2YXIgcmVxdWVzdEhlYWRlcnMgPSBjb25maWcuaGVhZGVycztcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSkge1xuICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzWydDb250ZW50LVR5cGUnXTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxuICAgIH1cblxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XG4gICAgICB2YXIgdXNlcm5hbWUgPSBjb25maWcuYXV0aC51c2VybmFtZSB8fCAnJztcbiAgICAgIHZhciBwYXNzd29yZCA9IGNvbmZpZy5hdXRoLnBhc3N3b3JkIHx8ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICByZXF1ZXN0Lm9wZW4oY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBidWlsZFVSTChjb25maWcudXJsLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplciksIHRydWUpO1xuXG4gICAgLy8gU2V0IHRoZSByZXF1ZXN0IHRpbWVvdXQgaW4gTVNcbiAgICByZXF1ZXN0LnRpbWVvdXQgPSBjb25maWcudGltZW91dDtcblxuICAgIC8vIExpc3RlbiBmb3IgcmVhZHkgc3RhdGVcbiAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdC5yZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIHJlcXVlc3QgZXJyb3JlZCBvdXQgYW5kIHdlIGRpZG4ndCBnZXQgYSByZXNwb25zZSwgdGhpcyB3aWxsIGJlXG4gICAgICAvLyBoYW5kbGVkIGJ5IG9uZXJyb3IgaW5zdGVhZFxuICAgICAgLy8gV2l0aCBvbmUgZXhjZXB0aW9uOiByZXF1ZXN0IHRoYXQgdXNpbmcgZmlsZTogcHJvdG9jb2wsIG1vc3QgYnJvd3NlcnNcbiAgICAgIC8vIHdpbGwgcmV0dXJuIHN0YXR1cyBhcyAwIGV2ZW4gdGhvdWdoIGl0J3MgYSBzdWNjZXNzZnVsIHJlcXVlc3RcbiAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMCAmJiAhKHJlcXVlc3QucmVzcG9uc2VVUkwgJiYgcmVxdWVzdC5yZXNwb25zZVVSTC5pbmRleE9mKCdmaWxlOicpID09PSAwKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFByZXBhcmUgdGhlIHJlc3BvbnNlXG4gICAgICB2YXIgcmVzcG9uc2VIZWFkZXJzID0gJ2dldEFsbFJlc3BvbnNlSGVhZGVycycgaW4gcmVxdWVzdCA/IHBhcnNlSGVhZGVycyhyZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSA6IG51bGw7XG4gICAgICB2YXIgcmVzcG9uc2VEYXRhID0gIWNvbmZpZy5yZXNwb25zZVR5cGUgfHwgY29uZmlnLnJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnID8gcmVxdWVzdC5yZXNwb25zZVRleHQgOiByZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgdmFyIHJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiByZXNwb25zZURhdGEsXG4gICAgICAgIHN0YXR1czogcmVxdWVzdC5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcXVlc3Quc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2VIZWFkZXJzLFxuICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdDogcmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xuICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkge1xuICAgICAgLy8gUmVhbCBlcnJvcnMgYXJlIGhpZGRlbiBmcm9tIHVzIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBvbmVycm9yIHNob3VsZCBvbmx5IGZpcmUgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignTmV0d29yayBFcnJvcicsIGNvbmZpZywgbnVsbCwgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICByZXF1ZXN0Lm9udGltZW91dCA9IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKSB7XG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ3RpbWVvdXQgb2YgJyArIGNvbmZpZy50aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJywgY29uZmlnLCAnRUNPTk5BQk9SVEVEJyxcbiAgICAgICAgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgLy8gVGhpcyBpcyBvbmx5IGRvbmUgaWYgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gICAgLy8gU3BlY2lmaWNhbGx5IG5vdCBpZiB3ZSdyZSBpbiBhIHdlYiB3b3JrZXIsIG9yIHJlYWN0LW5hdGl2ZS5cbiAgICBpZiAodXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSkge1xuICAgICAgdmFyIGNvb2tpZXMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvY29va2llcycpO1xuXG4gICAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAgIHZhciB4c3JmVmFsdWUgPSAoY29uZmlnLndpdGhDcmVkZW50aWFscyB8fCBpc1VSTFNhbWVPcmlnaW4oY29uZmlnLnVybCkpICYmIGNvbmZpZy54c3JmQ29va2llTmFtZSA/XG4gICAgICAgICAgY29va2llcy5yZWFkKGNvbmZpZy54c3JmQ29va2llTmFtZSkgOlxuICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHhzcmZWYWx1ZSkge1xuICAgICAgICByZXF1ZXN0SGVhZGVyc1tjb25maWcueHNyZkhlYWRlck5hbWVdID0geHNyZlZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSByZXF1ZXN0XG4gICAgaWYgKCdzZXRSZXF1ZXN0SGVhZGVyJyBpbiByZXF1ZXN0KSB7XG4gICAgICB1dGlscy5mb3JFYWNoKHJlcXVlc3RIZWFkZXJzLCBmdW5jdGlvbiBzZXRSZXF1ZXN0SGVhZGVyKHZhbCwga2V5KSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVxdWVzdERhdGEgPT09ICd1bmRlZmluZWQnICYmIGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC10eXBlJykge1xuICAgICAgICAgIC8vIFJlbW92ZSBDb250ZW50LVR5cGUgaWYgZGF0YSBpcyB1bmRlZmluZWRcbiAgICAgICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGhlYWRlciB0byB0aGUgcmVxdWVzdFxuICAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihrZXksIHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRoQ3JlZGVudGlhbHMgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoY29uZmlnLndpdGhDcmVkZW50aWFscykge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoY29uZmlnLnJlc3BvbnNlVHlwZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBFeHBlY3RlZCBET01FeGNlcHRpb24gdGhyb3duIGJ5IGJyb3dzZXJzIG5vdCBjb21wYXRpYmxlIFhNTEh0dHBSZXF1ZXN0IExldmVsIDIuXG4gICAgICAgIC8vIEJ1dCwgdGhpcyBjYW4gYmUgc3VwcHJlc3NlZCBmb3IgJ2pzb24nIHR5cGUgYXMgaXQgY2FuIGJlIHBhcnNlZCBieSBkZWZhdWx0ICd0cmFuc2Zvcm1SZXNwb25zZScgZnVuY3Rpb24uXG4gICAgICAgIGlmIChjb25maWcucmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkNhbmNlbGVkKGNhbmNlbCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjYW5jZWwpO1xuICAgICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3REYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlcXVlc3REYXRhID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhKTtcbiAgfSk7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar enhanceError = __webpack_require__(38);\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2NyZWF0ZUVycm9yLmpzPzJkODMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsbUJBQW1CLG1CQUFPLENBQUMsRUFBZ0I7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuL2VuaGFuY2VFcnJvcicpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFcnJvcihtZXNzYWdlLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSk7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///14\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvaXNDYW5jZWwuanM/MmU2NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EiLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNDYW5jZWwodmFsdWUpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlLl9fQ0FOQ0VMX18pO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsLmpzPzdhNzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBIiwiZmlsZSI6IjE2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEEgYENhbmNlbGAgaXMgYW4gb2JqZWN0IHRoYXQgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGNhbmNlbGVkLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlIFRoZSBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBDYW5jZWwobWVzc2FnZSkge1xuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xufVxuXG5DYW5jZWwucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiAnQ2FuY2VsJyArICh0aGlzLm1lc3NhZ2UgPyAnOiAnICsgdGhpcy5tZXNzYWdlIDogJycpO1xufTtcblxuQ2FuY2VsLnByb3RvdHlwZS5fX0NBTkNFTF9fID0gdHJ1ZTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWw7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///16\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar mapValues = __webpack_require__(18);\n\nvar _require = __webpack_require__(19),\n    Qtum = _require.Qtum;\n\nvar chainAliases = __webpack_require__(56);\n\nvar contractsDefinition = __webpack_require__(57); // Create an object containing all chains, its contracts and static data.\n\n\nvar allContracts = mapValues(chainAliases, function (chainAlias) {\n  var definitions = contractsDefinition[chainAlias];\n  return mapValues(definitions.contracts, function (_ref, name) {\n    var address = _ref.address,\n        birthblock = _ref.birthblock,\n        version = _ref.version;\n    return {\n      abi: __webpack_require__(58)(\"./\".concat(version || definitions.version, \"/\").concat(name, \".json\")),\n      address: address,\n      birthblock: birthblock || definitions.birthblock\n    };\n  });\n});\n/**\n * Create a contract using either web3@0.2x or web3@1.0.0\n *\n * @param {object} web3 The Web3 instance to instantiate the contracts.\n * @param {Array} abi The contract's ABI.\n * @param {string} address The contract's address.\n * @returns {*} The contract instance.\n */\n\nvar createContract = function createContract(web3, abi, address, qtumrpc) {\n  var contract;\n\n  if (qtumrpc) {\n    var contractsRepo = {\n      contracts: {\n        '': {\n          abi: abi,\n          address: address\n        }\n      }\n    };\n    var qtum = new Qtum(qtumrpc, contractsRepo);\n    contract = qtum.contract('');\n  } else {\n    contract = typeof web3.eth.Contract === 'function' ? new web3.eth.Contract(abi, address) : web3.eth.contract(abi).at(address);\n  }\n\n  return contract;\n};\n/** Class representing a contracts set. */\n\n\nvar MetronomeContracts =\n/**\n * Create a Metronome contracts set.\n *\n * The contract set contains instances of all the contracts at the proper\n * addresses depending on the target chain.\n *\n * @param {Web3} web3 The Web3 instance to instantiate the contracts.\n * @param {string} [chain='mainnet'] The target chain name or ID.\n * @param {string} qtumrpc qtum rpc url\n */\nfunction MetronomeContracts(web3) {\n  var chain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'mainnet';\n  var qtumrpc = arguments.length > 2 ? arguments[2] : undefined;\n\n  _classCallCheck(this, MetronomeContracts);\n\n  if (!web3 || !web3.eth) {\n    throw new Error('Invalid web3 or qtumrpc provided');\n  }\n\n  var contracts = allContracts[chainAliases[chain]];\n\n  if (!contracts) {\n    throw new Error('Unknown chain');\n  }\n\n  Object.assign(this, mapValues(contracts, function (_ref2) {\n    var abi = _ref2.abi,\n        address = _ref2.address;\n    return createContract(web3, abi, address, qtumrpc);\n  }));\n}; // Add contract definitions to the MetronomeContracts class for convenience\n\n\nObject.assign(MetronomeContracts, allContracts);\nmodule.exports = MetronomeContracts;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vc3JjL2luZGV4LmpzP2I2MzUiXSwibmFtZXMiOlsibWFwVmFsdWVzIiwicmVxdWlyZSIsIlF0dW0iLCJjaGFpbkFsaWFzZXMiLCJjb250cmFjdHNEZWZpbml0aW9uIiwiYWxsQ29udHJhY3RzIiwiY2hhaW5BbGlhcyIsImRlZmluaXRpb25zIiwiY29udHJhY3RzIiwibmFtZSIsImFkZHJlc3MiLCJiaXJ0aGJsb2NrIiwidmVyc2lvbiIsImFiaSIsImNyZWF0ZUNvbnRyYWN0Iiwid2ViMyIsInF0dW1ycGMiLCJjb250cmFjdCIsImNvbnRyYWN0c1JlcG8iLCJxdHVtIiwiZXRoIiwiQ29udHJhY3QiLCJhdCIsIk1ldHJvbm9tZUNvbnRyYWN0cyIsImNoYWluIiwiRXJyb3IiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUVBLElBQU1BLFNBQVMsR0FBR0MsbUJBQU8sQ0FBQyxFQUFELENBQXpCOztlQUNpQkEsbUJBQU8sQ0FBQyxFQUFELEM7SUFBaEJDLEksWUFBQUEsSTs7QUFFUixJQUFNQyxZQUFZLEdBQUdGLG1CQUFPLENBQUMsRUFBRCxDQUE1Qjs7QUFDQSxJQUFNRyxtQkFBbUIsR0FBR0gsbUJBQU8sQ0FBQyxFQUFELENBQW5DLEMsQ0FFQTs7O0FBQ0EsSUFBTUksWUFBWSxHQUFHTCxTQUFTLENBQUNHLFlBQUQsRUFBZSxVQUFVRyxVQUFWLEVBQXNCO0FBQ2pFLE1BQU1DLFdBQVcsR0FBR0gsbUJBQW1CLENBQUNFLFVBQUQsQ0FBdkM7QUFDQSxTQUFPTixTQUFTLENBQ2RPLFdBQVcsQ0FBQ0MsU0FERSxFQUVkLGdCQUFtQ0MsSUFBbkM7QUFBQSxRQUFHQyxPQUFILFFBQUdBLE9BQUg7QUFBQSxRQUFZQyxVQUFaLFFBQVlBLFVBQVo7QUFBQSxRQUF3QkMsT0FBeEIsUUFBd0JBLE9BQXhCO0FBQUEsV0FDRztBQUNDQyxTQUFHLEVBQUVaLHdCQUFRLFlBQVVXLE9BQU8sSUFBSUwsV0FBVyxDQUFDSyxPQUFsQyxjQUE2Q0gsSUFBN0MsV0FEYjtBQUVDQyxhQUFPLEVBQVBBLE9BRkQ7QUFHQ0MsZ0JBQVUsRUFBRUEsVUFBVSxJQUFJSixXQUFXLENBQUNJO0FBSHZDLEtBREg7QUFBQSxHQUZjLENBQWhCO0FBU0QsQ0FYNkIsQ0FBOUI7QUFhQTs7Ozs7Ozs7O0FBU0EsSUFBTUcsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFVQyxJQUFWLEVBQWdCRixHQUFoQixFQUFxQkgsT0FBckIsRUFBOEJNLE9BQTlCLEVBQXVDO0FBQzVELE1BQUlDLFFBQUo7O0FBQ0EsTUFBSUQsT0FBSixFQUFhO0FBQ1gsUUFBTUUsYUFBYSxHQUFHO0FBQUVWLGVBQVMsRUFBRTtBQUFFLFlBQUk7QUFBRUssYUFBRyxFQUFIQSxHQUFGO0FBQU9ILGlCQUFPLEVBQVBBO0FBQVA7QUFBTjtBQUFiLEtBQXRCO0FBQ0EsUUFBTVMsSUFBSSxHQUFHLElBQUlqQixJQUFKLENBQVNjLE9BQVQsRUFBa0JFLGFBQWxCLENBQWI7QUFDQUQsWUFBUSxHQUFHRSxJQUFJLENBQUNGLFFBQUwsQ0FBYyxFQUFkLENBQVg7QUFDRCxHQUpELE1BSU87QUFDTEEsWUFBUSxHQUFHLE9BQU9GLElBQUksQ0FBQ0ssR0FBTCxDQUFTQyxRQUFoQixLQUE2QixVQUE3QixHQUNQLElBQUlOLElBQUksQ0FBQ0ssR0FBTCxDQUFTQyxRQUFiLENBQXNCUixHQUF0QixFQUEyQkgsT0FBM0IsQ0FETyxHQUVQSyxJQUFJLENBQUNLLEdBQUwsQ0FBU0gsUUFBVCxDQUFrQkosR0FBbEIsRUFBdUJTLEVBQXZCLENBQTBCWixPQUExQixDQUZKO0FBR0Q7O0FBQ0QsU0FBT08sUUFBUDtBQUNELENBWkQ7QUFjQTs7O0lBQ01NLGtCO0FBQ0o7Ozs7Ozs7Ozs7QUFVQSw0QkFBYVIsSUFBYixFQUErQztBQUFBLE1BQTVCUyxLQUE0Qix1RUFBcEIsU0FBb0I7QUFBQSxNQUFUUixPQUFTOztBQUFBOztBQUM3QyxNQUFJLENBQUNELElBQUQsSUFBUyxDQUFDQSxJQUFJLENBQUNLLEdBQW5CLEVBQXdCO0FBQ3RCLFVBQU0sSUFBSUssS0FBSixDQUFVLGtDQUFWLENBQU47QUFDRDs7QUFFRCxNQUFNakIsU0FBUyxHQUFHSCxZQUFZLENBQUNGLFlBQVksQ0FBQ3FCLEtBQUQsQ0FBYixDQUE5Qjs7QUFFQSxNQUFJLENBQUNoQixTQUFMLEVBQWdCO0FBQ2QsVUFBTSxJQUFJaUIsS0FBSixDQUFVLGVBQVYsQ0FBTjtBQUNEOztBQUVEQyxRQUFNLENBQUNDLE1BQVAsQ0FBYyxJQUFkLEVBQW9CM0IsU0FBUyxDQUFDUSxTQUFELEVBQVk7QUFBQSxRQUFHSyxHQUFILFNBQUdBLEdBQUg7QUFBQSxRQUFRSCxPQUFSLFNBQVFBLE9BQVI7QUFBQSxXQUN2Q0ksY0FBYyxDQUFDQyxJQUFELEVBQU9GLEdBQVAsRUFBWUgsT0FBWixFQUFxQk0sT0FBckIsQ0FEeUI7QUFBQSxHQUFaLENBQTdCO0FBR0QsQyxFQUdIOzs7QUFDQVUsTUFBTSxDQUFDQyxNQUFQLENBQWNKLGtCQUFkLEVBQWtDbEIsWUFBbEM7QUFFQXVCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQk4sa0JBQWpCIiwiZmlsZSI6IjE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IG1hcFZhbHVlcyA9IHJlcXVpcmUoJ21vZGlmeS12YWx1ZXMnKVxuY29uc3QgeyBRdHVtIH0gPSByZXF1aXJlKCdxdHVtanMnKVxuXG5jb25zdCBjaGFpbkFsaWFzZXMgPSByZXF1aXJlKCcuL2FsaWFzZXMuanNvbicpXG5jb25zdCBjb250cmFjdHNEZWZpbml0aW9uID0gcmVxdWlyZSgnLi9jb250cmFjdHMuanNvbicpXG5cbi8vIENyZWF0ZSBhbiBvYmplY3QgY29udGFpbmluZyBhbGwgY2hhaW5zLCBpdHMgY29udHJhY3RzIGFuZCBzdGF0aWMgZGF0YS5cbmNvbnN0IGFsbENvbnRyYWN0cyA9IG1hcFZhbHVlcyhjaGFpbkFsaWFzZXMsIGZ1bmN0aW9uIChjaGFpbkFsaWFzKSB7XG4gIGNvbnN0IGRlZmluaXRpb25zID0gY29udHJhY3RzRGVmaW5pdGlvbltjaGFpbkFsaWFzXVxuICByZXR1cm4gbWFwVmFsdWVzKFxuICAgIGRlZmluaXRpb25zLmNvbnRyYWN0cyxcbiAgICAoeyBhZGRyZXNzLCBiaXJ0aGJsb2NrLCB2ZXJzaW9uIH0sIG5hbWUpID0+XG4gICAgICAoe1xuICAgICAgICBhYmk6IHJlcXVpcmUoYC4vYWJpcy8ke3ZlcnNpb24gfHwgZGVmaW5pdGlvbnMudmVyc2lvbn0vJHtuYW1lfS5qc29uYCksXG4gICAgICAgIGFkZHJlc3MsXG4gICAgICAgIGJpcnRoYmxvY2s6IGJpcnRoYmxvY2sgfHwgZGVmaW5pdGlvbnMuYmlydGhibG9ja1xuICAgICAgfSlcbiAgKVxufSlcblxuLyoqXG4gKiBDcmVhdGUgYSBjb250cmFjdCB1c2luZyBlaXRoZXIgd2ViM0AwLjJ4IG9yIHdlYjNAMS4wLjBcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gd2ViMyBUaGUgV2ViMyBpbnN0YW5jZSB0byBpbnN0YW50aWF0ZSB0aGUgY29udHJhY3RzLlxuICogQHBhcmFtIHtBcnJheX0gYWJpIFRoZSBjb250cmFjdCdzIEFCSS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIFRoZSBjb250cmFjdCdzIGFkZHJlc3MuXG4gKiBAcmV0dXJucyB7Kn0gVGhlIGNvbnRyYWN0IGluc3RhbmNlLlxuICovXG5cbmNvbnN0IGNyZWF0ZUNvbnRyYWN0ID0gZnVuY3Rpb24gKHdlYjMsIGFiaSwgYWRkcmVzcywgcXR1bXJwYykge1xuICBsZXQgY29udHJhY3RcbiAgaWYgKHF0dW1ycGMpIHtcbiAgICBjb25zdCBjb250cmFjdHNSZXBvID0geyBjb250cmFjdHM6IHsgJyc6IHsgYWJpLCBhZGRyZXNzIH0gfSB9XG4gICAgY29uc3QgcXR1bSA9IG5ldyBRdHVtKHF0dW1ycGMsIGNvbnRyYWN0c1JlcG8pXG4gICAgY29udHJhY3QgPSBxdHVtLmNvbnRyYWN0KCcnKVxuICB9IGVsc2Uge1xuICAgIGNvbnRyYWN0ID0gdHlwZW9mIHdlYjMuZXRoLkNvbnRyYWN0ID09PSAnZnVuY3Rpb24nXG4gICAgICA/IG5ldyB3ZWIzLmV0aC5Db250cmFjdChhYmksIGFkZHJlc3MpXG4gICAgICA6IHdlYjMuZXRoLmNvbnRyYWN0KGFiaSkuYXQoYWRkcmVzcylcbiAgfVxuICByZXR1cm4gY29udHJhY3Rcbn1cblxuLyoqIENsYXNzIHJlcHJlc2VudGluZyBhIGNvbnRyYWN0cyBzZXQuICovXG5jbGFzcyBNZXRyb25vbWVDb250cmFjdHMge1xuICAvKipcbiAgICogQ3JlYXRlIGEgTWV0cm9ub21lIGNvbnRyYWN0cyBzZXQuXG4gICAqXG4gICAqIFRoZSBjb250cmFjdCBzZXQgY29udGFpbnMgaW5zdGFuY2VzIG9mIGFsbCB0aGUgY29udHJhY3RzIGF0IHRoZSBwcm9wZXJcbiAgICogYWRkcmVzc2VzIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGNoYWluLlxuICAgKlxuICAgKiBAcGFyYW0ge1dlYjN9IHdlYjMgVGhlIFdlYjMgaW5zdGFuY2UgdG8gaW5zdGFudGlhdGUgdGhlIGNvbnRyYWN0cy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFpbj0nbWFpbm5ldCddIFRoZSB0YXJnZXQgY2hhaW4gbmFtZSBvciBJRC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHF0dW1ycGMgcXR1bSBycGMgdXJsXG4gICAqL1xuICBjb25zdHJ1Y3RvciAod2ViMywgY2hhaW4gPSAnbWFpbm5ldCcsIHF0dW1ycGMpIHtcbiAgICBpZiAoIXdlYjMgfHwgIXdlYjMuZXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgd2ViMyBvciBxdHVtcnBjIHByb3ZpZGVkJylcbiAgICB9XG5cbiAgICBjb25zdCBjb250cmFjdHMgPSBhbGxDb250cmFjdHNbY2hhaW5BbGlhc2VzW2NoYWluXV1cblxuICAgIGlmICghY29udHJhY3RzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY2hhaW4nKVxuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgbWFwVmFsdWVzKGNvbnRyYWN0cywgKHsgYWJpLCBhZGRyZXNzIH0pID0+XG4gICAgICBjcmVhdGVDb250cmFjdCh3ZWIzLCBhYmksIGFkZHJlc3MsIHF0dW1ycGMpXG4gICAgKSlcbiAgfVxufVxuXG4vLyBBZGQgY29udHJhY3QgZGVmaW5pdGlvbnMgdG8gdGhlIE1ldHJvbm9tZUNvbnRyYWN0cyBjbGFzcyBmb3IgY29udmVuaWVuY2Vcbk9iamVjdC5hc3NpZ24oTWV0cm9ub21lQ29udHJhY3RzLCBhbGxDb250cmFjdHMpXG5cbm1vZHVsZS5leHBvcnRzID0gTWV0cm9ub21lQ29udHJhY3RzXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///17\n")},function(module,exports,__webpack_require__){"use strict";eval("\nmodule.exports = function (obj, modifier) {\n\tvar key;\n\tvar val;\n\tvar ret = {};\n\tvar keys = Object.keys(Object(obj));\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tkey = keys[i];\n\t\tval = obj[key];\n\t\tret[key] = modifier(val, key);\n\t}\n\n\treturn ret;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL21vZGlmeS12YWx1ZXMvaW5kZXguanM/Y2Y2YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjE4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqLCBtb2RpZmllcikge1xuXHR2YXIga2V5O1xuXHR2YXIgdmFsO1xuXHR2YXIgcmV0ID0ge307XG5cdHZhciBrZXlzID0gT2JqZWN0LmtleXMoT2JqZWN0KG9iaikpO1xuXG5cdGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuXHRcdGtleSA9IGtleXNbaV07XG5cdFx0dmFsID0gb2JqW2tleV07XG5cdFx0cmV0W2tleV0gPSBtb2RpZmllcih2YWwsIGtleSk7XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n")},function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(Buffer) {\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, "__esModule", { value: true });\n// Browser polyfill required by ethjs-abi\n// https://github.com/ethjs/ethjs-abi/blob/5e2d4c3b7207111c143ca30d01d743c28cfb52f6/src/utils/index.js#L28\nif (typeof Buffer === "undefined") {\n    const { Buffer } = __webpack_require__(1);\n    Object.assign(window, {\n        Buffer,\n    });\n}\n__export(__webpack_require__(3));\n__export(__webpack_require__(9));\n__export(__webpack_require__(11));\n__export(__webpack_require__(53));\n__export(__webpack_require__(10));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1).Buffer))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvaW5kZXguanM/YzJkNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUyxHQUFHLG1CQUFPLENBQUMsQ0FBUTtBQUN2QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsU0FBUyxtQkFBTyxDQUFDLENBQU87QUFDeEIsU0FBUyxtQkFBTyxDQUFDLENBQVk7QUFDN0IsU0FBUyxtQkFBTyxDQUFDLEVBQVc7QUFDNUIsU0FBUyxtQkFBTyxDQUFDLEVBQVE7QUFDekIsU0FBUyxtQkFBTyxDQUFDLEVBQW9CIiwiZmlsZSI6IjE5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5mdW5jdGlvbiBfX2V4cG9ydChtKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gQnJvd3NlciBwb2x5ZmlsbCByZXF1aXJlZCBieSBldGhqcy1hYmlcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhqcy9ldGhqcy1hYmkvYmxvYi81ZTJkNGMzYjcyMDcxMTFjMTQzY2EzMGQwMWQ3NDNjMjhjZmI1MmY2L3NyYy91dGlscy9pbmRleC5qcyNMMjhcbmlmICh0eXBlb2YgQnVmZmVyID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY29uc3QgeyBCdWZmZXIgfSA9IHJlcXVpcmUoXCJidWZmZXJcIik7XG4gICAgT2JqZWN0LmFzc2lnbih3aW5kb3csIHtcbiAgICAgICAgQnVmZmVyLFxuICAgIH0pO1xufVxuX19leHBvcnQocmVxdWlyZShcIi4vYWJpXCIpKTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL0NvbnRyYWN0XCIpKTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL1F0dW1SUENcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vUXR1bVwiKSk7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9UeFJlY2VpcHRQcm9taXNlXCIpKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcz8xZmI1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFZOztBQUVaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0MsU0FBUztBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDLFVBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcblxuZXhwb3J0cy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuZXhwb3J0cy50b0J5dGVBcnJheSA9IHRvQnl0ZUFycmF5XG5leHBvcnRzLmZyb21CeXRlQXJyYXkgPSBmcm9tQnl0ZUFycmF5XG5cbnZhciBsb29rdXAgPSBbXVxudmFyIHJldkxvb2t1cCA9IFtdXG52YXIgQXJyID0gdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnID8gVWludDhBcnJheSA6IEFycmF5XG5cbnZhciBjb2RlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nXG5mb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICBsb29rdXBbaV0gPSBjb2RlW2ldXG4gIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaVxufVxuXG4vLyBTdXBwb3J0IGRlY29kaW5nIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmdzLCBhcyBOb2RlLmpzIGRvZXMuXG4vLyBTZWU6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2U2NCNVUkxfYXBwbGljYXRpb25zXG5yZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjJcbnJldkxvb2t1cFsnXycuY2hhckNvZGVBdCgwKV0gPSA2M1xuXG5mdW5jdGlvbiBnZXRMZW5zIChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gVHJpbSBvZmYgZXh0cmEgYnl0ZXMgYWZ0ZXIgcGxhY2Vob2xkZXIgYnl0ZXMgYXJlIGZvdW5kXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JlYXRnYW1taXQvYmFzZTY0LWpzL2lzc3Vlcy80MlxuICB2YXIgdmFsaWRMZW4gPSBiNjQuaW5kZXhPZignPScpXG4gIGlmICh2YWxpZExlbiA9PT0gLTEpIHZhbGlkTGVuID0gbGVuXG5cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IHZhbGlkTGVuID09PSBsZW5cbiAgICA/IDBcbiAgICA6IDQgLSAodmFsaWRMZW4gJSA0KVxuXG4gIHJldHVybiBbdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbl1cbn1cblxuLy8gYmFzZTY0IGlzIDQvMyArIHVwIHRvIHR3byBjaGFyYWN0ZXJzIG9mIHRoZSBvcmlnaW5hbCBkYXRhXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChiNjQpIHtcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gX2J5dGVMZW5ndGggKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikge1xuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW5zID0gZ2V0TGVucyhiNjQpXG4gIHZhciB2YWxpZExlbiA9IGxlbnNbMF1cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IGxlbnNbMV1cblxuICB2YXIgYXJyID0gbmV3IEFycihfYnl0ZUxlbmd0aChiNjQsIHZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW4pKVxuXG4gIHZhciBjdXJCeXRlID0gMFxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgdmFyIGxlbiA9IHBsYWNlSG9sZGVyc0xlbiA+IDBcbiAgICA/IHZhbGlkTGVuIC0gNFxuICAgIDogdmFsaWRMZW5cblxuICB2YXIgaVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHxcbiAgICAgIHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDE2KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAyKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDYgJiAweDNGXSArXG4gICAgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9XG4gICAgICAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArXG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgK1xuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4RkYpXG4gICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBmcm9tQnl0ZUFycmF5ICh1aW50OCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW4gPSB1aW50OC5sZW5ndGhcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsoXG4gICAgICB1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpXG4gICAgKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n")},function(module,exports){eval("exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanM/OTE1MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxXQUFXOztBQUVuQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLFdBQVc7O0FBRW5CO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLFdBQVc7O0FBRW5CO0FBQ0E7QUFDQSxRQUFRLFVBQVU7O0FBRWxCO0FBQ0EiLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2lzYXJyYXkvaW5kZXguanM/ZTNkYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSIsImZpbGUiOiIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///22\n")},function(module,exports,__webpack_require__){eval("/*\nPrimary Attribution\nRichard Moore <ricmoo@me.com>\nhttps://github.com/ethers-io\n\nNote, Richard is a god of ether gods. Follow and respect him, and use Ethers.io!\n*/\n\nconst Buffer = __webpack_require__(1).Buffer;\nconst BN = __webpack_require__(7);\nconst numberToBN = __webpack_require__(25);\nconst keccak256 = __webpack_require__(28).keccak_256;\n\n/**\n * Convert Buffer to hex string\n * @param {(Buffer | string)} data\n * @returns {string} data in hexadecimal string\n */\nfunction toHexStringNoPrefix(data) {\n  if (typeof data === 'string') {\n    return data;\n  }\n\n  return data.toString('hex');\n}\n\n/**\n * Convert Buffer to hex string, prefixed with `0x`\n * @param {(Buffer | string)} data\n * @returns {string} data in hexadecimal string\n */\nfunction toHexStringPrefixed(data) {\n  if (typeof data === 'string') {\n    return `0x${data}`;\n  }\n\n  return `0x${data.toString('hex')}`;\n}\n\nlet noHexStringPrefix = false;\n/**\n * Convert Buffer to hex string\n * @param {(Buffer | string)} data\n * @returns {string} data in hexadecimal string\n */\nfunction toHexString(data) {\n  if (noHexStringPrefix) {\n    return toHexStringNoPrefix(data);\n  }\n\n  return toHexStringPrefixed(data);\n}\n\n/**\n *\n * @param {Object} opts ABI encoding options\n * @param {boolean} opts.noHexStringPrefix Disable 0x prefix when outputing hexadecimal string\n */\nfunction configure(opts) {\n  if (opts.noHexStringPrefix) {\n    noHexStringPrefix = toHexStringNoPrefix;\n  }\n}\n\n// from ethereumjs-util\nfunction stripZeros(aInput) {\n  var a = aInput; // eslint-disable-line\n  var first = a[0]; // eslint-disable-line\n  while (a.length > 0 && first.toString() === '0') {\n    a = a.slice(1);\n    first = a[0];\n  }\n  return a;\n}\n\nfunction bnToBuffer(bnInput) {\n  var bn = bnInput; // eslint-disable-line\n  var hex = bn.toString(16); // eslint-disable-line\n  if (hex.length % 2) { hex = `0${hex}`; }\n  return stripZeros(new Buffer(hex, 'hex'));\n}\n\n/**\n * Check if a string is hexadecimal data\n *\n * @param {string} value\n * @param {number} size\n */\nfunction isHexString(value, size) {\n  return hexStringToBuffer(value).length === size;\n}\n\n/**\n * Convert hexadecimal string to a buffer. The '0x' prefix is optional.\n * @param {string} value\n * @param {number} size The expected buffer size\n * @param {string} msg optional error message\n */\nfunction hexStringToBuffer(value, size = null, msg = null) {\n  if (typeof (value) !== 'string' || !value.match(/^(0x)?[0-9A-Fa-f]*$/)) {\n    const err = new Error(msg || '[ethjs-abi] invalid hex string');\n    err.value = value;\n    throw err;\n  }\n\n  // massage the hex string before conversion to Buffer\n  let data = value;\n  if (data[0] === '0' && data[1] === 'x') {\n    data = data.slice(2);\n  }\n\n  if (data.length % 2 !== 0) {\n    data = `0${data}`;\n  }\n\n  if (size && data.length !== size * 2) {\n    throw new Error(msg || `[ethjs-abi] Expects a ${size} bytes hex string`);\n  }\n\n  return new Buffer(data, 'hex');\n}\n\n/**\n * Convert string to Buffer\n * @param {(Buffer|string)} valueInput\n * @returns {Buffer}\n */\nfunction hexOrBuffer(value) {\n  if (typeof value === 'string') {\n    return hexStringToBuffer(value);\n  }\n\n  return value;\n}\n\nfunction hexlify(value) {\n  if (typeof (value) === 'number') {\n    return `0x${bnToBuffer(new BN(value)).toString('hex')}`;\n  } else if (value.mod || value.modulo) {\n    return `0x${bnToBuffer(value).toString('hex')}`;\n  } else { // eslint-disable-line\n    return `0x${hexOrBuffer(value).toString('hex')}`;\n  }\n}\n\n// getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]\nfunction getKeys(params, key, allowEmpty) {\n  var result = []; // eslint-disable-line\n\n  if (!Array.isArray(params)) { throw new Error(`[ethjs-abi] while getting keys, invalid params value ${JSON.stringify(params)}`); }\n\n  for (var i = 0; i < params.length; i++) { // eslint-disable-line\n    var value = params[i][key];  // eslint-disable-line\n    if (allowEmpty && !value) {\n      value = '';\n    } else if (typeof (value) !== 'string') {\n      throw new Error('[ethjs-abi] while getKeys found invalid ABI data structure, type value not string');\n    }\n    result.push(value);\n  }\n\n  return result;\n}\n\nfunction coderNumber(size, signed) {\n  return {\n    encode: function encodeNumber(valueInput) {\n      var value = valueInput; // eslint-disable-line\n\n      if (typeof value === 'object'\n        && value.toString\n        && (value.toTwos || value.dividedToIntegerBy)) {\n        value = (value.toString(10)).split('.')[0];\n      }\n\n      if (typeof value === 'string' || typeof value === 'number') {\n        value = String(value).split('.')[0];\n      }\n\n      value = numberToBN(value);\n      value = value.toTwos(size * 8).maskn(size * 8);\n      if (signed) {\n        value = value.fromTwos(size * 8).toTwos(256);\n      }\n      return value.toArrayLike(Buffer, 'be', 32);\n    },\n    decode: function decodeNumber(data, offset) {\n      var junkLength = 32 - size; // eslint-disable-line\n      var value = new BN(data.slice(offset + junkLength, offset + 32)); // eslint-disable-line\n      if (signed) {\n        value = value.fromTwos(size * 8);\n      } else {\n        value = value.maskn(size * 8);\n      }\n      return {\n        consumed: 32,\n        value: new BN(value.toString(10)),\n      };\n    },\n  };\n}\nconst uint256Coder = coderNumber(32, false);\n\nconst coderBoolean = {\n  encode: function encodeBoolean(value) {\n    return uint256Coder.encode(value ? 1 : 0);\n  },\n  decode: function decodeBoolean(data, offset) {\n    var result = uint256Coder.decode(data, offset); // eslint-disable-line\n    return {\n      consumed: result.consumed,\n      value: !result.value.isZero(),\n    };\n  },\n};\n\nfunction coderFixedBytes(length) {\n  return {\n    encode: function encodeFixedBytes(valueInput) {\n      var value = valueInput; // eslint-disable-line\n      value = hexOrBuffer(value);\n\n      if (value.length === 32) { return value; }\n\n      var result = new Buffer(32); // eslint-disable-line\n      result.fill(0);\n      value.copy(result);\n      return result;\n    },\n    decode: function decodeFixedBytes(data, offset) {\n      if (data.length !== 0 && data.length < offset + 32) { throw new Error(`[ethjs-abi] while decoding fixed bytes, invalid bytes data length: ${length}`); }\n\n      return {\n        consumed: 32,\n        value: toHexString(data.slice(offset, offset + length)),\n      };\n    },\n  };\n}\n\nconst coderAddress = {\n  encode: function encodeAddress(input) {\n    const result = new Buffer(32);\n    const value = hexStringToBuffer(input, 20, '[ethjs-abi] while encoding invalid address; not alphanumeric 20 byte hex string');\n    result.fill(0);\n    value.copy(result, 12);\n    return result;\n  },\n  decode: function decodeAddress(data, offset) {\n    if (data.length === 0) {\n      return {\n        consumed: 32,\n        value: toHexString(new Buffer('')),\n      };\n    }\n    if (data.length !== 0 && data.length < offset + 32) { throw new Error(`[ethjs-abi] while decoding address data, invalid address data, invalid byte length ${data.length}`); }\n    return {\n      consumed: 32,\n      value: toHexString(data.slice(offset + 12, offset + 32).toString('hex')),\n    };\n  },\n};\n\nfunction encodeDynamicBytesHelper(value) {\n  var dataLength = parseInt(32 * Math.ceil(value.length / 32)); // eslint-disable-line\n  var padding = new Buffer(dataLength - value.length); // eslint-disable-line\n  padding.fill(0);\n\n  return Buffer.concat([\n    uint256Coder.encode(value.length),\n    value,\n    padding,\n  ]);\n}\n\nfunction decodeDynamicBytesHelper(data, offset) {\n  if (data.length !== 0 && data.length < offset + 32) { throw new Error(`[ethjs-abi] while decoding dynamic bytes data, invalid bytes length: ${data.length} should be less than ${offset + 32}`); }\n\n  var length = uint256Coder.decode(data, offset).value; // eslint-disable-line\n  length = length.toNumber();\n  if (data.length !== 0 && data.length < offset + 32 + length) { throw new Error(`[ethjs-abi] while decoding dynamic bytes data, invalid bytes length: ${data.length} should be less than ${offset + 32 + length}`); }\n\n  return {\n    consumed: parseInt(32 + 32 * Math.ceil(length / 32), 10),\n    value: data.slice(offset + 32, offset + 32 + length),\n  };\n}\n\nconst coderDynamicBytes = {\n  encode: function encodeDynamicBytes(value) {\n    return encodeDynamicBytesHelper(hexOrBuffer(value));\n  },\n  decode: function decodeDynamicBytes(data, offset) {\n    var result = decodeDynamicBytesHelper(data, offset); // eslint-disable-line\n    result.value = toHexString(result.value);\n    return result;\n  },\n  dynamic: true,\n};\n\nconst coderString = {\n  encode: function encodeString(value) {\n    return encodeDynamicBytesHelper(new Buffer(value, 'utf8'));\n  },\n  decode: function decodeString(data, offset) {\n    var result = decodeDynamicBytesHelper(data, offset); // eslint-disable-line\n    result.value = result.value.toString('utf8');\n    return result;\n  },\n  dynamic: true,\n};\n\nfunction coderArray(coder, lengthInput) {\n  return {\n    encode: function encodeArray(value) {\n      var result = new Buffer(0); // eslint-disable-line\n      var length = lengthInput; // eslint-disable-line\n\n      if (!Array.isArray(value)) { throw new Error('[ethjs-abi] while encoding array, invalid array data, not type Object (Array)'); }\n\n      if (length === -1) {\n        length = value.length;\n        result = uint256Coder.encode(length);\n      }\n\n      if (length !== value.length) { throw new Error(`[ethjs-abi] while encoding array, size mismatch array length ${length} does not equal ${value.length}`); }\n\n      value.forEach((resultValue) => {\n        result = Buffer.concat([\n          result,\n          coder.encode(resultValue),\n        ]);\n      });\n\n      return result;\n    },\n    decode: function decodeArray(data, offsetInput) {\n      var length = lengthInput; // eslint-disable-line\n      var offset = offsetInput; // eslint-disable-line\n      // @TODO:\n      // if (data.length < offset + length * 32) { throw new Error('invalid array'); }\n\n      var consumed = 0; // eslint-disable-line\n      var decodeResult; // eslint-disable-line\n\n      if (length === -1) {\n        decodeResult = uint256Coder.decode(data, offset);\n        length = decodeResult.value.toNumber();\n        consumed += decodeResult.consumed;\n        offset += decodeResult.consumed;\n      }\n\n      var value = []; // eslint-disable-line\n\n      for (var i = 0; i < length; i++) { // eslint-disable-line\n        const loopResult = coder.decode(data, offset);\n        consumed += loopResult.consumed;\n        offset += loopResult.consumed;\n        value.push(loopResult.value);\n      }\n\n      return {\n        consumed,\n        value,\n      };\n    },\n    dynamic: (lengthInput === -1),\n  };\n}\n\n// Break the type up into [staticType][staticArray]*[dynamicArray]? | [dynamicType] and\n// build the coder up from its parts\nconst paramTypePart = new RegExp(/^((u?int|bytes)([0-9]*)|(address|bool|string)|(\\[([0-9]*)\\]))/);\n\n/**\n *\n * @param {string} typeInput\n */\nfunction getParamCoder(typeInput) {\n  var type = typeInput; // eslint-disable-line\n  var coder = null; // eslint-disable-line\n  const invalidTypeErrorMessage = `[ethjs-abi] while getting param coder (getParamCoder) type value ${JSON.stringify(type)} is either invalid or unsupported by ethjs-abi.`;\n\n  while (type) {\n    var part = type.match(paramTypePart); // eslint-disable-line\n    if (!part) { throw new Error(invalidTypeErrorMessage); }\n    type = type.substring(part[0].length);\n\n    var prefix = (part[2] || part[4] || part[5]); // eslint-disable-line\n    switch (prefix) {\n      case 'int': case 'uint':\n        if (coder) { throw new Error(invalidTypeErrorMessage); }\n        var intSize = parseInt(part[3] || 256); // eslint-disable-line\n        if (intSize === 0 || intSize > 256 || (intSize % 8) !== 0) {\n          throw new Error(`[ethjs-abi] while getting param coder for type ${type}, invalid ${prefix}<N> width: ${type}`);\n        }\n\n        coder = coderNumber(intSize / 8, (prefix === 'int'));\n        break;\n\n      case 'bool':\n        if (coder) { throw new Error(invalidTypeErrorMessage); }\n        coder = coderBoolean;\n        break;\n\n      case 'string':\n        if (coder) { throw new Error(invalidTypeErrorMessage); }\n        coder = coderString;\n        break;\n\n      case 'bytes':\n        if (coder) { throw new Error(invalidTypeErrorMessage); }\n        if (part[3]) {\n          var size = parseInt(part[3]); // eslint-disable-line\n          if (size === 0 || size > 32) {\n            throw new Error(`[ethjs-abi] while getting param coder for prefix bytes, invalid type ${type}, size ${size} should be 0 or greater than 32`);\n          }\n          coder = coderFixedBytes(size);\n        } else {\n          coder = coderDynamicBytes;\n        }\n        break;\n\n      case 'address':\n        if (coder) { throw new Error(invalidTypeErrorMessage); }\n        coder = coderAddress;\n        break;\n\n      case '[]':\n        if (!coder || coder.dynamic) { throw new Error(invalidTypeErrorMessage); }\n        coder = coderArray(coder, -1);\n        break;\n\n      // \"[0-9+]\"\n      default:\n        if (!coder || coder.dynamic) { throw new Error(invalidTypeErrorMessage); }\n        var defaultSize = parseInt(part[6]); // eslint-disable-line\n        coder = coderArray(coder, defaultSize);\n    }\n  }\n\n  if (!coder) { throw new Error(invalidTypeErrorMessage); }\n  return coder;\n}\n\nmodule.exports = {\n  BN,\n  bnToBuffer,\n  isHexString,\n  hexOrBuffer,\n  hexlify,\n  stripZeros,\n  hexStringToBuffer,\n\n  keccak256,\n\n  getKeys,\n  numberToBN,\n  coderNumber,\n  uint256Coder,\n  coderBoolean,\n  coderFixedBytes,\n  coderAddress,\n  coderDynamicBytes,\n  coderString,\n  coderArray,\n  paramTypePart,\n  getParamCoder,\n  configure,\n  toHexStringNoPrefix,\n  toHexStringPrefixed,\n  toHexString,\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy1ldGhqcy1hYmkvc3JjL3V0aWxzL2luZGV4LmpzPzRkNzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxlQUFlLG1CQUFPLENBQUMsQ0FBUTtBQUMvQixXQUFXLG1CQUFPLENBQUMsQ0FBTztBQUMxQixtQkFBbUIsbUJBQU8sQ0FBQyxFQUFjO0FBQ3pDLGtCQUFrQixtQkFBTyxDQUFDLEVBQVM7O0FBRW5DO0FBQ0E7QUFDQSxXQUFXLGtCQUFrQjtBQUM3QixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLGtCQUFrQjtBQUM3QixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLEtBQUs7QUFDckI7O0FBRUEsY0FBYyxxQkFBcUI7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrQkFBa0I7QUFDN0IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25CLDRCQUE0QjtBQUM1Qix1QkFBdUIsV0FBVyxJQUFJLEVBQUU7QUFDeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxLQUFLO0FBQ3BCOztBQUVBO0FBQ0Esb0RBQW9ELEtBQUs7QUFDekQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0IsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLDBDQUEwQztBQUMxRCxHQUFHO0FBQ0gsZ0JBQWdCLGtDQUFrQztBQUNsRCxHQUFHLE9BQU87QUFDVixnQkFBZ0IsbUNBQW1DO0FBQ25EO0FBQ0E7O0FBRUEsYUFBYSxXQUFXLEdBQUcsV0FBVztBQUN0QztBQUNBLGtCQUFrQjs7QUFFbEIsK0JBQStCLHlFQUF5RSx1QkFBdUIsR0FBRzs7QUFFbEksaUJBQWlCLG1CQUFtQixPQUFPO0FBQzNDLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxpQ0FBaUM7QUFDakMsdUVBQXVFO0FBQ3ZFO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCOztBQUVBLGdDQUFnQyxjQUFjOztBQUU5QyxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsMkRBQTJELHVGQUF1RixPQUFPLEdBQUc7O0FBRTVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkZBQTJGO0FBQzNGO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCx1R0FBdUcsWUFBWSxHQUFHO0FBQy9LO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsK0RBQStEO0FBQy9ELHNEQUFzRDtBQUN0RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1REFBdUQseUZBQXlGLFlBQVksdUJBQXVCLFlBQVksR0FBRzs7QUFFbE0sdURBQXVEO0FBQ3ZEO0FBQ0EsZ0VBQWdFLHlGQUF5RixZQUFZLHVCQUF1QixxQkFBcUIsR0FBRzs7QUFFcE47QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHdEQUF3RDtBQUN4RDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLCtCQUErQjs7QUFFL0Isa0NBQWtDLGtHQUFrRzs7QUFFcEk7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DLGlGQUFpRixPQUFPLGtCQUFrQixhQUFhLEdBQUc7O0FBRTlKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsS0FBSztBQUNMO0FBQ0EsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQjtBQUNBLGtEQUFrRCxrQ0FBa0M7O0FBRXBGLHVCQUF1QjtBQUN2Qix1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7O0FBRXJCLHFCQUFxQixZQUFZLE9BQU87QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QixtQkFBbUI7QUFDbkIsc0dBQXNHLHFCQUFxQjs7QUFFM0g7QUFDQSx5Q0FBeUM7QUFDekMsZ0JBQWdCLDBDQUEwQztBQUMxRDs7QUFFQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBLG9CQUFvQiwwQ0FBMEM7QUFDOUQsK0NBQStDO0FBQy9DO0FBQ0EsNEVBQTRFLEtBQUssWUFBWSxPQUFPLGFBQWEsS0FBSztBQUN0SDs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLDBDQUEwQztBQUM5RDtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLDBDQUEwQztBQUM5RDtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLDBDQUEwQztBQUM5RDtBQUNBLHVDQUF1QztBQUN2QztBQUNBLG9HQUFvRyxLQUFLLFNBQVMsS0FBSztBQUN2SDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQiwwQ0FBMEM7QUFDOUQ7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQywwQ0FBMEM7QUFDaEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0NBQXNDLDBDQUEwQztBQUNoRiw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBOztBQUVBLGVBQWUsMENBQTBDO0FBQ3pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcblByaW1hcnkgQXR0cmlidXRpb25cblJpY2hhcmQgTW9vcmUgPHJpY21vb0BtZS5jb20+XG5odHRwczovL2dpdGh1Yi5jb20vZXRoZXJzLWlvXG5cbk5vdGUsIFJpY2hhcmQgaXMgYSBnb2Qgb2YgZXRoZXIgZ29kcy4gRm9sbG93IGFuZCByZXNwZWN0IGhpbSwgYW5kIHVzZSBFdGhlcnMuaW8hXG4qL1xuXG5jb25zdCBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5jb25zdCBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5jb25zdCBudW1iZXJUb0JOID0gcmVxdWlyZSgnbnVtYmVyLXRvLWJuJyk7XG5jb25zdCBrZWNjYWsyNTYgPSByZXF1aXJlKCdqcy1zaGEzJykua2VjY2FrXzI1NjtcblxuLyoqXG4gKiBDb252ZXJ0IEJ1ZmZlciB0byBoZXggc3RyaW5nXG4gKiBAcGFyYW0geyhCdWZmZXIgfCBzdHJpbmcpfSBkYXRhXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBkYXRhIGluIGhleGFkZWNpbWFsIHN0cmluZ1xuICovXG5mdW5jdGlvbiB0b0hleFN0cmluZ05vUHJlZml4KGRhdGEpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcmV0dXJuIGRhdGEudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIENvbnZlcnQgQnVmZmVyIHRvIGhleCBzdHJpbmcsIHByZWZpeGVkIHdpdGggYDB4YFxuICogQHBhcmFtIHsoQnVmZmVyIHwgc3RyaW5nKX0gZGF0YVxuICogQHJldHVybnMge3N0cmluZ30gZGF0YSBpbiBoZXhhZGVjaW1hbCBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gdG9IZXhTdHJpbmdQcmVmaXhlZChkYXRhKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYDB4JHtkYXRhfWA7XG4gIH1cblxuICByZXR1cm4gYDB4JHtkYXRhLnRvU3RyaW5nKCdoZXgnKX1gO1xufVxuXG5sZXQgbm9IZXhTdHJpbmdQcmVmaXggPSBmYWxzZTtcbi8qKlxuICogQ29udmVydCBCdWZmZXIgdG8gaGV4IHN0cmluZ1xuICogQHBhcmFtIHsoQnVmZmVyIHwgc3RyaW5nKX0gZGF0YVxuICogQHJldHVybnMge3N0cmluZ30gZGF0YSBpbiBoZXhhZGVjaW1hbCBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gdG9IZXhTdHJpbmcoZGF0YSkge1xuICBpZiAobm9IZXhTdHJpbmdQcmVmaXgpIHtcbiAgICByZXR1cm4gdG9IZXhTdHJpbmdOb1ByZWZpeChkYXRhKTtcbiAgfVxuXG4gIHJldHVybiB0b0hleFN0cmluZ1ByZWZpeGVkKGRhdGEpO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBBQkkgZW5jb2Rpbmcgb3B0aW9uc1xuICogQHBhcmFtIHtib29sZWFufSBvcHRzLm5vSGV4U3RyaW5nUHJlZml4IERpc2FibGUgMHggcHJlZml4IHdoZW4gb3V0cHV0aW5nIGhleGFkZWNpbWFsIHN0cmluZ1xuICovXG5mdW5jdGlvbiBjb25maWd1cmUob3B0cykge1xuICBpZiAob3B0cy5ub0hleFN0cmluZ1ByZWZpeCkge1xuICAgIG5vSGV4U3RyaW5nUHJlZml4ID0gdG9IZXhTdHJpbmdOb1ByZWZpeDtcbiAgfVxufVxuXG4vLyBmcm9tIGV0aGVyZXVtanMtdXRpbFxuZnVuY3Rpb24gc3RyaXBaZXJvcyhhSW5wdXQpIHtcbiAgdmFyIGEgPSBhSW5wdXQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgdmFyIGZpcnN0ID0gYVswXTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICB3aGlsZSAoYS5sZW5ndGggPiAwICYmIGZpcnN0LnRvU3RyaW5nKCkgPT09ICcwJykge1xuICAgIGEgPSBhLnNsaWNlKDEpO1xuICAgIGZpcnN0ID0gYVswXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuZnVuY3Rpb24gYm5Ub0J1ZmZlcihibklucHV0KSB7XG4gIHZhciBibiA9IGJuSW5wdXQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgdmFyIGhleCA9IGJuLnRvU3RyaW5nKDE2KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBpZiAoaGV4Lmxlbmd0aCAlIDIpIHsgaGV4ID0gYDAke2hleH1gOyB9XG4gIHJldHVybiBzdHJpcFplcm9zKG5ldyBCdWZmZXIoaGV4LCAnaGV4JykpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgc3RyaW5nIGlzIGhleGFkZWNpbWFsIGRhdGFcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBzaXplXG4gKi9cbmZ1bmN0aW9uIGlzSGV4U3RyaW5nKHZhbHVlLCBzaXplKSB7XG4gIHJldHVybiBoZXhTdHJpbmdUb0J1ZmZlcih2YWx1ZSkubGVuZ3RoID09PSBzaXplO1xufVxuXG4vKipcbiAqIENvbnZlcnQgaGV4YWRlY2ltYWwgc3RyaW5nIHRvIGEgYnVmZmVyLiBUaGUgJzB4JyBwcmVmaXggaXMgb3B0aW9uYWwuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBzaXplIFRoZSBleHBlY3RlZCBidWZmZXIgc2l6ZVxuICogQHBhcmFtIHtzdHJpbmd9IG1zZyBvcHRpb25hbCBlcnJvciBtZXNzYWdlXG4gKi9cbmZ1bmN0aW9uIGhleFN0cmluZ1RvQnVmZmVyKHZhbHVlLCBzaXplID0gbnVsbCwgbXNnID0gbnVsbCkge1xuICBpZiAodHlwZW9mICh2YWx1ZSkgIT09ICdzdHJpbmcnIHx8ICF2YWx1ZS5tYXRjaCgvXigweCk/WzAtOUEtRmEtZl0qJC8pKSB7XG4gICAgY29uc3QgZXJyID0gbmV3IEVycm9yKG1zZyB8fCAnW2V0aGpzLWFiaV0gaW52YWxpZCBoZXggc3RyaW5nJyk7XG4gICAgZXJyLnZhbHVlID0gdmFsdWU7XG4gICAgdGhyb3cgZXJyO1xuICB9XG5cbiAgLy8gbWFzc2FnZSB0aGUgaGV4IHN0cmluZyBiZWZvcmUgY29udmVyc2lvbiB0byBCdWZmZXJcbiAgbGV0IGRhdGEgPSB2YWx1ZTtcbiAgaWYgKGRhdGFbMF0gPT09ICcwJyAmJiBkYXRhWzFdID09PSAneCcpIHtcbiAgICBkYXRhID0gZGF0YS5zbGljZSgyKTtcbiAgfVxuXG4gIGlmIChkYXRhLmxlbmd0aCAlIDIgIT09IDApIHtcbiAgICBkYXRhID0gYDAke2RhdGF9YDtcbiAgfVxuXG4gIGlmIChzaXplICYmIGRhdGEubGVuZ3RoICE9PSBzaXplICogMikge1xuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgYFtldGhqcy1hYmldIEV4cGVjdHMgYSAke3NpemV9IGJ5dGVzIGhleCBzdHJpbmdgKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgQnVmZmVyKGRhdGEsICdoZXgnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHN0cmluZyB0byBCdWZmZXJcbiAqIEBwYXJhbSB7KEJ1ZmZlcnxzdHJpbmcpfSB2YWx1ZUlucHV0XG4gKiBAcmV0dXJucyB7QnVmZmVyfVxuICovXG5mdW5jdGlvbiBoZXhPckJ1ZmZlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBoZXhTdHJpbmdUb0J1ZmZlcih2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGhleGxpZnkodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiAodmFsdWUpID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBgMHgke2JuVG9CdWZmZXIobmV3IEJOKHZhbHVlKSkudG9TdHJpbmcoJ2hleCcpfWA7XG4gIH0gZWxzZSBpZiAodmFsdWUubW9kIHx8IHZhbHVlLm1vZHVsbykge1xuICAgIHJldHVybiBgMHgke2JuVG9CdWZmZXIodmFsdWUpLnRvU3RyaW5nKCdoZXgnKX1gO1xuICB9IGVsc2UgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgcmV0dXJuIGAweCR7aGV4T3JCdWZmZXIodmFsdWUpLnRvU3RyaW5nKCdoZXgnKX1gO1xuICB9XG59XG5cbi8vIGdldEtleXMoW3thOiAxLCBiOiAyfSwge2E6IDMsIGI6IDR9XSwgJ2EnKSA9PiBbMSwgM11cbmZ1bmN0aW9uIGdldEtleXMocGFyYW1zLCBrZXksIGFsbG93RW1wdHkpIHtcbiAgdmFyIHJlc3VsdCA9IFtdOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KHBhcmFtcykpIHsgdGhyb3cgbmV3IEVycm9yKGBbZXRoanMtYWJpXSB3aGlsZSBnZXR0aW5nIGtleXMsIGludmFsaWQgcGFyYW1zIHZhbHVlICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX1gKTsgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICB2YXIgdmFsdWUgPSBwYXJhbXNbaV1ba2V5XTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBpZiAoYWxsb3dFbXB0eSAmJiAhdmFsdWUpIHtcbiAgICAgIHZhbHVlID0gJyc7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgKHZhbHVlKSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW2V0aGpzLWFiaV0gd2hpbGUgZ2V0S2V5cyBmb3VuZCBpbnZhbGlkIEFCSSBkYXRhIHN0cnVjdHVyZSwgdHlwZSB2YWx1ZSBub3Qgc3RyaW5nJyk7XG4gICAgfVxuICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGNvZGVyTnVtYmVyKHNpemUsIHNpZ25lZCkge1xuICByZXR1cm4ge1xuICAgIGVuY29kZTogZnVuY3Rpb24gZW5jb2RlTnVtYmVyKHZhbHVlSW5wdXQpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHZhbHVlSW5wdXQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgJiYgdmFsdWUudG9TdHJpbmdcbiAgICAgICAgJiYgKHZhbHVlLnRvVHdvcyB8fCB2YWx1ZS5kaXZpZGVkVG9JbnRlZ2VyQnkpKSB7XG4gICAgICAgIHZhbHVlID0gKHZhbHVlLnRvU3RyaW5nKDEwKSkuc3BsaXQoJy4nKVswXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSkuc3BsaXQoJy4nKVswXTtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSBudW1iZXJUb0JOKHZhbHVlKTtcbiAgICAgIHZhbHVlID0gdmFsdWUudG9Ud29zKHNpemUgKiA4KS5tYXNrbihzaXplICogOCk7XG4gICAgICBpZiAoc2lnbmVkKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuZnJvbVR3b3Moc2l6ZSAqIDgpLnRvVHdvcygyNTYpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlLnRvQXJyYXlMaWtlKEJ1ZmZlciwgJ2JlJywgMzIpO1xuICAgIH0sXG4gICAgZGVjb2RlOiBmdW5jdGlvbiBkZWNvZGVOdW1iZXIoZGF0YSwgb2Zmc2V0KSB7XG4gICAgICB2YXIganVua0xlbmd0aCA9IDMyIC0gc2l6ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgdmFyIHZhbHVlID0gbmV3IEJOKGRhdGEuc2xpY2Uob2Zmc2V0ICsganVua0xlbmd0aCwgb2Zmc2V0ICsgMzIpKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgaWYgKHNpZ25lZCkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLmZyb21Ud29zKHNpemUgKiA4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFza24oc2l6ZSAqIDgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29uc3VtZWQ6IDMyLFxuICAgICAgICB2YWx1ZTogbmV3IEJOKHZhbHVlLnRvU3RyaW5nKDEwKSksXG4gICAgICB9O1xuICAgIH0sXG4gIH07XG59XG5jb25zdCB1aW50MjU2Q29kZXIgPSBjb2Rlck51bWJlcigzMiwgZmFsc2UpO1xuXG5jb25zdCBjb2RlckJvb2xlYW4gPSB7XG4gIGVuY29kZTogZnVuY3Rpb24gZW5jb2RlQm9vbGVhbih2YWx1ZSkge1xuICAgIHJldHVybiB1aW50MjU2Q29kZXIuZW5jb2RlKHZhbHVlID8gMSA6IDApO1xuICB9LFxuICBkZWNvZGU6IGZ1bmN0aW9uIGRlY29kZUJvb2xlYW4oZGF0YSwgb2Zmc2V0KSB7XG4gICAgdmFyIHJlc3VsdCA9IHVpbnQyNTZDb2Rlci5kZWNvZGUoZGF0YSwgb2Zmc2V0KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIHJldHVybiB7XG4gICAgICBjb25zdW1lZDogcmVzdWx0LmNvbnN1bWVkLFxuICAgICAgdmFsdWU6ICFyZXN1bHQudmFsdWUuaXNaZXJvKCksXG4gICAgfTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGNvZGVyRml4ZWRCeXRlcyhsZW5ndGgpIHtcbiAgcmV0dXJuIHtcbiAgICBlbmNvZGU6IGZ1bmN0aW9uIGVuY29kZUZpeGVkQnl0ZXModmFsdWVJbnB1dCkge1xuICAgICAgdmFyIHZhbHVlID0gdmFsdWVJbnB1dDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgdmFsdWUgPSBoZXhPckJ1ZmZlcih2YWx1ZSk7XG5cbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMyKSB7IHJldHVybiB2YWx1ZTsgfVxuXG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IEJ1ZmZlcigzMik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHJlc3VsdC5maWxsKDApO1xuICAgICAgdmFsdWUuY29weShyZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlRml4ZWRCeXRlcyhkYXRhLCBvZmZzZXQpIHtcbiAgICAgIGlmIChkYXRhLmxlbmd0aCAhPT0gMCAmJiBkYXRhLmxlbmd0aCA8IG9mZnNldCArIDMyKSB7IHRocm93IG5ldyBFcnJvcihgW2V0aGpzLWFiaV0gd2hpbGUgZGVjb2RpbmcgZml4ZWQgYnl0ZXMsIGludmFsaWQgYnl0ZXMgZGF0YSBsZW5ndGg6ICR7bGVuZ3RofWApOyB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnN1bWVkOiAzMixcbiAgICAgICAgdmFsdWU6IHRvSGV4U3RyaW5nKGRhdGEuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfTtcbn1cblxuY29uc3QgY29kZXJBZGRyZXNzID0ge1xuICBlbmNvZGU6IGZ1bmN0aW9uIGVuY29kZUFkZHJlc3MoaW5wdXQpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQnVmZmVyKDMyKTtcbiAgICBjb25zdCB2YWx1ZSA9IGhleFN0cmluZ1RvQnVmZmVyKGlucHV0LCAyMCwgJ1tldGhqcy1hYmldIHdoaWxlIGVuY29kaW5nIGludmFsaWQgYWRkcmVzczsgbm90IGFscGhhbnVtZXJpYyAyMCBieXRlIGhleCBzdHJpbmcnKTtcbiAgICByZXN1bHQuZmlsbCgwKTtcbiAgICB2YWx1ZS5jb3B5KHJlc3VsdCwgMTIpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG4gIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlQWRkcmVzcyhkYXRhLCBvZmZzZXQpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnN1bWVkOiAzMixcbiAgICAgICAgdmFsdWU6IHRvSGV4U3RyaW5nKG5ldyBCdWZmZXIoJycpKSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChkYXRhLmxlbmd0aCAhPT0gMCAmJiBkYXRhLmxlbmd0aCA8IG9mZnNldCArIDMyKSB7IHRocm93IG5ldyBFcnJvcihgW2V0aGpzLWFiaV0gd2hpbGUgZGVjb2RpbmcgYWRkcmVzcyBkYXRhLCBpbnZhbGlkIGFkZHJlc3MgZGF0YSwgaW52YWxpZCBieXRlIGxlbmd0aCAke2RhdGEubGVuZ3RofWApOyB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnN1bWVkOiAzMixcbiAgICAgIHZhbHVlOiB0b0hleFN0cmluZyhkYXRhLnNsaWNlKG9mZnNldCArIDEyLCBvZmZzZXQgKyAzMikudG9TdHJpbmcoJ2hleCcpKSxcbiAgICB9O1xuICB9LFxufTtcblxuZnVuY3Rpb24gZW5jb2RlRHluYW1pY0J5dGVzSGVscGVyKHZhbHVlKSB7XG4gIHZhciBkYXRhTGVuZ3RoID0gcGFyc2VJbnQoMzIgKiBNYXRoLmNlaWwodmFsdWUubGVuZ3RoIC8gMzIpKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICB2YXIgcGFkZGluZyA9IG5ldyBCdWZmZXIoZGF0YUxlbmd0aCAtIHZhbHVlLmxlbmd0aCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgcGFkZGluZy5maWxsKDApO1xuXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFtcbiAgICB1aW50MjU2Q29kZXIuZW5jb2RlKHZhbHVlLmxlbmd0aCksXG4gICAgdmFsdWUsXG4gICAgcGFkZGluZyxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGRlY29kZUR5bmFtaWNCeXRlc0hlbHBlcihkYXRhLCBvZmZzZXQpIHtcbiAgaWYgKGRhdGEubGVuZ3RoICE9PSAwICYmIGRhdGEubGVuZ3RoIDwgb2Zmc2V0ICsgMzIpIHsgdGhyb3cgbmV3IEVycm9yKGBbZXRoanMtYWJpXSB3aGlsZSBkZWNvZGluZyBkeW5hbWljIGJ5dGVzIGRhdGEsIGludmFsaWQgYnl0ZXMgbGVuZ3RoOiAke2RhdGEubGVuZ3RofSBzaG91bGQgYmUgbGVzcyB0aGFuICR7b2Zmc2V0ICsgMzJ9YCk7IH1cblxuICB2YXIgbGVuZ3RoID0gdWludDI1NkNvZGVyLmRlY29kZShkYXRhLCBvZmZzZXQpLnZhbHVlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIGxlbmd0aCA9IGxlbmd0aC50b051bWJlcigpO1xuICBpZiAoZGF0YS5sZW5ndGggIT09IDAgJiYgZGF0YS5sZW5ndGggPCBvZmZzZXQgKyAzMiArIGxlbmd0aCkgeyB0aHJvdyBuZXcgRXJyb3IoYFtldGhqcy1hYmldIHdoaWxlIGRlY29kaW5nIGR5bmFtaWMgYnl0ZXMgZGF0YSwgaW52YWxpZCBieXRlcyBsZW5ndGg6ICR7ZGF0YS5sZW5ndGh9IHNob3VsZCBiZSBsZXNzIHRoYW4gJHtvZmZzZXQgKyAzMiArIGxlbmd0aH1gKTsgfVxuXG4gIHJldHVybiB7XG4gICAgY29uc3VtZWQ6IHBhcnNlSW50KDMyICsgMzIgKiBNYXRoLmNlaWwobGVuZ3RoIC8gMzIpLCAxMCksXG4gICAgdmFsdWU6IGRhdGEuc2xpY2Uob2Zmc2V0ICsgMzIsIG9mZnNldCArIDMyICsgbGVuZ3RoKSxcbiAgfTtcbn1cblxuY29uc3QgY29kZXJEeW5hbWljQnl0ZXMgPSB7XG4gIGVuY29kZTogZnVuY3Rpb24gZW5jb2RlRHluYW1pY0J5dGVzKHZhbHVlKSB7XG4gICAgcmV0dXJuIGVuY29kZUR5bmFtaWNCeXRlc0hlbHBlcihoZXhPckJ1ZmZlcih2YWx1ZSkpO1xuICB9LFxuICBkZWNvZGU6IGZ1bmN0aW9uIGRlY29kZUR5bmFtaWNCeXRlcyhkYXRhLCBvZmZzZXQpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGVjb2RlRHluYW1pY0J5dGVzSGVscGVyKGRhdGEsIG9mZnNldCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICByZXN1bHQudmFsdWUgPSB0b0hleFN0cmluZyhyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG4gIGR5bmFtaWM6IHRydWUsXG59O1xuXG5jb25zdCBjb2RlclN0cmluZyA9IHtcbiAgZW5jb2RlOiBmdW5jdGlvbiBlbmNvZGVTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gZW5jb2RlRHluYW1pY0J5dGVzSGVscGVyKG5ldyBCdWZmZXIodmFsdWUsICd1dGY4JykpO1xuICB9LFxuICBkZWNvZGU6IGZ1bmN0aW9uIGRlY29kZVN0cmluZyhkYXRhLCBvZmZzZXQpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGVjb2RlRHluYW1pY0J5dGVzSGVscGVyKGRhdGEsIG9mZnNldCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICByZXN1bHQudmFsdWUgPSByZXN1bHQudmFsdWUudG9TdHJpbmcoJ3V0ZjgnKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LFxuICBkeW5hbWljOiB0cnVlLFxufTtcblxuZnVuY3Rpb24gY29kZXJBcnJheShjb2RlciwgbGVuZ3RoSW5wdXQpIHtcbiAgcmV0dXJuIHtcbiAgICBlbmNvZGU6IGZ1bmN0aW9uIGVuY29kZUFycmF5KHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IEJ1ZmZlcigwKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgdmFyIGxlbmd0aCA9IGxlbmd0aElucHV0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsgdGhyb3cgbmV3IEVycm9yKCdbZXRoanMtYWJpXSB3aGlsZSBlbmNvZGluZyBhcnJheSwgaW52YWxpZCBhcnJheSBkYXRhLCBub3QgdHlwZSBPYmplY3QgKEFycmF5KScpOyB9XG5cbiAgICAgIGlmIChsZW5ndGggPT09IC0xKSB7XG4gICAgICAgIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgcmVzdWx0ID0gdWludDI1NkNvZGVyLmVuY29kZShsZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAobGVuZ3RoICE9PSB2YWx1ZS5sZW5ndGgpIHsgdGhyb3cgbmV3IEVycm9yKGBbZXRoanMtYWJpXSB3aGlsZSBlbmNvZGluZyBhcnJheSwgc2l6ZSBtaXNtYXRjaCBhcnJheSBsZW5ndGggJHtsZW5ndGh9IGRvZXMgbm90IGVxdWFsICR7dmFsdWUubGVuZ3RofWApOyB9XG5cbiAgICAgIHZhbHVlLmZvckVhY2goKHJlc3VsdFZhbHVlKSA9PiB7XG4gICAgICAgIHJlc3VsdCA9IEJ1ZmZlci5jb25jYXQoW1xuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICBjb2Rlci5lbmNvZGUocmVzdWx0VmFsdWUpLFxuICAgICAgICBdKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgZGVjb2RlOiBmdW5jdGlvbiBkZWNvZGVBcnJheShkYXRhLCBvZmZzZXRJbnB1dCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGxlbmd0aElucHV0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICB2YXIgb2Zmc2V0ID0gb2Zmc2V0SW5wdXQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIC8vIEBUT0RPOlxuICAgICAgLy8gaWYgKGRhdGEubGVuZ3RoIDwgb2Zmc2V0ICsgbGVuZ3RoICogMzIpIHsgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGFycmF5Jyk7IH1cblxuICAgICAgdmFyIGNvbnN1bWVkID0gMDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgdmFyIGRlY29kZVJlc3VsdDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgICBpZiAobGVuZ3RoID09PSAtMSkge1xuICAgICAgICBkZWNvZGVSZXN1bHQgPSB1aW50MjU2Q29kZXIuZGVjb2RlKGRhdGEsIG9mZnNldCk7XG4gICAgICAgIGxlbmd0aCA9IGRlY29kZVJlc3VsdC52YWx1ZS50b051bWJlcigpO1xuICAgICAgICBjb25zdW1lZCArPSBkZWNvZGVSZXN1bHQuY29uc3VtZWQ7XG4gICAgICAgIG9mZnNldCArPSBkZWNvZGVSZXN1bHQuY29uc3VtZWQ7XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IFtdOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICBjb25zdCBsb29wUmVzdWx0ID0gY29kZXIuZGVjb2RlKGRhdGEsIG9mZnNldCk7XG4gICAgICAgIGNvbnN1bWVkICs9IGxvb3BSZXN1bHQuY29uc3VtZWQ7XG4gICAgICAgIG9mZnNldCArPSBsb29wUmVzdWx0LmNvbnN1bWVkO1xuICAgICAgICB2YWx1ZS5wdXNoKGxvb3BSZXN1bHQudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb25zdW1lZCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9O1xuICAgIH0sXG4gICAgZHluYW1pYzogKGxlbmd0aElucHV0ID09PSAtMSksXG4gIH07XG59XG5cbi8vIEJyZWFrIHRoZSB0eXBlIHVwIGludG8gW3N0YXRpY1R5cGVdW3N0YXRpY0FycmF5XSpbZHluYW1pY0FycmF5XT8gfCBbZHluYW1pY1R5cGVdIGFuZFxuLy8gYnVpbGQgdGhlIGNvZGVyIHVwIGZyb20gaXRzIHBhcnRzXG5jb25zdCBwYXJhbVR5cGVQYXJ0ID0gbmV3IFJlZ0V4cCgvXigodT9pbnR8Ynl0ZXMpKFswLTldKil8KGFkZHJlc3N8Ym9vbHxzdHJpbmcpfChcXFsoWzAtOV0qKVxcXSkpLyk7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlSW5wdXRcbiAqL1xuZnVuY3Rpb24gZ2V0UGFyYW1Db2Rlcih0eXBlSW5wdXQpIHtcbiAgdmFyIHR5cGUgPSB0eXBlSW5wdXQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgdmFyIGNvZGVyID0gbnVsbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBjb25zdCBpbnZhbGlkVHlwZUVycm9yTWVzc2FnZSA9IGBbZXRoanMtYWJpXSB3aGlsZSBnZXR0aW5nIHBhcmFtIGNvZGVyIChnZXRQYXJhbUNvZGVyKSB0eXBlIHZhbHVlICR7SlNPTi5zdHJpbmdpZnkodHlwZSl9IGlzIGVpdGhlciBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIGJ5IGV0aGpzLWFiaS5gO1xuXG4gIHdoaWxlICh0eXBlKSB7XG4gICAgdmFyIHBhcnQgPSB0eXBlLm1hdGNoKHBhcmFtVHlwZVBhcnQpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgaWYgKCFwYXJ0KSB7IHRocm93IG5ldyBFcnJvcihpbnZhbGlkVHlwZUVycm9yTWVzc2FnZSk7IH1cbiAgICB0eXBlID0gdHlwZS5zdWJzdHJpbmcocGFydFswXS5sZW5ndGgpO1xuXG4gICAgdmFyIHByZWZpeCA9IChwYXJ0WzJdIHx8IHBhcnRbNF0gfHwgcGFydFs1XSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBzd2l0Y2ggKHByZWZpeCkge1xuICAgICAgY2FzZSAnaW50JzogY2FzZSAndWludCc6XG4gICAgICAgIGlmIChjb2RlcikgeyB0aHJvdyBuZXcgRXJyb3IoaW52YWxpZFR5cGVFcnJvck1lc3NhZ2UpOyB9XG4gICAgICAgIHZhciBpbnRTaXplID0gcGFyc2VJbnQocGFydFszXSB8fCAyNTYpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgIGlmIChpbnRTaXplID09PSAwIHx8IGludFNpemUgPiAyNTYgfHwgKGludFNpemUgJSA4KSAhPT0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW2V0aGpzLWFiaV0gd2hpbGUgZ2V0dGluZyBwYXJhbSBjb2RlciBmb3IgdHlwZSAke3R5cGV9LCBpbnZhbGlkICR7cHJlZml4fTxOPiB3aWR0aDogJHt0eXBlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29kZXIgPSBjb2Rlck51bWJlcihpbnRTaXplIC8gOCwgKHByZWZpeCA9PT0gJ2ludCcpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2Jvb2wnOlxuICAgICAgICBpZiAoY29kZXIpIHsgdGhyb3cgbmV3IEVycm9yKGludmFsaWRUeXBlRXJyb3JNZXNzYWdlKTsgfVxuICAgICAgICBjb2RlciA9IGNvZGVyQm9vbGVhbjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGlmIChjb2RlcikgeyB0aHJvdyBuZXcgRXJyb3IoaW52YWxpZFR5cGVFcnJvck1lc3NhZ2UpOyB9XG4gICAgICAgIGNvZGVyID0gY29kZXJTdHJpbmc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdieXRlcyc6XG4gICAgICAgIGlmIChjb2RlcikgeyB0aHJvdyBuZXcgRXJyb3IoaW52YWxpZFR5cGVFcnJvck1lc3NhZ2UpOyB9XG4gICAgICAgIGlmIChwYXJ0WzNdKSB7XG4gICAgICAgICAgdmFyIHNpemUgPSBwYXJzZUludChwYXJ0WzNdKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICAgIGlmIChzaXplID09PSAwIHx8IHNpemUgPiAzMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbZXRoanMtYWJpXSB3aGlsZSBnZXR0aW5nIHBhcmFtIGNvZGVyIGZvciBwcmVmaXggYnl0ZXMsIGludmFsaWQgdHlwZSAke3R5cGV9LCBzaXplICR7c2l6ZX0gc2hvdWxkIGJlIDAgb3IgZ3JlYXRlciB0aGFuIDMyYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvZGVyID0gY29kZXJGaXhlZEJ5dGVzKHNpemUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvZGVyID0gY29kZXJEeW5hbWljQnl0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2FkZHJlc3MnOlxuICAgICAgICBpZiAoY29kZXIpIHsgdGhyb3cgbmV3IEVycm9yKGludmFsaWRUeXBlRXJyb3JNZXNzYWdlKTsgfVxuICAgICAgICBjb2RlciA9IGNvZGVyQWRkcmVzcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ1tdJzpcbiAgICAgICAgaWYgKCFjb2RlciB8fCBjb2Rlci5keW5hbWljKSB7IHRocm93IG5ldyBFcnJvcihpbnZhbGlkVHlwZUVycm9yTWVzc2FnZSk7IH1cbiAgICAgICAgY29kZXIgPSBjb2RlckFycmF5KGNvZGVyLCAtMSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBcIlswLTkrXVwiXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoIWNvZGVyIHx8IGNvZGVyLmR5bmFtaWMpIHsgdGhyb3cgbmV3IEVycm9yKGludmFsaWRUeXBlRXJyb3JNZXNzYWdlKTsgfVxuICAgICAgICB2YXIgZGVmYXVsdFNpemUgPSBwYXJzZUludChwYXJ0WzZdKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICBjb2RlciA9IGNvZGVyQXJyYXkoY29kZXIsIGRlZmF1bHRTaXplKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvZGVyKSB7IHRocm93IG5ldyBFcnJvcihpbnZhbGlkVHlwZUVycm9yTWVzc2FnZSk7IH1cbiAgcmV0dXJuIGNvZGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQk4sXG4gIGJuVG9CdWZmZXIsXG4gIGlzSGV4U3RyaW5nLFxuICBoZXhPckJ1ZmZlcixcbiAgaGV4bGlmeSxcbiAgc3RyaXBaZXJvcyxcbiAgaGV4U3RyaW5nVG9CdWZmZXIsXG5cbiAga2VjY2FrMjU2LFxuXG4gIGdldEtleXMsXG4gIG51bWJlclRvQk4sXG4gIGNvZGVyTnVtYmVyLFxuICB1aW50MjU2Q29kZXIsXG4gIGNvZGVyQm9vbGVhbixcbiAgY29kZXJGaXhlZEJ5dGVzLFxuICBjb2RlckFkZHJlc3MsXG4gIGNvZGVyRHluYW1pY0J5dGVzLFxuICBjb2RlclN0cmluZyxcbiAgY29kZXJBcnJheSxcbiAgcGFyYW1UeXBlUGFydCxcbiAgZ2V0UGFyYW1Db2RlcixcbiAgY29uZmlndXJlLFxuICB0b0hleFN0cmluZ05vUHJlZml4LFxuICB0b0hleFN0cmluZ1ByZWZpeGVkLFxuICB0b0hleFN0cmluZyxcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///23\n")},function(module,exports){eval('module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, "loaded", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, "id", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLyh3ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qcz9jZWQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdGlmICghbW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xuXHRcdG1vZHVsZS5kZXByZWNhdGUgPSBmdW5jdGlvbigpIHt9O1xuXHRcdG1vZHVsZS5wYXRocyA9IFtdO1xuXHRcdC8vIG1vZHVsZS5wYXJlbnQgPSB1bmRlZmluZWQgYnkgZGVmYXVsdFxuXHRcdGlmICghbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImxvYWRlZFwiLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5sO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwiaWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUuaTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcblx0fVxuXHRyZXR1cm4gbW9kdWxlO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///24\n')},function(module,exports,__webpack_require__){eval("var BN = __webpack_require__(7);\nvar stripHexPrefix = __webpack_require__(26);\n\n/**\n * Returns a BN object, converts a number value to a BN\n * @param {String|Number|Object} `arg` input a string number, hex string number, number, BigNumber or BN object\n * @return {Object} `output` BN object of the number\n * @throws if the argument is not an array, object that isn't a bignumber, not a string number or number\n */\nmodule.exports = function numberToBN(arg) {\n  if (typeof arg === 'string' || typeof arg === 'number') {\n    var multiplier = new BN(1); // eslint-disable-line\n    var formattedString = String(arg).toLowerCase().trim();\n    var isHexPrefixed = formattedString.substr(0, 2) === '0x' || formattedString.substr(0, 3) === '-0x';\n    var stringArg = stripHexPrefix(formattedString); // eslint-disable-line\n    if (stringArg.substr(0, 1) === '-') {\n      stringArg = stripHexPrefix(stringArg.slice(1));\n      multiplier = new BN(-1, 10);\n    }\n    stringArg = stringArg === '' ? '0' : stringArg;\n\n    if ((!stringArg.match(/^-?[0-9]+$/) && stringArg.match(/^[0-9A-Fa-f]+$/))\n      || stringArg.match(/^[a-fA-F]+$/)\n      || (isHexPrefixed === true && stringArg.match(/^[0-9A-Fa-f]+$/))) {\n      return new BN(stringArg, 16).mul(multiplier);\n    }\n\n    if ((stringArg.match(/^-?[0-9]+$/) || stringArg === '') && isHexPrefixed === false) {\n      return new BN(stringArg, 10).mul(multiplier);\n    }\n  } else if (typeof arg === 'object' && arg.toString && (!arg.pop && !arg.push)) {\n    if (arg.toString(10).match(/^-?[0-9]+$/) && (arg.mul || arg.dividedToIntegerBy)) {\n      return new BN(arg.toString(10), 10);\n    }\n  }\n\n  throw new Error('[number-to-bn] while converting number ' + JSON.stringify(arg) + ' to BN.js instance, error: invalid number value. Value must be an integer, hex string, BN or BigNumber instance. Note, decimals are not supported.');\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL251bWJlci10by1ibi9zcmMvaW5kZXguanM/YTZiNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsQ0FBTztBQUN4QixxQkFBcUIsbUJBQU8sQ0FBQyxFQUFrQjs7QUFFL0M7QUFDQTtBQUNBLFdBQVcscUJBQXFCO0FBQ2hDLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIyNS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgc3RyaXBIZXhQcmVmaXggPSByZXF1aXJlKCdzdHJpcC1oZXgtcHJlZml4Jyk7XG5cbi8qKlxuICogUmV0dXJucyBhIEJOIG9iamVjdCwgY29udmVydHMgYSBudW1iZXIgdmFsdWUgdG8gYSBCTlxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfE9iamVjdH0gYGFyZ2AgaW5wdXQgYSBzdHJpbmcgbnVtYmVyLCBoZXggc3RyaW5nIG51bWJlciwgbnVtYmVyLCBCaWdOdW1iZXIgb3IgQk4gb2JqZWN0XG4gKiBAcmV0dXJuIHtPYmplY3R9IGBvdXRwdXRgIEJOIG9iamVjdCBvZiB0aGUgbnVtYmVyXG4gKiBAdGhyb3dzIGlmIHRoZSBhcmd1bWVudCBpcyBub3QgYW4gYXJyYXksIG9iamVjdCB0aGF0IGlzbid0IGEgYmlnbnVtYmVyLCBub3QgYSBzdHJpbmcgbnVtYmVyIG9yIG51bWJlclxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG51bWJlclRvQk4oYXJnKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHZhciBtdWx0aXBsaWVyID0gbmV3IEJOKDEpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgdmFyIGZvcm1hdHRlZFN0cmluZyA9IFN0cmluZyhhcmcpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIHZhciBpc0hleFByZWZpeGVkID0gZm9ybWF0dGVkU3RyaW5nLnN1YnN0cigwLCAyKSA9PT0gJzB4JyB8fCBmb3JtYXR0ZWRTdHJpbmcuc3Vic3RyKDAsIDMpID09PSAnLTB4JztcbiAgICB2YXIgc3RyaW5nQXJnID0gc3RyaXBIZXhQcmVmaXgoZm9ybWF0dGVkU3RyaW5nKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIGlmIChzdHJpbmdBcmcuc3Vic3RyKDAsIDEpID09PSAnLScpIHtcbiAgICAgIHN0cmluZ0FyZyA9IHN0cmlwSGV4UHJlZml4KHN0cmluZ0FyZy5zbGljZSgxKSk7XG4gICAgICBtdWx0aXBsaWVyID0gbmV3IEJOKC0xLCAxMCk7XG4gICAgfVxuICAgIHN0cmluZ0FyZyA9IHN0cmluZ0FyZyA9PT0gJycgPyAnMCcgOiBzdHJpbmdBcmc7XG5cbiAgICBpZiAoKCFzdHJpbmdBcmcubWF0Y2goL14tP1swLTldKyQvKSAmJiBzdHJpbmdBcmcubWF0Y2goL15bMC05QS1GYS1mXSskLykpXG4gICAgICB8fCBzdHJpbmdBcmcubWF0Y2goL15bYS1mQS1GXSskLylcbiAgICAgIHx8IChpc0hleFByZWZpeGVkID09PSB0cnVlICYmIHN0cmluZ0FyZy5tYXRjaCgvXlswLTlBLUZhLWZdKyQvKSkpIHtcbiAgICAgIHJldHVybiBuZXcgQk4oc3RyaW5nQXJnLCAxNikubXVsKG11bHRpcGxpZXIpO1xuICAgIH1cblxuICAgIGlmICgoc3RyaW5nQXJnLm1hdGNoKC9eLT9bMC05XSskLykgfHwgc3RyaW5nQXJnID09PSAnJykgJiYgaXNIZXhQcmVmaXhlZCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBuZXcgQk4oc3RyaW5nQXJnLCAxMCkubXVsKG11bHRpcGxpZXIpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcudG9TdHJpbmcgJiYgKCFhcmcucG9wICYmICFhcmcucHVzaCkpIHtcbiAgICBpZiAoYXJnLnRvU3RyaW5nKDEwKS5tYXRjaCgvXi0/WzAtOV0rJC8pICYmIChhcmcubXVsIHx8IGFyZy5kaXZpZGVkVG9JbnRlZ2VyQnkpKSB7XG4gICAgICByZXR1cm4gbmV3IEJOKGFyZy50b1N0cmluZygxMCksIDEwKTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1tudW1iZXItdG8tYm5dIHdoaWxlIGNvbnZlcnRpbmcgbnVtYmVyICcgKyBKU09OLnN0cmluZ2lmeShhcmcpICsgJyB0byBCTi5qcyBpbnN0YW5jZSwgZXJyb3I6IGludmFsaWQgbnVtYmVyIHZhbHVlLiBWYWx1ZSBtdXN0IGJlIGFuIGludGVnZXIsIGhleCBzdHJpbmcsIEJOIG9yIEJpZ051bWJlciBpbnN0YW5jZS4gTm90ZSwgZGVjaW1hbHMgYXJlIG5vdCBzdXBwb3J0ZWQuJyk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("var isHexPrefixed = __webpack_require__(27);\n\n/**\n * Removes '0x' from a given `String` is present\n * @param {String} str the string value\n * @return {String|Optional} a string by pass if necessary\n */\nmodule.exports = function stripHexPrefix(str) {\n  if (typeof str !== 'string') {\n    return str;\n  }\n\n  return isHexPrefixed(str) ? str.slice(2) : str;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3N0cmlwLWhleC1wcmVmaXgvc3JjL2luZGV4LmpzPzg1YjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CLG1CQUFPLENBQUMsRUFBaUI7O0FBRTdDO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWSxnQkFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzSGV4UHJlZml4ZWQgPSByZXF1aXJlKCdpcy1oZXgtcHJlZml4ZWQnKTtcblxuLyoqXG4gKiBSZW1vdmVzICcweCcgZnJvbSBhIGdpdmVuIGBTdHJpbmdgIGlzIHByZXNlbnRcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgdGhlIHN0cmluZyB2YWx1ZVxuICogQHJldHVybiB7U3RyaW5nfE9wdGlvbmFsfSBhIHN0cmluZyBieSBwYXNzIGlmIG5lY2Vzc2FyeVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmlwSGV4UHJlZml4KHN0cikge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgcmV0dXJuIGlzSGV4UHJlZml4ZWQoc3RyKSA/IHN0ci5zbGljZSgyKSA6IHN0cjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///26\n")},function(module,exports){eval("/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param {String} str the string input value\n * @return {Boolean} a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nmodule.exports = function isHexPrefixed(str) {\n  if (typeof str !== 'string') {\n    throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \" + (typeof str) + \", while checking isHexPrefixed.\");\n  }\n\n  return str.slice(0, 2) === '0x';\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2lzLWhleC1wcmVmaXhlZC9zcmMvaW5kZXguanM/NTE2MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIyNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJucyBhIGBCb29sZWFuYCBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgYSBgU3RyaW5nYCBzdGFydHMgd2l0aCAnMHgnXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIHRoZSBzdHJpbmcgaW5wdXQgdmFsdWVcbiAqIEByZXR1cm4ge0Jvb2xlYW59IGEgYm9vbGVhbiBpZiBpdCBpcyBvciBpcyBub3QgaGV4IHByZWZpeGVkXG4gKiBAdGhyb3dzIGlmIHRoZSBzdHIgaW5wdXQgaXMgbm90IGEgc3RyaW5nXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNIZXhQcmVmaXhlZChzdHIpIHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW2lzLWhleC1wcmVmaXhlZF0gdmFsdWUgbXVzdCBiZSB0eXBlICdzdHJpbmcnLCBpcyBjdXJyZW50bHkgdHlwZSBcIiArICh0eXBlb2Ygc3RyKSArIFwiLCB3aGlsZSBjaGVja2luZyBpc0hleFByZWZpeGVkLlwiKTtcbiAgfVxuXG4gIHJldHVybiBzdHIuc2xpY2UoMCwgMikgPT09ICcweCc7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(process, global) {/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.5\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n(function (root) {\r\n  'use strict';\r\n\r\n  var NODE_JS = typeof process == 'object' && process.versions && process.versions.node;\r\n  if (NODE_JS) {\r\n    root = global;\r\n  }\r\n  var COMMON_JS = !root.JS_SHA3_TEST && typeof module == 'object' && module.exports;\r\n  var HEX_CHARS = '0123456789abcdef'.split('');\r\n  var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n  var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n  var PADDING = [6, 1536, 393216, 100663296];\r\n  var SHIFT = [0, 8, 16, 24];\r\n  var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n            0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, \r\n            2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, \r\n            2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n            2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n  var BITS = [224, 256, 384, 512];\r\n  var SHAKE_BITS = [128, 256];\r\n  var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n  var createOutputMethod = function (bits, padding, outputType) {\r\n    return function (message) {\r\n      return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n    }\r\n  };\r\n\r\n  var createShakeOutputMethod = function (bits, padding, outputType) {\r\n    return function (message, outputBits) {\r\n      return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n    }\r\n  };\r\n\r\n  var createMethod = function (bits, padding) {\r\n    var method = createOutputMethod(bits, padding, 'hex');\r\n    method.create = function () {\r\n      return new Keccak(bits, padding, bits);\r\n    };\r\n    method.update = function (message) {\r\n      return method.create().update(message);\r\n    };\r\n    for (var i = 0;i < OUTPUT_TYPES.length;++i) {\r\n      var type = OUTPUT_TYPES[i];\r\n      method[type] = createOutputMethod(bits, padding, type);\r\n    }\r\n    return method;\r\n  };\r\n\r\n  var createShakeMethod = function (bits, padding) {\r\n    var method = createShakeOutputMethod(bits, padding, 'hex');\r\n    method.create = function (outputBits) {\r\n      return new Keccak(bits, padding, outputBits);\r\n    };\r\n    method.update = function (message, outputBits) {\r\n      return method.create(outputBits).update(message);\r\n    };\r\n    for (var i = 0;i < OUTPUT_TYPES.length;++i) {\r\n      var type = OUTPUT_TYPES[i];\r\n      method[type] = createShakeOutputMethod(bits, padding, type);\r\n    }\r\n    return method;\r\n  };\r\n\r\n  var algorithms = [\r\n    {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n    {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n    {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n  ];\r\n\r\n  var methods = {};\r\n\r\n  for (var i = 0;i < algorithms.length;++i) {\r\n    var algorithm = algorithms[i];\r\n    var bits  = algorithm.bits;\r\n    for (var j = 0;j < bits.length;++j) {\r\n      methods[algorithm.name +'_' + bits[j]] = algorithm.createMethod(bits[j], algorithm.padding);\r\n    }\r\n  }\r\n\r\n  function Keccak(bits, padding, outputBits) {\r\n    this.blocks = [];\r\n    this.s = [];\r\n    this.padding = padding;\r\n    this.outputBits = outputBits;\r\n    this.reset = true;\r\n    this.block = 0;\r\n    this.start = 0;\r\n    this.blockCount = (1600 - (bits << 1)) >> 5;\r\n    this.byteCount = this.blockCount << 2;\r\n    this.outputBlocks = outputBits >> 5;\r\n    this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n    for (var i = 0;i < 50;++i) {\r\n      this.s[i] = 0;\r\n    }\r\n  };\r\n\r\n  Keccak.prototype.update = function (message) {\r\n    var notString = typeof message != 'string';\r\n    if (notString && message.constructor == root.ArrayBuffer) {\r\n      message = new Uint8Array(message);\r\n    }\r\n    var length = message.length, blocks = this.blocks, byteCount = this.byteCount, \r\n        blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n    \r\n    while (index < length) {\r\n      if (this.reset) {\r\n        this.reset = false;\r\n        blocks[0] = this.block;\r\n        for (i = 1;i < blockCount + 1;++i) {\r\n          blocks[i] = 0;\r\n        }\r\n      }\r\n      if (notString) {\r\n        for (i = this.start;index < length && i < byteCount;++index) {\r\n          blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n        }\r\n      } else {\r\n        for (i = this.start;index < length && i < byteCount;++index) {\r\n          code = message.charCodeAt(index);\r\n          if (code < 0x80) {\r\n            blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n          } else if (code < 0x800) {\r\n            blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n          } else if (code < 0xd800 || code >= 0xe000) {\r\n            blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n          } else {\r\n            code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n            blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n          }\r\n        }\r\n      }\r\n      this.lastByteIndex = i;\r\n      if (i >= byteCount) {\r\n        this.start = i - byteCount;\r\n        this.block = blocks[blockCount];\r\n        for (i = 0;i < blockCount;++i) {\r\n          s[i] ^= blocks[i];\r\n        }\r\n        f(s);\r\n        this.reset = true;\r\n      } else {\r\n        this.start = i;\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  Keccak.prototype.finalize = function () {\r\n    var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n    blocks[i >> 2] |= this.padding[i & 3];\r\n    if (this.lastByteIndex == this.byteCount) {\r\n      blocks[0] = blocks[blockCount];\r\n      for (i = 1;i < blockCount + 1;++i) {\r\n        blocks[i] = 0;\r\n      }\r\n    }\r\n    blocks[blockCount - 1] |= 0x80000000;\r\n    for (i = 0;i < blockCount;++i) {\r\n      s[i] ^= blocks[i];\r\n    }\r\n    f(s);\r\n  };\r\n\r\n  Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n    this.finalize();\r\n\r\n    var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, \r\n        extraBytes = this.extraBytes, i = 0, j = 0;\r\n    var hex = '', block;\r\n    while (j < outputBlocks) {\r\n      for (i = 0;i < blockCount && j < outputBlocks;++i, ++j) {\r\n        block = s[i];\r\n        hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n               HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n               HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n               HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n      }\r\n      if (j % blockCount == 0) {\r\n        f(s);\r\n        i = 0;\r\n      }\r\n    }\r\n    if (extraBytes) {\r\n      block = s[i];\r\n      if (extraBytes > 0) {\r\n        hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n      }\r\n      if (extraBytes > 1) {\r\n        hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n      }\r\n      if (extraBytes > 2) {\r\n        hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n      }\r\n    }\r\n    return hex;\r\n  };\r\n\r\n  Keccak.prototype.arrayBuffer = function () {\r\n    this.finalize();\r\n\r\n    var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, \r\n        extraBytes = this.extraBytes, i = 0, j = 0;\r\n    var bytes = this.outputBits >> 3;\r\n    var buffer;\r\n    if (extraBytes) {\r\n      buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n    } else {\r\n      buffer = new ArrayBuffer(bytes);\r\n    }\r\n    var array = new Uint32Array(buffer);\r\n    while (j < outputBlocks) {\r\n      for (i = 0;i < blockCount && j < outputBlocks;++i, ++j) {\r\n        array[j] = s[i];\r\n      }\r\n      if (j % blockCount == 0) {\r\n        f(s);\r\n      }\r\n    }\r\n    if (extraBytes) {\r\n      array[i] = s[i];\r\n      buffer = buffer.slice(0, bytes);\r\n    }\r\n    return buffer;\r\n  };\r\n\r\n  Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n  Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n    this.finalize();\r\n\r\n    var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, \r\n        extraBytes = this.extraBytes, i = 0, j = 0;\r\n    var array = [], offset, block;\r\n    while (j < outputBlocks) {\r\n      for (i = 0;i < blockCount && j < outputBlocks;++i, ++j) {\r\n        offset = j << 2;\r\n        block = s[i];\r\n        array[offset] = block & 0xFF;\r\n        array[offset + 1] = (block >> 8) & 0xFF;\r\n        array[offset + 2] = (block >> 16) & 0xFF;\r\n        array[offset + 3] = (block >> 24) & 0xFF;\r\n      }\r\n      if (j % blockCount == 0) {\r\n        f(s);\r\n      }\r\n    }\r\n    if (extraBytes) {\r\n      offset = j << 2;\r\n      block = s[i];\r\n      if (extraBytes > 0) {\r\n        array[offset] = block & 0xFF;\r\n      }\r\n      if (extraBytes > 1) {\r\n        array[offset + 1] = (block >> 8) & 0xFF;\r\n      }\r\n      if (extraBytes > 2) {\r\n        array[offset + 2] = (block >> 16) & 0xFF;\r\n      }\r\n    }\r\n    return array;\r\n  };\r\n\r\n  var f = function (s) {\r\n    var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, \r\n        b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, \r\n        b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, \r\n        b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n    for (n = 0;n < 48;n += 2) {\r\n      c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n      c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n      c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n      c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n      c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n      c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n      c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n      c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n      c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n      c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n      h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n      l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n      s[0] ^= h;\r\n      s[1] ^= l;\r\n      s[10] ^= h;\r\n      s[11] ^= l;\r\n      s[20] ^= h;\r\n      s[21] ^= l;\r\n      s[30] ^= h;\r\n      s[31] ^= l;\r\n      s[40] ^= h;\r\n      s[41] ^= l;\r\n      h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n      l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n      s[2] ^= h;\r\n      s[3] ^= l;\r\n      s[12] ^= h;\r\n      s[13] ^= l;\r\n      s[22] ^= h;\r\n      s[23] ^= l;\r\n      s[32] ^= h;\r\n      s[33] ^= l;\r\n      s[42] ^= h;\r\n      s[43] ^= l;\r\n      h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n      l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n      s[4] ^= h;\r\n      s[5] ^= l;\r\n      s[14] ^= h;\r\n      s[15] ^= l;\r\n      s[24] ^= h;\r\n      s[25] ^= l;\r\n      s[34] ^= h;\r\n      s[35] ^= l;\r\n      s[44] ^= h;\r\n      s[45] ^= l;\r\n      h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n      l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n      s[6] ^= h;\r\n      s[7] ^= l;\r\n      s[16] ^= h;\r\n      s[17] ^= l;\r\n      s[26] ^= h;\r\n      s[27] ^= l;\r\n      s[36] ^= h;\r\n      s[37] ^= l;\r\n      s[46] ^= h;\r\n      s[47] ^= l;\r\n      h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n      l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n      s[8] ^= h;\r\n      s[9] ^= l;\r\n      s[18] ^= h;\r\n      s[19] ^= l;\r\n      s[28] ^= h;\r\n      s[29] ^= l;\r\n      s[38] ^= h;\r\n      s[39] ^= l;\r\n      s[48] ^= h;\r\n      s[49] ^= l;\r\n\r\n      b0 = s[0];\r\n      b1 = s[1];\r\n      b32 = (s[11] << 4) | (s[10] >>> 28);\r\n      b33 = (s[10] << 4) | (s[11] >>> 28);\r\n      b14 = (s[20] << 3) | (s[21] >>> 29);\r\n      b15 = (s[21] << 3) | (s[20] >>> 29);\r\n      b46 = (s[31] << 9) | (s[30] >>> 23);\r\n      b47 = (s[30] << 9) | (s[31] >>> 23);\r\n      b28 = (s[40] << 18) | (s[41] >>> 14);\r\n      b29 = (s[41] << 18) | (s[40] >>> 14);\r\n      b20 = (s[2] << 1) | (s[3] >>> 31);\r\n      b21 = (s[3] << 1) | (s[2] >>> 31);\r\n      b2 = (s[13] << 12) | (s[12] >>> 20);\r\n      b3 = (s[12] << 12) | (s[13] >>> 20);\r\n      b34 = (s[22] << 10) | (s[23] >>> 22);\r\n      b35 = (s[23] << 10) | (s[22] >>> 22);\r\n      b16 = (s[33] << 13) | (s[32] >>> 19);\r\n      b17 = (s[32] << 13) | (s[33] >>> 19);\r\n      b48 = (s[42] << 2) | (s[43] >>> 30);\r\n      b49 = (s[43] << 2) | (s[42] >>> 30);\r\n      b40 = (s[5] << 30) | (s[4] >>> 2);\r\n      b41 = (s[4] << 30) | (s[5] >>> 2);\r\n      b22 = (s[14] << 6) | (s[15] >>> 26);\r\n      b23 = (s[15] << 6) | (s[14] >>> 26);\r\n      b4 = (s[25] << 11) | (s[24] >>> 21);\r\n      b5 = (s[24] << 11) | (s[25] >>> 21);\r\n      b36 = (s[34] << 15) | (s[35] >>> 17);\r\n      b37 = (s[35] << 15) | (s[34] >>> 17);\r\n      b18 = (s[45] << 29) | (s[44] >>> 3);\r\n      b19 = (s[44] << 29) | (s[45] >>> 3);\r\n      b10 = (s[6] << 28) | (s[7] >>> 4);\r\n      b11 = (s[7] << 28) | (s[6] >>> 4);\r\n      b42 = (s[17] << 23) | (s[16] >>> 9);\r\n      b43 = (s[16] << 23) | (s[17] >>> 9);\r\n      b24 = (s[26] << 25) | (s[27] >>> 7);\r\n      b25 = (s[27] << 25) | (s[26] >>> 7);\r\n      b6 = (s[36] << 21) | (s[37] >>> 11);\r\n      b7 = (s[37] << 21) | (s[36] >>> 11);\r\n      b38 = (s[47] << 24) | (s[46] >>> 8);\r\n      b39 = (s[46] << 24) | (s[47] >>> 8);\r\n      b30 = (s[8] << 27) | (s[9] >>> 5);\r\n      b31 = (s[9] << 27) | (s[8] >>> 5);\r\n      b12 = (s[18] << 20) | (s[19] >>> 12);\r\n      b13 = (s[19] << 20) | (s[18] >>> 12);\r\n      b44 = (s[29] << 7) | (s[28] >>> 25);\r\n      b45 = (s[28] << 7) | (s[29] >>> 25);\r\n      b26 = (s[38] << 8) | (s[39] >>> 24);\r\n      b27 = (s[39] << 8) | (s[38] >>> 24);\r\n      b8 = (s[48] << 14) | (s[49] >>> 18);\r\n      b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n      s[0] = b0 ^ (~b2 & b4);\r\n      s[1] = b1 ^ (~b3 & b5);\r\n      s[10] = b10 ^ (~b12 & b14);\r\n      s[11] = b11 ^ (~b13 & b15);\r\n      s[20] = b20 ^ (~b22 & b24);\r\n      s[21] = b21 ^ (~b23 & b25);\r\n      s[30] = b30 ^ (~b32 & b34);\r\n      s[31] = b31 ^ (~b33 & b35);\r\n      s[40] = b40 ^ (~b42 & b44);\r\n      s[41] = b41 ^ (~b43 & b45);\r\n      s[2] = b2 ^ (~b4 & b6);\r\n      s[3] = b3 ^ (~b5 & b7);\r\n      s[12] = b12 ^ (~b14 & b16);\r\n      s[13] = b13 ^ (~b15 & b17);\r\n      s[22] = b22 ^ (~b24 & b26);\r\n      s[23] = b23 ^ (~b25 & b27);\r\n      s[32] = b32 ^ (~b34 & b36);\r\n      s[33] = b33 ^ (~b35 & b37);\r\n      s[42] = b42 ^ (~b44 & b46);\r\n      s[43] = b43 ^ (~b45 & b47);\r\n      s[4] = b4 ^ (~b6 & b8);\r\n      s[5] = b5 ^ (~b7 & b9);\r\n      s[14] = b14 ^ (~b16 & b18);\r\n      s[15] = b15 ^ (~b17 & b19);\r\n      s[24] = b24 ^ (~b26 & b28);\r\n      s[25] = b25 ^ (~b27 & b29);\r\n      s[34] = b34 ^ (~b36 & b38);\r\n      s[35] = b35 ^ (~b37 & b39);\r\n      s[44] = b44 ^ (~b46 & b48);\r\n      s[45] = b45 ^ (~b47 & b49);\r\n      s[6] = b6 ^ (~b8 & b0);\r\n      s[7] = b7 ^ (~b9 & b1);\r\n      s[16] = b16 ^ (~b18 & b10);\r\n      s[17] = b17 ^ (~b19 & b11);\r\n      s[26] = b26 ^ (~b28 & b20);\r\n      s[27] = b27 ^ (~b29 & b21);\r\n      s[36] = b36 ^ (~b38 & b30);\r\n      s[37] = b37 ^ (~b39 & b31);\r\n      s[46] = b46 ^ (~b48 & b40);\r\n      s[47] = b47 ^ (~b49 & b41);\r\n      s[8] = b8 ^ (~b0 & b2);\r\n      s[9] = b9 ^ (~b1 & b3);\r\n      s[18] = b18 ^ (~b10 & b12);\r\n      s[19] = b19 ^ (~b11 & b13);\r\n      s[28] = b28 ^ (~b20 & b22);\r\n      s[29] = b29 ^ (~b21 & b23);\r\n      s[38] = b38 ^ (~b30 & b32);\r\n      s[39] = b39 ^ (~b31 & b33);\r\n      s[48] = b48 ^ (~b40 & b42);\r\n      s[49] = b49 ^ (~b41 & b43);\r\n\r\n      s[0] ^= RC[n];\r\n      s[1] ^= RC[n + 1];\r\n    }\r\n  }\r\n\r\n  if (COMMON_JS) {\r\n    module.exports = methods;\r\n  } else if (root) {\r\n    for (var key in methods) {\r\n      root[key] = methods[key];\r\n    }\r\n  }\r\n}(this));\r\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(8), __webpack_require__(2)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2pzLXNoYTMvc3JjL3NoYTMuanM/MWM1NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix3QkFBd0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHdCQUF3QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSyxnRkFBZ0Y7QUFDckYsS0FBSyx1RUFBdUU7QUFDNUUsS0FBSztBQUNMOztBQUVBOztBQUVBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGdDQUFnQztBQUM1RDtBQUNBO0FBQ0EsT0FBTztBQUNQLDRCQUE0QixnQ0FBZ0M7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtQkFBbUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGVBQWU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtQ0FBbUM7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUNBQW1DO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1DQUFtQztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIyOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBbanMtc2hhM117QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2VtbjE3OC9qcy1zaGEzfVxyXG4gKlxyXG4gKiBAdmVyc2lvbiAwLjUuNVxyXG4gKiBAYXV0aG9yIENoZW4sIFlpLUN5dWFuIFtlbW4xNzhAZ21haWwuY29tXVxyXG4gKiBAY29weXJpZ2h0IENoZW4sIFlpLUN5dWFuIDIwMTUtMjAxNlxyXG4gKiBAbGljZW5zZSBNSVRcclxuICovXHJcbihmdW5jdGlvbiAocm9vdCkge1xyXG4gICd1c2Ugc3RyaWN0JztcclxuXHJcbiAgdmFyIE5PREVfSlMgPSB0eXBlb2YgcHJvY2VzcyA9PSAnb2JqZWN0JyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTtcclxuICBpZiAoTk9ERV9KUykge1xyXG4gICAgcm9vdCA9IGdsb2JhbDtcclxuICB9XHJcbiAgdmFyIENPTU1PTl9KUyA9ICFyb290LkpTX1NIQTNfVEVTVCAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzO1xyXG4gIHZhciBIRVhfQ0hBUlMgPSAnMDEyMzQ1Njc4OWFiY2RlZicuc3BsaXQoJycpO1xyXG4gIHZhciBTSEFLRV9QQURESU5HID0gWzMxLCA3OTM2LCAyMDMxNjE2LCA1MjAwOTM2OTZdO1xyXG4gIHZhciBLRUNDQUtfUEFERElORyA9IFsxLCAyNTYsIDY1NTM2LCAxNjc3NzIxNl07XHJcbiAgdmFyIFBBRERJTkcgPSBbNiwgMTUzNiwgMzkzMjE2LCAxMDA2NjMyOTZdO1xyXG4gIHZhciBTSElGVCA9IFswLCA4LCAxNiwgMjRdO1xyXG4gIHZhciBSQyA9IFsxLCAwLCAzMjg5OCwgMCwgMzI5MDYsIDIxNDc0ODM2NDgsIDIxNDc1MTY0MTYsIDIxNDc0ODM2NDgsIDMyOTA3LCAwLCAyMTQ3NDgzNjQ5LFxyXG4gICAgICAgICAgICAwLCAyMTQ3NTE2NTQ1LCAyMTQ3NDgzNjQ4LCAzMjc3NywgMjE0NzQ4MzY0OCwgMTM4LCAwLCAxMzYsIDAsIDIxNDc1MTY0MjUsIDAsIFxyXG4gICAgICAgICAgICAyMTQ3NDgzNjU4LCAwLCAyMTQ3NTE2NTU1LCAwLCAxMzksIDIxNDc0ODM2NDgsIDMyOTA1LCAyMTQ3NDgzNjQ4LCAzMjc3MSwgXHJcbiAgICAgICAgICAgIDIxNDc0ODM2NDgsIDMyNzcwLCAyMTQ3NDgzNjQ4LCAxMjgsIDIxNDc0ODM2NDgsIDMyNzc4LCAwLCAyMTQ3NDgzNjU4LCAyMTQ3NDgzNjQ4LFxyXG4gICAgICAgICAgICAyMTQ3NTE2NTQ1LCAyMTQ3NDgzNjQ4LCAzMjg5NiwgMjE0NzQ4MzY0OCwgMjE0NzQ4MzY0OSwgMCwgMjE0NzUxNjQyNCwgMjE0NzQ4MzY0OF07XHJcbiAgdmFyIEJJVFMgPSBbMjI0LCAyNTYsIDM4NCwgNTEyXTtcclxuICB2YXIgU0hBS0VfQklUUyA9IFsxMjgsIDI1Nl07XHJcbiAgdmFyIE9VVFBVVF9UWVBFUyA9IFsnaGV4JywgJ2J1ZmZlcicsICdhcnJheUJ1ZmZlcicsICdhcnJheSddO1xyXG5cclxuICB2YXIgY3JlYXRlT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcsIG91dHB1dFR5cGUpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSkge1xyXG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBiaXRzKS51cGRhdGUobWVzc2FnZSlbb3V0cHV0VHlwZV0oKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICB2YXIgY3JlYXRlU2hha2VPdXRwdXRNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZywgb3V0cHV0VHlwZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChtZXNzYWdlLCBvdXRwdXRCaXRzKSB7XHJcbiAgICAgIHJldHVybiBuZXcgS2VjY2FrKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpLnVwZGF0ZShtZXNzYWdlKVtvdXRwdXRUeXBlXSgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZykge1xyXG4gICAgdmFyIG1ldGhvZCA9IGNyZWF0ZU91dHB1dE1ldGhvZChiaXRzLCBwYWRkaW5nLCAnaGV4Jyk7XHJcbiAgICBtZXRob2QuY3JlYXRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBiaXRzKTtcclxuICAgIH07XHJcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcclxuICAgICAgcmV0dXJuIG1ldGhvZC5jcmVhdGUoKS51cGRhdGUobWVzc2FnZSk7XHJcbiAgICB9O1xyXG4gICAgZm9yICh2YXIgaSA9IDA7aSA8IE9VVFBVVF9UWVBFUy5sZW5ndGg7KytpKSB7XHJcbiAgICAgIHZhciB0eXBlID0gT1VUUFVUX1RZUEVTW2ldO1xyXG4gICAgICBtZXRob2RbdHlwZV0gPSBjcmVhdGVPdXRwdXRNZXRob2QoYml0cywgcGFkZGluZywgdHlwZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWV0aG9kO1xyXG4gIH07XHJcblxyXG4gIHZhciBjcmVhdGVTaGFrZU1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzLCBwYWRkaW5nKSB7XHJcbiAgICB2YXIgbWV0aG9kID0gY3JlYXRlU2hha2VPdXRwdXRNZXRob2QoYml0cywgcGFkZGluZywgJ2hleCcpO1xyXG4gICAgbWV0aG9kLmNyZWF0ZSA9IGZ1bmN0aW9uIChvdXRwdXRCaXRzKSB7XHJcbiAgICAgIHJldHVybiBuZXcgS2VjY2FrKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpO1xyXG4gICAgfTtcclxuICAgIG1ldGhvZC51cGRhdGUgPSBmdW5jdGlvbiAobWVzc2FnZSwgb3V0cHV0Qml0cykge1xyXG4gICAgICByZXR1cm4gbWV0aG9kLmNyZWF0ZShvdXRwdXRCaXRzKS51cGRhdGUobWVzc2FnZSk7XHJcbiAgICB9O1xyXG4gICAgZm9yICh2YXIgaSA9IDA7aSA8IE9VVFBVVF9UWVBFUy5sZW5ndGg7KytpKSB7XHJcbiAgICAgIHZhciB0eXBlID0gT1VUUFVUX1RZUEVTW2ldO1xyXG4gICAgICBtZXRob2RbdHlwZV0gPSBjcmVhdGVTaGFrZU91dHB1dE1ldGhvZChiaXRzLCBwYWRkaW5nLCB0eXBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZXRob2Q7XHJcbiAgfTtcclxuXHJcbiAgdmFyIGFsZ29yaXRobXMgPSBbXHJcbiAgICB7bmFtZTogJ2tlY2NhaycsIHBhZGRpbmc6IEtFQ0NBS19QQURESU5HLCBiaXRzOiBCSVRTLCBjcmVhdGVNZXRob2Q6IGNyZWF0ZU1ldGhvZH0sXHJcbiAgICB7bmFtZTogJ3NoYTMnLCBwYWRkaW5nOiBQQURESU5HLCBiaXRzOiBCSVRTLCBjcmVhdGVNZXRob2Q6IGNyZWF0ZU1ldGhvZH0sXHJcbiAgICB7bmFtZTogJ3NoYWtlJywgcGFkZGluZzogU0hBS0VfUEFERElORywgYml0czogU0hBS0VfQklUUywgY3JlYXRlTWV0aG9kOiBjcmVhdGVTaGFrZU1ldGhvZH1cclxuICBdO1xyXG5cclxuICB2YXIgbWV0aG9kcyA9IHt9O1xyXG5cclxuICBmb3IgKHZhciBpID0gMDtpIDwgYWxnb3JpdGhtcy5sZW5ndGg7KytpKSB7XHJcbiAgICB2YXIgYWxnb3JpdGhtID0gYWxnb3JpdGhtc1tpXTtcclxuICAgIHZhciBiaXRzICA9IGFsZ29yaXRobS5iaXRzO1xyXG4gICAgZm9yICh2YXIgaiA9IDA7aiA8IGJpdHMubGVuZ3RoOysraikge1xyXG4gICAgICBtZXRob2RzW2FsZ29yaXRobS5uYW1lICsnXycgKyBiaXRzW2pdXSA9IGFsZ29yaXRobS5jcmVhdGVNZXRob2QoYml0c1tqXSwgYWxnb3JpdGhtLnBhZGRpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gS2VjY2FrKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpIHtcclxuICAgIHRoaXMuYmxvY2tzID0gW107XHJcbiAgICB0aGlzLnMgPSBbXTtcclxuICAgIHRoaXMucGFkZGluZyA9IHBhZGRpbmc7XHJcbiAgICB0aGlzLm91dHB1dEJpdHMgPSBvdXRwdXRCaXRzO1xyXG4gICAgdGhpcy5yZXNldCA9IHRydWU7XHJcbiAgICB0aGlzLmJsb2NrID0gMDtcclxuICAgIHRoaXMuc3RhcnQgPSAwO1xyXG4gICAgdGhpcy5ibG9ja0NvdW50ID0gKDE2MDAgLSAoYml0cyA8PCAxKSkgPj4gNTtcclxuICAgIHRoaXMuYnl0ZUNvdW50ID0gdGhpcy5ibG9ja0NvdW50IDw8IDI7XHJcbiAgICB0aGlzLm91dHB1dEJsb2NrcyA9IG91dHB1dEJpdHMgPj4gNTtcclxuICAgIHRoaXMuZXh0cmFCeXRlcyA9IChvdXRwdXRCaXRzICYgMzEpID4+IDM7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7aSA8IDUwOysraSkge1xyXG4gICAgICB0aGlzLnNbaV0gPSAwO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIEtlY2Nhay5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcclxuICAgIHZhciBub3RTdHJpbmcgPSB0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJztcclxuICAgIGlmIChub3RTdHJpbmcgJiYgbWVzc2FnZS5jb25zdHJ1Y3RvciA9PSByb290LkFycmF5QnVmZmVyKSB7XHJcbiAgICAgIG1lc3NhZ2UgPSBuZXcgVWludDhBcnJheShtZXNzYWdlKTtcclxuICAgIH1cclxuICAgIHZhciBsZW5ndGggPSBtZXNzYWdlLmxlbmd0aCwgYmxvY2tzID0gdGhpcy5ibG9ja3MsIGJ5dGVDb3VudCA9IHRoaXMuYnl0ZUNvdW50LCBcclxuICAgICAgICBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBpbmRleCA9IDAsIHMgPSB0aGlzLnMsIGksIGNvZGU7XHJcbiAgICBcclxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5yZXNldCkge1xyXG4gICAgICAgIHRoaXMucmVzZXQgPSBmYWxzZTtcclxuICAgICAgICBibG9ja3NbMF0gPSB0aGlzLmJsb2NrO1xyXG4gICAgICAgIGZvciAoaSA9IDE7aSA8IGJsb2NrQ291bnQgKyAxOysraSkge1xyXG4gICAgICAgICAgYmxvY2tzW2ldID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vdFN0cmluZykge1xyXG4gICAgICAgIGZvciAoaSA9IHRoaXMuc3RhcnQ7aW5kZXggPCBsZW5ndGggJiYgaSA8IGJ5dGVDb3VudDsrK2luZGV4KSB7XHJcbiAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSBtZXNzYWdlW2luZGV4XSA8PCBTSElGVFtpKysgJiAzXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChpID0gdGhpcy5zdGFydDtpbmRleCA8IGxlbmd0aCAmJiBpIDwgYnl0ZUNvdW50OysraW5kZXgpIHtcclxuICAgICAgICAgIGNvZGUgPSBtZXNzYWdlLmNoYXJDb2RlQXQoaW5kZXgpO1xyXG4gICAgICAgICAgaWYgKGNvZGUgPCAweDgwKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9IGNvZGUgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xyXG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhjMCB8IChjb2RlID4+IDYpKSA8PCBTSElGVFtpKysgJiAzXTtcclxuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xyXG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhlMCB8IChjb2RlID4+IDEyKSkgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xyXG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29kZSA9IDB4MTAwMDAgKyAoKChjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChtZXNzYWdlLmNoYXJDb2RlQXQoKytpbmRleCkgJiAweDNmZikpO1xyXG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhmMCB8IChjb2RlID4+IDE4KSkgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcclxuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFzdEJ5dGVJbmRleCA9IGk7XHJcbiAgICAgIGlmIChpID49IGJ5dGVDb3VudCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnQgPSBpIC0gYnl0ZUNvdW50O1xyXG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9ja3NbYmxvY2tDb3VudF07XHJcbiAgICAgICAgZm9yIChpID0gMDtpIDwgYmxvY2tDb3VudDsrK2kpIHtcclxuICAgICAgICAgIHNbaV0gXj0gYmxvY2tzW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmKHMpO1xyXG4gICAgICAgIHRoaXMucmVzZXQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3RhcnQgPSBpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9O1xyXG5cclxuICBLZWNjYWsucHJvdG90eXBlLmZpbmFsaXplID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGJsb2NrcyA9IHRoaXMuYmxvY2tzLCBpID0gdGhpcy5sYXN0Qnl0ZUluZGV4LCBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBzID0gdGhpcy5zO1xyXG4gICAgYmxvY2tzW2kgPj4gMl0gfD0gdGhpcy5wYWRkaW5nW2kgJiAzXTtcclxuICAgIGlmICh0aGlzLmxhc3RCeXRlSW5kZXggPT0gdGhpcy5ieXRlQ291bnQpIHtcclxuICAgICAgYmxvY2tzWzBdID0gYmxvY2tzW2Jsb2NrQ291bnRdO1xyXG4gICAgICBmb3IgKGkgPSAxO2kgPCBibG9ja0NvdW50ICsgMTsrK2kpIHtcclxuICAgICAgICBibG9ja3NbaV0gPSAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBibG9ja3NbYmxvY2tDb3VudCAtIDFdIHw9IDB4ODAwMDAwMDA7XHJcbiAgICBmb3IgKGkgPSAwO2kgPCBibG9ja0NvdW50OysraSkge1xyXG4gICAgICBzW2ldIF49IGJsb2Nrc1tpXTtcclxuICAgIH1cclxuICAgIGYocyk7XHJcbiAgfTtcclxuXHJcbiAgS2VjY2FrLnByb3RvdHlwZS50b1N0cmluZyA9IEtlY2Nhay5wcm90b3R5cGUuaGV4ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdGhpcy5maW5hbGl6ZSgpO1xyXG5cclxuICAgIHZhciBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBzID0gdGhpcy5zLCBvdXRwdXRCbG9ja3MgPSB0aGlzLm91dHB1dEJsb2NrcywgXHJcbiAgICAgICAgZXh0cmFCeXRlcyA9IHRoaXMuZXh0cmFCeXRlcywgaSA9IDAsIGogPSAwO1xyXG4gICAgdmFyIGhleCA9ICcnLCBibG9jaztcclxuICAgIHdoaWxlIChqIDwgb3V0cHV0QmxvY2tzKSB7XHJcbiAgICAgIGZvciAoaSA9IDA7aSA8IGJsb2NrQ291bnQgJiYgaiA8IG91dHB1dEJsb2NrczsrK2ksICsraikge1xyXG4gICAgICAgIGJsb2NrID0gc1tpXTtcclxuICAgICAgICBoZXggKz0gSEVYX0NIQVJTWyhibG9jayA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2Jsb2NrICYgMHgwRl0gK1xyXG4gICAgICAgICAgICAgICBIRVhfQ0hBUlNbKGJsb2NrID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiA4KSAmIDB4MEZdICtcclxuICAgICAgICAgICAgICAgSEVYX0NIQVJTWyhibG9jayA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soYmxvY2sgPj4gMTYpICYgMHgwRl0gK1xyXG4gICAgICAgICAgICAgICBIRVhfQ0hBUlNbKGJsb2NrID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiAyNCkgJiAweDBGXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaiAlIGJsb2NrQ291bnQgPT0gMCkge1xyXG4gICAgICAgIGYocyk7XHJcbiAgICAgICAgaSA9IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChleHRyYUJ5dGVzKSB7XHJcbiAgICAgIGJsb2NrID0gc1tpXTtcclxuICAgICAgaWYgKGV4dHJhQnl0ZXMgPiAwKSB7XHJcbiAgICAgICAgaGV4ICs9IEhFWF9DSEFSU1soYmxvY2sgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1tibG9jayAmIDB4MEZdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMSkge1xyXG4gICAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGJsb2NrID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiA4KSAmIDB4MEZdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMikge1xyXG4gICAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGJsb2NrID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiAxNikgJiAweDBGXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhleDtcclxuICB9O1xyXG5cclxuICBLZWNjYWsucHJvdG90eXBlLmFycmF5QnVmZmVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdGhpcy5maW5hbGl6ZSgpO1xyXG5cclxuICAgIHZhciBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBzID0gdGhpcy5zLCBvdXRwdXRCbG9ja3MgPSB0aGlzLm91dHB1dEJsb2NrcywgXHJcbiAgICAgICAgZXh0cmFCeXRlcyA9IHRoaXMuZXh0cmFCeXRlcywgaSA9IDAsIGogPSAwO1xyXG4gICAgdmFyIGJ5dGVzID0gdGhpcy5vdXRwdXRCaXRzID4+IDM7XHJcbiAgICB2YXIgYnVmZmVyO1xyXG4gICAgaWYgKGV4dHJhQnl0ZXMpIHtcclxuICAgICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKChvdXRwdXRCbG9ja3MgKyAxKSA8PCAyKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcyk7XHJcbiAgICB9XHJcbiAgICB2YXIgYXJyYXkgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcclxuICAgIHdoaWxlIChqIDwgb3V0cHV0QmxvY2tzKSB7XHJcbiAgICAgIGZvciAoaSA9IDA7aSA8IGJsb2NrQ291bnQgJiYgaiA8IG91dHB1dEJsb2NrczsrK2ksICsraikge1xyXG4gICAgICAgIGFycmF5W2pdID0gc1tpXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaiAlIGJsb2NrQ291bnQgPT0gMCkge1xyXG4gICAgICAgIGYocyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChleHRyYUJ5dGVzKSB7XHJcbiAgICAgIGFycmF5W2ldID0gc1tpXTtcclxuICAgICAgYnVmZmVyID0gYnVmZmVyLnNsaWNlKDAsIGJ5dGVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBidWZmZXI7XHJcbiAgfTtcclxuXHJcbiAgS2VjY2FrLnByb3RvdHlwZS5idWZmZXIgPSBLZWNjYWsucHJvdG90eXBlLmFycmF5QnVmZmVyO1xyXG5cclxuICBLZWNjYWsucHJvdG90eXBlLmRpZ2VzdCA9IEtlY2Nhay5wcm90b3R5cGUuYXJyYXkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLmZpbmFsaXplKCk7XHJcblxyXG4gICAgdmFyIGJsb2NrQ291bnQgPSB0aGlzLmJsb2NrQ291bnQsIHMgPSB0aGlzLnMsIG91dHB1dEJsb2NrcyA9IHRoaXMub3V0cHV0QmxvY2tzLCBcclxuICAgICAgICBleHRyYUJ5dGVzID0gdGhpcy5leHRyYUJ5dGVzLCBpID0gMCwgaiA9IDA7XHJcbiAgICB2YXIgYXJyYXkgPSBbXSwgb2Zmc2V0LCBibG9jaztcclxuICAgIHdoaWxlIChqIDwgb3V0cHV0QmxvY2tzKSB7XHJcbiAgICAgIGZvciAoaSA9IDA7aSA8IGJsb2NrQ291bnQgJiYgaiA8IG91dHB1dEJsb2NrczsrK2ksICsraikge1xyXG4gICAgICAgIG9mZnNldCA9IGogPDwgMjtcclxuICAgICAgICBibG9jayA9IHNbaV07XHJcbiAgICAgICAgYXJyYXlbb2Zmc2V0XSA9IGJsb2NrICYgMHhGRjtcclxuICAgICAgICBhcnJheVtvZmZzZXQgKyAxXSA9IChibG9jayA+PiA4KSAmIDB4RkY7XHJcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgMl0gPSAoYmxvY2sgPj4gMTYpICYgMHhGRjtcclxuICAgICAgICBhcnJheVtvZmZzZXQgKyAzXSA9IChibG9jayA+PiAyNCkgJiAweEZGO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChqICUgYmxvY2tDb3VudCA9PSAwKSB7XHJcbiAgICAgICAgZihzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGV4dHJhQnl0ZXMpIHtcclxuICAgICAgb2Zmc2V0ID0gaiA8PCAyO1xyXG4gICAgICBibG9jayA9IHNbaV07XHJcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMCkge1xyXG4gICAgICAgIGFycmF5W29mZnNldF0gPSBibG9jayAmIDB4RkY7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4dHJhQnl0ZXMgPiAxKSB7XHJcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgMV0gPSAoYmxvY2sgPj4gOCkgJiAweEZGO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMikge1xyXG4gICAgICAgIGFycmF5W29mZnNldCArIDJdID0gKGJsb2NrID4+IDE2KSAmIDB4RkY7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcnJheTtcclxuICB9O1xyXG5cclxuICB2YXIgZiA9IGZ1bmN0aW9uIChzKSB7XHJcbiAgICB2YXIgaCwgbCwgbiwgYzAsIGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3LCBjOCwgYzksIFxyXG4gICAgICAgIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgsIGI5LCBiMTAsIGIxMSwgYjEyLCBiMTMsIGIxNCwgYjE1LCBiMTYsIGIxNywgXHJcbiAgICAgICAgYjE4LCBiMTksIGIyMCwgYjIxLCBiMjIsIGIyMywgYjI0LCBiMjUsIGIyNiwgYjI3LCBiMjgsIGIyOSwgYjMwLCBiMzEsIGIzMiwgYjMzLCBcclxuICAgICAgICBiMzQsIGIzNSwgYjM2LCBiMzcsIGIzOCwgYjM5LCBiNDAsIGI0MSwgYjQyLCBiNDMsIGI0NCwgYjQ1LCBiNDYsIGI0NywgYjQ4LCBiNDk7XHJcbiAgICBmb3IgKG4gPSAwO24gPCA0ODtuICs9IDIpIHtcclxuICAgICAgYzAgPSBzWzBdIF4gc1sxMF0gXiBzWzIwXSBeIHNbMzBdIF4gc1s0MF07XHJcbiAgICAgIGMxID0gc1sxXSBeIHNbMTFdIF4gc1syMV0gXiBzWzMxXSBeIHNbNDFdO1xyXG4gICAgICBjMiA9IHNbMl0gXiBzWzEyXSBeIHNbMjJdIF4gc1szMl0gXiBzWzQyXTtcclxuICAgICAgYzMgPSBzWzNdIF4gc1sxM10gXiBzWzIzXSBeIHNbMzNdIF4gc1s0M107XHJcbiAgICAgIGM0ID0gc1s0XSBeIHNbMTRdIF4gc1syNF0gXiBzWzM0XSBeIHNbNDRdO1xyXG4gICAgICBjNSA9IHNbNV0gXiBzWzE1XSBeIHNbMjVdIF4gc1szNV0gXiBzWzQ1XTtcclxuICAgICAgYzYgPSBzWzZdIF4gc1sxNl0gXiBzWzI2XSBeIHNbMzZdIF4gc1s0Nl07XHJcbiAgICAgIGM3ID0gc1s3XSBeIHNbMTddIF4gc1syN10gXiBzWzM3XSBeIHNbNDddO1xyXG4gICAgICBjOCA9IHNbOF0gXiBzWzE4XSBeIHNbMjhdIF4gc1szOF0gXiBzWzQ4XTtcclxuICAgICAgYzkgPSBzWzldIF4gc1sxOV0gXiBzWzI5XSBeIHNbMzldIF4gc1s0OV07XHJcblxyXG4gICAgICBoID0gYzggXiAoKGMyIDw8IDEpIHwgKGMzID4+PiAzMSkpO1xyXG4gICAgICBsID0gYzkgXiAoKGMzIDw8IDEpIHwgKGMyID4+PiAzMSkpO1xyXG4gICAgICBzWzBdIF49IGg7XHJcbiAgICAgIHNbMV0gXj0gbDtcclxuICAgICAgc1sxMF0gXj0gaDtcclxuICAgICAgc1sxMV0gXj0gbDtcclxuICAgICAgc1syMF0gXj0gaDtcclxuICAgICAgc1syMV0gXj0gbDtcclxuICAgICAgc1szMF0gXj0gaDtcclxuICAgICAgc1szMV0gXj0gbDtcclxuICAgICAgc1s0MF0gXj0gaDtcclxuICAgICAgc1s0MV0gXj0gbDtcclxuICAgICAgaCA9IGMwIF4gKChjNCA8PCAxKSB8IChjNSA+Pj4gMzEpKTtcclxuICAgICAgbCA9IGMxIF4gKChjNSA8PCAxKSB8IChjNCA+Pj4gMzEpKTtcclxuICAgICAgc1syXSBePSBoO1xyXG4gICAgICBzWzNdIF49IGw7XHJcbiAgICAgIHNbMTJdIF49IGg7XHJcbiAgICAgIHNbMTNdIF49IGw7XHJcbiAgICAgIHNbMjJdIF49IGg7XHJcbiAgICAgIHNbMjNdIF49IGw7XHJcbiAgICAgIHNbMzJdIF49IGg7XHJcbiAgICAgIHNbMzNdIF49IGw7XHJcbiAgICAgIHNbNDJdIF49IGg7XHJcbiAgICAgIHNbNDNdIF49IGw7XHJcbiAgICAgIGggPSBjMiBeICgoYzYgPDwgMSkgfCAoYzcgPj4+IDMxKSk7XHJcbiAgICAgIGwgPSBjMyBeICgoYzcgPDwgMSkgfCAoYzYgPj4+IDMxKSk7XHJcbiAgICAgIHNbNF0gXj0gaDtcclxuICAgICAgc1s1XSBePSBsO1xyXG4gICAgICBzWzE0XSBePSBoO1xyXG4gICAgICBzWzE1XSBePSBsO1xyXG4gICAgICBzWzI0XSBePSBoO1xyXG4gICAgICBzWzI1XSBePSBsO1xyXG4gICAgICBzWzM0XSBePSBoO1xyXG4gICAgICBzWzM1XSBePSBsO1xyXG4gICAgICBzWzQ0XSBePSBoO1xyXG4gICAgICBzWzQ1XSBePSBsO1xyXG4gICAgICBoID0gYzQgXiAoKGM4IDw8IDEpIHwgKGM5ID4+PiAzMSkpO1xyXG4gICAgICBsID0gYzUgXiAoKGM5IDw8IDEpIHwgKGM4ID4+PiAzMSkpO1xyXG4gICAgICBzWzZdIF49IGg7XHJcbiAgICAgIHNbN10gXj0gbDtcclxuICAgICAgc1sxNl0gXj0gaDtcclxuICAgICAgc1sxN10gXj0gbDtcclxuICAgICAgc1syNl0gXj0gaDtcclxuICAgICAgc1syN10gXj0gbDtcclxuICAgICAgc1szNl0gXj0gaDtcclxuICAgICAgc1szN10gXj0gbDtcclxuICAgICAgc1s0Nl0gXj0gaDtcclxuICAgICAgc1s0N10gXj0gbDtcclxuICAgICAgaCA9IGM2IF4gKChjMCA8PCAxKSB8IChjMSA+Pj4gMzEpKTtcclxuICAgICAgbCA9IGM3IF4gKChjMSA8PCAxKSB8IChjMCA+Pj4gMzEpKTtcclxuICAgICAgc1s4XSBePSBoO1xyXG4gICAgICBzWzldIF49IGw7XHJcbiAgICAgIHNbMThdIF49IGg7XHJcbiAgICAgIHNbMTldIF49IGw7XHJcbiAgICAgIHNbMjhdIF49IGg7XHJcbiAgICAgIHNbMjldIF49IGw7XHJcbiAgICAgIHNbMzhdIF49IGg7XHJcbiAgICAgIHNbMzldIF49IGw7XHJcbiAgICAgIHNbNDhdIF49IGg7XHJcbiAgICAgIHNbNDldIF49IGw7XHJcblxyXG4gICAgICBiMCA9IHNbMF07XHJcbiAgICAgIGIxID0gc1sxXTtcclxuICAgICAgYjMyID0gKHNbMTFdIDw8IDQpIHwgKHNbMTBdID4+PiAyOCk7XHJcbiAgICAgIGIzMyA9IChzWzEwXSA8PCA0KSB8IChzWzExXSA+Pj4gMjgpO1xyXG4gICAgICBiMTQgPSAoc1syMF0gPDwgMykgfCAoc1syMV0gPj4+IDI5KTtcclxuICAgICAgYjE1ID0gKHNbMjFdIDw8IDMpIHwgKHNbMjBdID4+PiAyOSk7XHJcbiAgICAgIGI0NiA9IChzWzMxXSA8PCA5KSB8IChzWzMwXSA+Pj4gMjMpO1xyXG4gICAgICBiNDcgPSAoc1szMF0gPDwgOSkgfCAoc1szMV0gPj4+IDIzKTtcclxuICAgICAgYjI4ID0gKHNbNDBdIDw8IDE4KSB8IChzWzQxXSA+Pj4gMTQpO1xyXG4gICAgICBiMjkgPSAoc1s0MV0gPDwgMTgpIHwgKHNbNDBdID4+PiAxNCk7XHJcbiAgICAgIGIyMCA9IChzWzJdIDw8IDEpIHwgKHNbM10gPj4+IDMxKTtcclxuICAgICAgYjIxID0gKHNbM10gPDwgMSkgfCAoc1syXSA+Pj4gMzEpO1xyXG4gICAgICBiMiA9IChzWzEzXSA8PCAxMikgfCAoc1sxMl0gPj4+IDIwKTtcclxuICAgICAgYjMgPSAoc1sxMl0gPDwgMTIpIHwgKHNbMTNdID4+PiAyMCk7XHJcbiAgICAgIGIzNCA9IChzWzIyXSA8PCAxMCkgfCAoc1syM10gPj4+IDIyKTtcclxuICAgICAgYjM1ID0gKHNbMjNdIDw8IDEwKSB8IChzWzIyXSA+Pj4gMjIpO1xyXG4gICAgICBiMTYgPSAoc1szM10gPDwgMTMpIHwgKHNbMzJdID4+PiAxOSk7XHJcbiAgICAgIGIxNyA9IChzWzMyXSA8PCAxMykgfCAoc1szM10gPj4+IDE5KTtcclxuICAgICAgYjQ4ID0gKHNbNDJdIDw8IDIpIHwgKHNbNDNdID4+PiAzMCk7XHJcbiAgICAgIGI0OSA9IChzWzQzXSA8PCAyKSB8IChzWzQyXSA+Pj4gMzApO1xyXG4gICAgICBiNDAgPSAoc1s1XSA8PCAzMCkgfCAoc1s0XSA+Pj4gMik7XHJcbiAgICAgIGI0MSA9IChzWzRdIDw8IDMwKSB8IChzWzVdID4+PiAyKTtcclxuICAgICAgYjIyID0gKHNbMTRdIDw8IDYpIHwgKHNbMTVdID4+PiAyNik7XHJcbiAgICAgIGIyMyA9IChzWzE1XSA8PCA2KSB8IChzWzE0XSA+Pj4gMjYpO1xyXG4gICAgICBiNCA9IChzWzI1XSA8PCAxMSkgfCAoc1syNF0gPj4+IDIxKTtcclxuICAgICAgYjUgPSAoc1syNF0gPDwgMTEpIHwgKHNbMjVdID4+PiAyMSk7XHJcbiAgICAgIGIzNiA9IChzWzM0XSA8PCAxNSkgfCAoc1szNV0gPj4+IDE3KTtcclxuICAgICAgYjM3ID0gKHNbMzVdIDw8IDE1KSB8IChzWzM0XSA+Pj4gMTcpO1xyXG4gICAgICBiMTggPSAoc1s0NV0gPDwgMjkpIHwgKHNbNDRdID4+PiAzKTtcclxuICAgICAgYjE5ID0gKHNbNDRdIDw8IDI5KSB8IChzWzQ1XSA+Pj4gMyk7XHJcbiAgICAgIGIxMCA9IChzWzZdIDw8IDI4KSB8IChzWzddID4+PiA0KTtcclxuICAgICAgYjExID0gKHNbN10gPDwgMjgpIHwgKHNbNl0gPj4+IDQpO1xyXG4gICAgICBiNDIgPSAoc1sxN10gPDwgMjMpIHwgKHNbMTZdID4+PiA5KTtcclxuICAgICAgYjQzID0gKHNbMTZdIDw8IDIzKSB8IChzWzE3XSA+Pj4gOSk7XHJcbiAgICAgIGIyNCA9IChzWzI2XSA8PCAyNSkgfCAoc1syN10gPj4+IDcpO1xyXG4gICAgICBiMjUgPSAoc1syN10gPDwgMjUpIHwgKHNbMjZdID4+PiA3KTtcclxuICAgICAgYjYgPSAoc1szNl0gPDwgMjEpIHwgKHNbMzddID4+PiAxMSk7XHJcbiAgICAgIGI3ID0gKHNbMzddIDw8IDIxKSB8IChzWzM2XSA+Pj4gMTEpO1xyXG4gICAgICBiMzggPSAoc1s0N10gPDwgMjQpIHwgKHNbNDZdID4+PiA4KTtcclxuICAgICAgYjM5ID0gKHNbNDZdIDw8IDI0KSB8IChzWzQ3XSA+Pj4gOCk7XHJcbiAgICAgIGIzMCA9IChzWzhdIDw8IDI3KSB8IChzWzldID4+PiA1KTtcclxuICAgICAgYjMxID0gKHNbOV0gPDwgMjcpIHwgKHNbOF0gPj4+IDUpO1xyXG4gICAgICBiMTIgPSAoc1sxOF0gPDwgMjApIHwgKHNbMTldID4+PiAxMik7XHJcbiAgICAgIGIxMyA9IChzWzE5XSA8PCAyMCkgfCAoc1sxOF0gPj4+IDEyKTtcclxuICAgICAgYjQ0ID0gKHNbMjldIDw8IDcpIHwgKHNbMjhdID4+PiAyNSk7XHJcbiAgICAgIGI0NSA9IChzWzI4XSA8PCA3KSB8IChzWzI5XSA+Pj4gMjUpO1xyXG4gICAgICBiMjYgPSAoc1szOF0gPDwgOCkgfCAoc1szOV0gPj4+IDI0KTtcclxuICAgICAgYjI3ID0gKHNbMzldIDw8IDgpIHwgKHNbMzhdID4+PiAyNCk7XHJcbiAgICAgIGI4ID0gKHNbNDhdIDw8IDE0KSB8IChzWzQ5XSA+Pj4gMTgpO1xyXG4gICAgICBiOSA9IChzWzQ5XSA8PCAxNCkgfCAoc1s0OF0gPj4+IDE4KTtcclxuXHJcbiAgICAgIHNbMF0gPSBiMCBeICh+YjIgJiBiNCk7XHJcbiAgICAgIHNbMV0gPSBiMSBeICh+YjMgJiBiNSk7XHJcbiAgICAgIHNbMTBdID0gYjEwIF4gKH5iMTIgJiBiMTQpO1xyXG4gICAgICBzWzExXSA9IGIxMSBeICh+YjEzICYgYjE1KTtcclxuICAgICAgc1syMF0gPSBiMjAgXiAofmIyMiAmIGIyNCk7XHJcbiAgICAgIHNbMjFdID0gYjIxIF4gKH5iMjMgJiBiMjUpO1xyXG4gICAgICBzWzMwXSA9IGIzMCBeICh+YjMyICYgYjM0KTtcclxuICAgICAgc1szMV0gPSBiMzEgXiAofmIzMyAmIGIzNSk7XHJcbiAgICAgIHNbNDBdID0gYjQwIF4gKH5iNDIgJiBiNDQpO1xyXG4gICAgICBzWzQxXSA9IGI0MSBeICh+YjQzICYgYjQ1KTtcclxuICAgICAgc1syXSA9IGIyIF4gKH5iNCAmIGI2KTtcclxuICAgICAgc1szXSA9IGIzIF4gKH5iNSAmIGI3KTtcclxuICAgICAgc1sxMl0gPSBiMTIgXiAofmIxNCAmIGIxNik7XHJcbiAgICAgIHNbMTNdID0gYjEzIF4gKH5iMTUgJiBiMTcpO1xyXG4gICAgICBzWzIyXSA9IGIyMiBeICh+YjI0ICYgYjI2KTtcclxuICAgICAgc1syM10gPSBiMjMgXiAofmIyNSAmIGIyNyk7XHJcbiAgICAgIHNbMzJdID0gYjMyIF4gKH5iMzQgJiBiMzYpO1xyXG4gICAgICBzWzMzXSA9IGIzMyBeICh+YjM1ICYgYjM3KTtcclxuICAgICAgc1s0Ml0gPSBiNDIgXiAofmI0NCAmIGI0Nik7XHJcbiAgICAgIHNbNDNdID0gYjQzIF4gKH5iNDUgJiBiNDcpO1xyXG4gICAgICBzWzRdID0gYjQgXiAofmI2ICYgYjgpO1xyXG4gICAgICBzWzVdID0gYjUgXiAofmI3ICYgYjkpO1xyXG4gICAgICBzWzE0XSA9IGIxNCBeICh+YjE2ICYgYjE4KTtcclxuICAgICAgc1sxNV0gPSBiMTUgXiAofmIxNyAmIGIxOSk7XHJcbiAgICAgIHNbMjRdID0gYjI0IF4gKH5iMjYgJiBiMjgpO1xyXG4gICAgICBzWzI1XSA9IGIyNSBeICh+YjI3ICYgYjI5KTtcclxuICAgICAgc1szNF0gPSBiMzQgXiAofmIzNiAmIGIzOCk7XHJcbiAgICAgIHNbMzVdID0gYjM1IF4gKH5iMzcgJiBiMzkpO1xyXG4gICAgICBzWzQ0XSA9IGI0NCBeICh+YjQ2ICYgYjQ4KTtcclxuICAgICAgc1s0NV0gPSBiNDUgXiAofmI0NyAmIGI0OSk7XHJcbiAgICAgIHNbNl0gPSBiNiBeICh+YjggJiBiMCk7XHJcbiAgICAgIHNbN10gPSBiNyBeICh+YjkgJiBiMSk7XHJcbiAgICAgIHNbMTZdID0gYjE2IF4gKH5iMTggJiBiMTApO1xyXG4gICAgICBzWzE3XSA9IGIxNyBeICh+YjE5ICYgYjExKTtcclxuICAgICAgc1syNl0gPSBiMjYgXiAofmIyOCAmIGIyMCk7XHJcbiAgICAgIHNbMjddID0gYjI3IF4gKH5iMjkgJiBiMjEpO1xyXG4gICAgICBzWzM2XSA9IGIzNiBeICh+YjM4ICYgYjMwKTtcclxuICAgICAgc1szN10gPSBiMzcgXiAofmIzOSAmIGIzMSk7XHJcbiAgICAgIHNbNDZdID0gYjQ2IF4gKH5iNDggJiBiNDApO1xyXG4gICAgICBzWzQ3XSA9IGI0NyBeICh+YjQ5ICYgYjQxKTtcclxuICAgICAgc1s4XSA9IGI4IF4gKH5iMCAmIGIyKTtcclxuICAgICAgc1s5XSA9IGI5IF4gKH5iMSAmIGIzKTtcclxuICAgICAgc1sxOF0gPSBiMTggXiAofmIxMCAmIGIxMik7XHJcbiAgICAgIHNbMTldID0gYjE5IF4gKH5iMTEgJiBiMTMpO1xyXG4gICAgICBzWzI4XSA9IGIyOCBeICh+YjIwICYgYjIyKTtcclxuICAgICAgc1syOV0gPSBiMjkgXiAofmIyMSAmIGIyMyk7XHJcbiAgICAgIHNbMzhdID0gYjM4IF4gKH5iMzAgJiBiMzIpO1xyXG4gICAgICBzWzM5XSA9IGIzOSBeICh+YjMxICYgYjMzKTtcclxuICAgICAgc1s0OF0gPSBiNDggXiAofmI0MCAmIGI0Mik7XHJcbiAgICAgIHNbNDldID0gYjQ5IF4gKH5iNDEgJiBiNDMpO1xyXG5cclxuICAgICAgc1swXSBePSBSQ1tuXTtcclxuICAgICAgc1sxXSBePSBSQ1tuICsgMV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAoQ09NTU9OX0pTKSB7XHJcbiAgICBtb2R1bGUuZXhwb3J0cyA9IG1ldGhvZHM7XHJcbiAgfSBlbHNlIGlmIChyb290KSB7XHJcbiAgICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xyXG4gICAgICByb290W2tleV0gPSBtZXRob2RzW2tleV07XHJcbiAgICB9XHJcbiAgfVxyXG59KHRoaXMpKTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///28\n")},function(module,exports,__webpack_require__){"use strict";eval('\nObject.defineProperty(exports, "__esModule", { value: true });\nasync function sleep(ms) {\n    return new Promise((resolve) => {\n        setTimeout(resolve, ms);\n    });\n}\nexports.sleep = sleep;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvc2xlZXAuanM/NzYzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwiZmlsZSI6IjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5hc3luYyBmdW5jdGlvbiBzbGVlcChtcykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuc2xlZXAgPSBzbGVlcDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///29\n')},function(module,exports,__webpack_require__){"use strict";eval('\nObject.defineProperty(exports, "__esModule", { value: true });\n/**\n * Build an index of a contract\'s ABI definitions.\n */\nclass MethodMap {\n    constructor(_methods) {\n        this.methods = {};\n        const keyCollisions = new Set();\n        for (const method of _methods) {\n            if (method.type !== "function") {\n                continue;\n            }\n            const key = `${method.name}#${method.inputs.length}`;\n            const sig = `${method.name}(${method.inputs.map((input) => input.type).join(",")})`;\n            if (this.methods[key]) {\n                // Detected ambiguity for this arity. User must use method signature\n                // to select the method.\n                keyCollisions.add(key);\n            }\n            else {\n                this.methods[key] = method;\n            }\n            this.methods[sig] = method;\n        }\n        for (const key of keyCollisions) {\n            delete this.methods[key];\n        }\n    }\n    /**\n     * Solidity allows method name overloading. If there\'s no ambiguity, allow\n     * the name of the method as selector. If there is ambiguity (same number\n     * of arguments, different types), must use the method signature.\n     *\n     * Example:\n     *\n     *   foo(uint a, uint b)\n     *\n     *   The method name is `foo`.\n     *   The method signature is `foo(uint, uint)`\n     */\n    findMethod(selector, args = []) {\n        // Find method by method signature\n        const method = this.methods[selector];\n        if (method) {\n            return method;\n        }\n        // Find method by method name\n        const key = `${selector}#${args.length}`;\n        return this.methods[key];\n    }\n}\nexports.MethodMap = MethodMap;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvTWV0aG9kTWFwLmpzP2Y3YzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFlBQVksR0FBRyxxQkFBcUI7QUFDL0QsMkJBQTJCLFlBQVksR0FBRyxtREFBbUQ7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFNBQVMsR0FBRyxZQUFZO0FBQy9DO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjMwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIEJ1aWxkIGFuIGluZGV4IG9mIGEgY29udHJhY3QncyBBQkkgZGVmaW5pdGlvbnMuXG4gKi9cbmNsYXNzIE1ldGhvZE1hcCB7XG4gICAgY29uc3RydWN0b3IoX21ldGhvZHMpIHtcbiAgICAgICAgdGhpcy5tZXRob2RzID0ge307XG4gICAgICAgIGNvbnN0IGtleUNvbGxpc2lvbnMgPSBuZXcgU2V0KCk7XG4gICAgICAgIGZvciAoY29uc3QgbWV0aG9kIG9mIF9tZXRob2RzKSB7XG4gICAgICAgICAgICBpZiAobWV0aG9kLnR5cGUgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7bWV0aG9kLm5hbWV9IyR7bWV0aG9kLmlucHV0cy5sZW5ndGh9YDtcbiAgICAgICAgICAgIGNvbnN0IHNpZyA9IGAke21ldGhvZC5uYW1lfSgke21ldGhvZC5pbnB1dHMubWFwKChpbnB1dCkgPT4gaW5wdXQudHlwZSkuam9pbihcIixcIil9KWA7XG4gICAgICAgICAgICBpZiAodGhpcy5tZXRob2RzW2tleV0pIHtcbiAgICAgICAgICAgICAgICAvLyBEZXRlY3RlZCBhbWJpZ3VpdHkgZm9yIHRoaXMgYXJpdHkuIFVzZXIgbXVzdCB1c2UgbWV0aG9kIHNpZ25hdHVyZVxuICAgICAgICAgICAgICAgIC8vIHRvIHNlbGVjdCB0aGUgbWV0aG9kLlxuICAgICAgICAgICAgICAgIGtleUNvbGxpc2lvbnMuYWRkKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHNba2V5XSA9IG1ldGhvZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubWV0aG9kc1tzaWddID0gbWV0aG9kO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleUNvbGxpc2lvbnMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm1ldGhvZHNba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBTb2xpZGl0eSBhbGxvd3MgbWV0aG9kIG5hbWUgb3ZlcmxvYWRpbmcuIElmIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBhbGxvd1xuICAgICAqIHRoZSBuYW1lIG9mIHRoZSBtZXRob2QgYXMgc2VsZWN0b3IuIElmIHRoZXJlIGlzIGFtYmlndWl0eSAoc2FtZSBudW1iZXJcbiAgICAgKiBvZiBhcmd1bWVudHMsIGRpZmZlcmVudCB0eXBlcyksIG11c3QgdXNlIHRoZSBtZXRob2Qgc2lnbmF0dXJlLlxuICAgICAqXG4gICAgICogRXhhbXBsZTpcbiAgICAgKlxuICAgICAqICAgZm9vKHVpbnQgYSwgdWludCBiKVxuICAgICAqXG4gICAgICogICBUaGUgbWV0aG9kIG5hbWUgaXMgYGZvb2AuXG4gICAgICogICBUaGUgbWV0aG9kIHNpZ25hdHVyZSBpcyBgZm9vKHVpbnQsIHVpbnQpYFxuICAgICAqL1xuICAgIGZpbmRNZXRob2Qoc2VsZWN0b3IsIGFyZ3MgPSBbXSkge1xuICAgICAgICAvLyBGaW5kIG1ldGhvZCBieSBtZXRob2Qgc2lnbmF0dXJlXG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMubWV0aG9kc1tzZWxlY3Rvcl07XG4gICAgICAgIGlmIChtZXRob2QpIHtcbiAgICAgICAgICAgIHJldHVybiBtZXRob2Q7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmluZCBtZXRob2QgYnkgbWV0aG9kIG5hbWVcbiAgICAgICAgY29uc3Qga2V5ID0gYCR7c2VsZWN0b3J9IyR7YXJncy5sZW5ndGh9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kc1trZXldO1xuICAgIH1cbn1cbmV4cG9ydHMuTWV0aG9kTWFwID0gTWV0aG9kTWFwO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n')},function(module,exports,__webpack_require__){"use strict";eval('\nObject.defineProperty(exports, "__esModule", { value: true });\nconst axios_1 = __webpack_require__(32);\nconst URL = __webpack_require__(50);\nclass QtumRPCRaw {\n    constructor(_baseURL) {\n        this._baseURL = _baseURL;\n        this.idNonce = 0;\n        const url = new URL(_baseURL);\n        const config = {\n            baseURL: url.origin,\n            // don\'t throw on non-200 response\n            validateStatus: () => true,\n        };\n        if (url.username !== "" && url.password !== "") {\n            config.auth = {\n                username: url.username,\n                password: url.password,\n            };\n        }\n        this._api = axios_1.default.create(config);\n    }\n    cancelTokenSource() {\n        return axios_1.default.CancelToken.source();\n    }\n    async rawCall(method, params = [], opts = {}) {\n        const rpcCall = {\n            method,\n            params,\n            id: this.idNonce++,\n        };\n        let res = await this.makeRPCCall(rpcCall);\n        if (res.status === 402) {\n            const auth = res.data;\n            res = await this.authCall(auth.id, rpcCall);\n        }\n        if (res.status === 401) {\n            // body is empty\n            throw new Error(await res.statusText);\n        }\n        // 404 if method doesn\'t exist\n        if (res.status === 404) {\n            throw new Error(`unknown method: ${method}`);\n        }\n        if (res.status !== 200) {\n            if (res.headers["content-type"] !== "application/json") {\n                const body = await res.data;\n                throw new Error(`${res.status} ${res.statusText}\\n${res.data}`);\n            }\n            const eresult = await res.data;\n            if (eresult.error) {\n                const { code, message, } = eresult.error;\n                throw new Error(`[${code}] ${message}`);\n            }\n            else {\n                throw new Error(String(eresult));\n            }\n        }\n        const { result } = await res.data;\n        return result;\n    }\n    makeRPCCall(rpcCall) {\n        return this._api.post("/", rpcCall);\n    }\n    async authCall(authID, rpcCall) {\n        // long-poll an authorization until its state changes\n        const res = await this._api.get(`/api/authorizations/${authID}/onchange`);\n        const { data } = res;\n        if (res.status !== 200) {\n            throw new Error(data.message);\n        }\n        const auth = data;\n        if (auth.state === "denied") {\n            throw new Error(`Authorization denied: ${authID}`);\n        }\n        if (auth.state === "accepted") {\n            return this.makeRPCCall(Object.assign({}, rpcCall, { auth: auth.id }));\n        }\n    }\n}\nexports.QtumRPCRaw = QtumRPCRaw;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvUXR1bVJQQ1Jhdy5qcz85MDExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZ0JBQWdCLG1CQUFPLENBQUMsRUFBTztBQUMvQixZQUFZLG1CQUFPLENBQUMsRUFBVztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsT0FBTztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxXQUFXLEdBQUcsZUFBZSxJQUFJLFNBQVM7QUFDN0U7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGlCQUFpQjtBQUN4QyxvQ0FBb0MsS0FBSyxJQUFJLFFBQVE7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxPQUFPO0FBQ3RFLGVBQWUsT0FBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELE9BQU87QUFDNUQ7QUFDQTtBQUNBLG9EQUFvRCxZQUFZLGdCQUFnQjtBQUNoRjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIzMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgYXhpb3NfMSA9IHJlcXVpcmUoXCJheGlvc1wiKTtcbmNvbnN0IFVSTCA9IHJlcXVpcmUoXCJ1cmwtcGFyc2VcIik7XG5jbGFzcyBRdHVtUlBDUmF3IHtcbiAgICBjb25zdHJ1Y3RvcihfYmFzZVVSTCkge1xuICAgICAgICB0aGlzLl9iYXNlVVJMID0gX2Jhc2VVUkw7XG4gICAgICAgIHRoaXMuaWROb25jZSA9IDA7XG4gICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoX2Jhc2VVUkwpO1xuICAgICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgICAgICBiYXNlVVJMOiB1cmwub3JpZ2luLFxuICAgICAgICAgICAgLy8gZG9uJ3QgdGhyb3cgb24gbm9uLTIwMCByZXNwb25zZVxuICAgICAgICAgICAgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUsXG4gICAgICAgIH07XG4gICAgICAgIGlmICh1cmwudXNlcm5hbWUgIT09IFwiXCIgJiYgdXJsLnBhc3N3b3JkICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBjb25maWcuYXV0aCA9IHtcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogdXJsLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiB1cmwucGFzc3dvcmQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FwaSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoY29uZmlnKTtcbiAgICB9XG4gICAgY2FuY2VsVG9rZW5Tb3VyY2UoKSB7XG4gICAgICAgIHJldHVybiBheGlvc18xLmRlZmF1bHQuQ2FuY2VsVG9rZW4uc291cmNlKCk7XG4gICAgfVxuICAgIGFzeW5jIHJhd0NhbGwobWV0aG9kLCBwYXJhbXMgPSBbXSwgb3B0cyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHJwY0NhbGwgPSB7XG4gICAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICBpZDogdGhpcy5pZE5vbmNlKyssXG4gICAgICAgIH07XG4gICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLm1ha2VSUENDYWxsKHJwY0NhbGwpO1xuICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDAyKSB7XG4gICAgICAgICAgICBjb25zdCBhdXRoID0gcmVzLmRhdGE7XG4gICAgICAgICAgICByZXMgPSBhd2FpdCB0aGlzLmF1dGhDYWxsKGF1dGguaWQsIHJwY0NhbGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgIC8vIGJvZHkgaXMgZW1wdHlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXMuc3RhdHVzVGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNDA0IGlmIG1ldGhvZCBkb2Vzbid0IGV4aXN0XG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBtZXRob2Q6ICR7bWV0aG9kfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGlmIChyZXMuaGVhZGVyc1tcImNvbnRlbnQtdHlwZVwiXSAhPT0gXCJhcHBsaWNhdGlvbi9qc29uXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9XFxuJHtyZXMuZGF0YX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVyZXN1bHQgPSBhd2FpdCByZXMuZGF0YTtcbiAgICAgICAgICAgIGlmIChlcmVzdWx0LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjb2RlLCBtZXNzYWdlLCB9ID0gZXJlc3VsdC5lcnJvcjtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFske2NvZGV9XSAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoU3RyaW5nKGVyZXN1bHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHJlc3VsdCB9ID0gYXdhaXQgcmVzLmRhdGE7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIG1ha2VSUENDYWxsKHJwY0NhbGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwaS5wb3N0KFwiL1wiLCBycGNDYWxsKTtcbiAgICB9XG4gICAgYXN5bmMgYXV0aENhbGwoYXV0aElELCBycGNDYWxsKSB7XG4gICAgICAgIC8vIGxvbmctcG9sbCBhbiBhdXRob3JpemF0aW9uIHVudGlsIGl0cyBzdGF0ZSBjaGFuZ2VzXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuX2FwaS5nZXQoYC9hcGkvYXV0aG9yaXphdGlvbnMvJHthdXRoSUR9L29uY2hhbmdlYCk7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzO1xuICAgICAgICBpZiAocmVzLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhdXRoID0gZGF0YTtcbiAgICAgICAgaWYgKGF1dGguc3RhdGUgPT09IFwiZGVuaWVkXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXV0aG9yaXphdGlvbiBkZW5pZWQ6ICR7YXV0aElEfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRoLnN0YXRlID09PSBcImFjY2VwdGVkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1ha2VSUENDYWxsKE9iamVjdC5hc3NpZ24oe30sIHJwY0NhbGwsIHsgYXV0aDogYXV0aC5pZCB9KSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLlF0dW1SUENSYXcgPSBRdHVtUlBDUmF3O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///31\n')},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(33);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2luZGV4LmpzP2JjM2EiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsRUFBYSIsImZpbGUiOiIzMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvYXhpb3MnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///32\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\nvar bind = __webpack_require__(12);\nvar Axios = __webpack_require__(35);\nvar defaults = __webpack_require__(5);\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = __webpack_require__(16);\naxios.CancelToken = __webpack_require__(48);\naxios.isCancel = __webpack_require__(15);\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = __webpack_require__(49);\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9heGlvcy5qcz9jZWU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxDQUFTO0FBQzdCLFdBQVcsbUJBQU8sQ0FBQyxFQUFnQjtBQUNuQyxZQUFZLG1CQUFPLENBQUMsRUFBYztBQUNsQyxlQUFlLG1CQUFPLENBQUMsQ0FBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVksTUFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLG1CQUFPLENBQUMsRUFBaUI7QUFDeEMsb0JBQW9CLG1CQUFPLENBQUMsRUFBc0I7QUFDbEQsaUJBQWlCLG1CQUFPLENBQUMsRUFBbUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLEVBQWtCOztBQUV6Qzs7QUFFQTtBQUNBIiwiZmlsZSI6IjMzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG52YXIgQXhpb3MgPSByZXF1aXJlKCcuL2NvcmUvQXhpb3MnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICogQHJldHVybiB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRDb25maWcpIHtcbiAgdmFyIGNvbnRleHQgPSBuZXcgQXhpb3MoZGVmYXVsdENvbmZpZyk7XG4gIHZhciBpbnN0YW5jZSA9IGJpbmQoQXhpb3MucHJvdG90eXBlLnJlcXVlc3QsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgQXhpb3MucHJvdG90eXBlLCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGNvbnRleHQgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBjb250ZXh0KTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbi8vIENyZWF0ZSB0aGUgZGVmYXVsdCBpbnN0YW5jZSB0byBiZSBleHBvcnRlZFxudmFyIGF4aW9zID0gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdHMpO1xuXG4vLyBFeHBvc2UgQXhpb3MgY2xhc3MgdG8gYWxsb3cgY2xhc3MgaW5oZXJpdGFuY2VcbmF4aW9zLkF4aW9zID0gQXhpb3M7XG5cbi8vIEZhY3RvcnkgZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXNcbmF4aW9zLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpbnN0YW5jZUNvbmZpZykge1xuICByZXR1cm4gY3JlYXRlSW5zdGFuY2UodXRpbHMubWVyZ2UoZGVmYXVsdHMsIGluc3RhbmNlQ29uZmlnKSk7XG59O1xuXG4vLyBFeHBvc2UgQ2FuY2VsICYgQ2FuY2VsVG9rZW5cbmF4aW9zLkNhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbCcpO1xuYXhpb3MuQ2FuY2VsVG9rZW4gPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWxUb2tlbicpO1xuYXhpb3MuaXNDYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9pc0NhbmNlbCcpO1xuXG4vLyBFeHBvc2UgYWxsL3NwcmVhZFxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuYXhpb3Muc3ByZWFkID0gcmVxdWlyZSgnLi9oZWxwZXJzL3NwcmVhZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGF4aW9zO1xuXG4vLyBBbGxvdyB1c2Ugb2YgZGVmYXVsdCBpbXBvcnQgc3ludGF4IGluIFR5cGVTY3JpcHRcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBheGlvcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n")},function(module,exports){eval("/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n  return obj != null && obj.constructor != null &&\n    typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcz8wNDRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEJ1ZmZlclxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IgIT0gbnVsbCAmJlxuICAgIHR5cGVvZiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iailcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///34\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar defaults = __webpack_require__(5);\nvar utils = __webpack_require__(0);\nvar InterceptorManager = __webpack_require__(43);\nvar dispatchRequest = __webpack_require__(44);\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = utils.merge({\n      url: arguments[0]\n    }, arguments[1]);\n  }\n\n  config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n  config.method = config.method.toLowerCase();\n\n  // Hook up interceptors middleware\n  var chain = [dispatchRequest, undefined];\n  var promise = Promise.resolve(config);\n\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    chain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    chain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  while (chain.length) {\n    promise = promise.then(chain.shift(), chain.shift());\n  }\n\n  return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0F4aW9zLmpzPzBhMDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsZUFBZSxtQkFBTyxDQUFDLENBQWU7QUFDdEMsWUFBWSxtQkFBTyxDQUFDLENBQVk7QUFDaEMseUJBQXlCLG1CQUFPLENBQUMsRUFBc0I7QUFDdkQsc0JBQXNCLG1CQUFPLENBQUMsRUFBbUI7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxrQ0FBa0MsY0FBYztBQUNoRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vLi4vZGVmYXVsdHMnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIEF4aW9zKGluc3RhbmNlQ29uZmlnKSB7XG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAqL1xuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcgPSB1dGlscy5tZXJnZSh7XG4gICAgICB1cmw6IGFyZ3VtZW50c1swXVxuICAgIH0sIGFyZ3VtZW50c1sxXSk7XG4gIH1cblxuICBjb25maWcgPSB1dGlscy5tZXJnZShkZWZhdWx0cywge21ldGhvZDogJ2dldCd9LCB0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICBjb25maWcubWV0aG9kID0gY29uZmlnLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIEhvb2sgdXAgaW50ZXJjZXB0b3JzIG1pZGRsZXdhcmVcbiAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcbiAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcblxuICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24gdW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICBjaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIGNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHdoaWxlIChjaGFpbi5sZW5ndGgpIHtcbiAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1dGlscy5tZXJnZShjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmxcbiAgICB9KSk7XG4gIH07XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXRpbHMubWVyZ2UoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHVybDogdXJsLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF4aW9zO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///35\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL25vcm1hbGl6ZUhlYWRlck5hbWUuanM/YzhhZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMsQ0FBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwiZmlsZSI6IjM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgbm9ybWFsaXplZE5hbWUpIHtcbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiBwcm9jZXNzSGVhZGVyKHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKG5hbWUgIT09IG5vcm1hbGl6ZWROYW1lICYmIG5hbWUudG9VcHBlckNhc2UoKSA9PT0gbm9ybWFsaXplZE5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW25hbWVdO1xuICAgIH1cbiAgfSk7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar createError = __webpack_require__(14);\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  // Note: status is not exposed by XDomainRequest\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcz80NjdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQixtQkFBTyxDQUFDLEVBQWU7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4vY3JlYXRlRXJyb3InKTtcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSkge1xuICB2YXIgdmFsaWRhdGVTdGF0dXMgPSByZXNwb25zZS5jb25maWcudmFsaWRhdGVTdGF0dXM7XG4gIC8vIE5vdGU6IHN0YXR1cyBpcyBub3QgZXhwb3NlZCBieSBYRG9tYWluUmVxdWVzdFxuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICBudWxsLFxuICAgICAgcmVzcG9uc2UucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlXG4gICAgKSk7XG4gIH1cbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///37\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n  error.request = request;\n  error.response = response;\n  return error;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2VuaGFuY2VFcnJvci5qcz8zODdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjM4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFVwZGF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgY29uZmlnLCBlcnJvciBjb2RlLCBhbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgVGhlIGVycm9yIHRvIHVwZGF0ZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgZXJyb3IuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIGVycm9yLmNvbmZpZyA9IGNvbmZpZztcbiAgaWYgKGNvZGUpIHtcbiAgICBlcnJvci5jb2RlID0gY29kZTtcbiAgfVxuICBlcnJvci5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgZXJyb3IucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgcmV0dXJuIGVycm9yO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%40/gi, '@').\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2J1aWxkVVJMLmpzPzMwYjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsWUFBWSxtQkFBTyxDQUFDLENBQVk7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjM5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIGVuY29kZSh2YWwpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWwpLlxuICAgIHJlcGxhY2UoLyU0MC9naSwgJ0AnKS5cbiAgICByZXBsYWNlKC8lM0EvZ2ksICc6JykuXG4gICAgcmVwbGFjZSgvJTI0L2csICckJykuXG4gICAgcmVwbGFjZSgvJTJDL2dpLCAnLCcpLlxuICAgIHJlcGxhY2UoLyUyMC9nLCAnKycpLlxuICAgIHJlcGxhY2UoLyU1Qi9naSwgJ1snKS5cbiAgICByZXBsYWNlKC8lNUQvZ2ksICddJyk7XG59XG5cbi8qKlxuICogQnVpbGQgYSBVUkwgYnkgYXBwZW5kaW5nIHBhcmFtcyB0byB0aGUgZW5kXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgYmFzZSBvZiB0aGUgdXJsIChlLmcuLCBodHRwOi8vd3d3Lmdvb2dsZS5jb20pXG4gKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gVGhlIHBhcmFtcyB0byBiZSBhcHBlbmRlZFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB1cmxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZFVSTCh1cmwsIHBhcmFtcywgcGFyYW1zU2VyaWFsaXplcikge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgdmFyIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIGlmIChwYXJhbXNTZXJpYWxpemVyKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtc1NlcmlhbGl6ZXIocGFyYW1zKTtcbiAgfSBlbHNlIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMpKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtcy50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHZhciBwYXJ0cyA9IFtdO1xuXG4gICAgdXRpbHMuZm9yRWFjaChwYXJhbXMsIGZ1bmN0aW9uIHNlcmlhbGl6ZSh2YWwsIGtleSkge1xuICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh1dGlscy5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAga2V5ID0ga2V5ICsgJ1tdJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbCA9IFt2YWxdO1xuICAgICAgfVxuXG4gICAgICB1dGlscy5mb3JFYWNoKHZhbCwgZnVuY3Rpb24gcGFyc2VWYWx1ZSh2KSB7XG4gICAgICAgIGlmICh1dGlscy5pc0RhdGUodikpIHtcbiAgICAgICAgICB2ID0gdi50b0lTT1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzT2JqZWN0KHYpKSB7XG4gICAgICAgICAgdiA9IEpTT04uc3RyaW5naWZ5KHYpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnRzLnB1c2goZW5jb2RlKGtleSkgKyAnPScgKyBlbmNvZGUodikpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFydHMuam9pbignJicpO1xuICB9XG5cbiAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMpIHtcbiAgICB1cmwgKz0gKHVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIH1cblxuICByZXR1cm4gdXJsO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlSGVhZGVycy5qcz9jMzQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxDQUFZOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGVBQWU7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EiLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuLy8gSGVhZGVycyB3aG9zZSBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkIGJ5IG5vZGVcbi8vIGMuZi4gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9tZXNzYWdlX2hlYWRlcnNcbnZhciBpZ25vcmVEdXBsaWNhdGVPZiA9IFtcbiAgJ2FnZScsICdhdXRob3JpemF0aW9uJywgJ2NvbnRlbnQtbGVuZ3RoJywgJ2NvbnRlbnQtdHlwZScsICdldGFnJyxcbiAgJ2V4cGlyZXMnLCAnZnJvbScsICdob3N0JywgJ2lmLW1vZGlmaWVkLXNpbmNlJywgJ2lmLXVubW9kaWZpZWQtc2luY2UnLFxuICAnbGFzdC1tb2RpZmllZCcsICdsb2NhdGlvbicsICdtYXgtZm9yd2FyZHMnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICdyZWZlcmVyJywgJ3JldHJ5LWFmdGVyJywgJ3VzZXItYWdlbnQnXG5dO1xuXG4vKipcbiAqIFBhcnNlIGhlYWRlcnMgaW50byBhbiBvYmplY3RcbiAqXG4gKiBgYGBcbiAqIERhdGU6IFdlZCwgMjcgQXVnIDIwMTQgMDg6NTg6NDkgR01UXG4gKiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cbiAqIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAqIFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaGVhZGVycyBIZWFkZXJzIG5lZWRpbmcgdG8gYmUgcGFyc2VkXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBIZWFkZXJzIHBhcnNlZCBpbnRvIGFuIG9iamVjdFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlSGVhZGVycyhoZWFkZXJzKSB7XG4gIHZhciBwYXJzZWQgPSB7fTtcbiAgdmFyIGtleTtcbiAgdmFyIHZhbDtcbiAgdmFyIGk7XG5cbiAgaWYgKCFoZWFkZXJzKSB7IHJldHVybiBwYXJzZWQ7IH1cblxuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMuc3BsaXQoJ1xcbicpLCBmdW5jdGlvbiBwYXJzZXIobGluZSkge1xuICAgIGkgPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBrZXkgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKDAsIGkpKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoaSArIDEpKTtcblxuICAgIGlmIChrZXkpIHtcbiAgICAgIGlmIChwYXJzZWRba2V5XSAmJiBpZ25vcmVEdXBsaWNhdGVPZi5pbmRleE9mKGtleSkgPj0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSAocGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSA6IFtdKS5jb25jYXQoW3ZhbF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSBwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldICsgJywgJyArIHZhbCA6IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n  (function standardBrowserEnv() {\n    var msie = /(msie|trident)/i.test(navigator.userAgent);\n    var urlParsingNode = document.createElement('a');\n    var originURL;\n\n    /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n    function resolveURL(url) {\n      var href = url;\n\n      if (msie) {\n        // IE needs attribute set twice to normalize properties\n        urlParsingNode.setAttribute('href', href);\n        href = urlParsingNode.href;\n      }\n\n      urlParsingNode.setAttribute('href', href);\n\n      // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n      return {\n        href: urlParsingNode.href,\n        protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n        host: urlParsingNode.host,\n        search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n        hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n        hostname: urlParsingNode.hostname,\n        port: urlParsingNode.port,\n        pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n                  urlParsingNode.pathname :\n                  '/' + urlParsingNode.pathname\n      };\n    }\n\n    originURL = resolveURL(window.location.href);\n\n    /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n    return function isURLSameOrigin(requestURL) {\n      var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n      return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n    };\n  })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return function isURLSameOrigin() {\n      return true;\n    };\n  })()\n);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcz8zOTM0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxDQUFZOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGdCQUFnQixRQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsImZpbGUiOiI0MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XG4gIC8vIHdoZXRoZXIgdGhlIHJlcXVlc3QgVVJMIGlzIG9mIHRoZSBzYW1lIG9yaWdpbiBhcyBjdXJyZW50IGxvY2F0aW9uLlxuICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgIHZhciBtc2llID0gLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICB2YXIgdXJsUGFyc2luZ05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgdmFyIG9yaWdpblVSTDtcblxuICAgIC8qKlxuICAgICogUGFyc2UgYSBVUkwgdG8gZGlzY292ZXIgaXQncyBjb21wb25lbnRzXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCBUaGUgVVJMIHRvIGJlIHBhcnNlZFxuICAgICogQHJldHVybnMge09iamVjdH1cbiAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc29sdmVVUkwodXJsKSB7XG4gICAgICB2YXIgaHJlZiA9IHVybDtcblxuICAgICAgaWYgKG1zaWUpIHtcbiAgICAgICAgLy8gSUUgbmVlZHMgYXR0cmlidXRlIHNldCB0d2ljZSB0byBub3JtYWxpemUgcHJvcGVydGllc1xuICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcbiAgICAgICAgaHJlZiA9IHVybFBhcnNpbmdOb2RlLmhyZWY7XG4gICAgICB9XG5cbiAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuXG4gICAgICAvLyB1cmxQYXJzaW5nTm9kZSBwcm92aWRlcyB0aGUgVXJsVXRpbHMgaW50ZXJmYWNlIC0gaHR0cDovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybHV0aWxzXG4gICAgICByZXR1cm4ge1xuICAgICAgICBocmVmOiB1cmxQYXJzaW5nTm9kZS5ocmVmLFxuICAgICAgICBwcm90b2NvbDogdXJsUGFyc2luZ05vZGUucHJvdG9jb2wgPyB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbC5yZXBsYWNlKC86JC8sICcnKSA6ICcnLFxuICAgICAgICBob3N0OiB1cmxQYXJzaW5nTm9kZS5ob3N0LFxuICAgICAgICBzZWFyY2g6IHVybFBhcnNpbmdOb2RlLnNlYXJjaCA/IHVybFBhcnNpbmdOb2RlLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgJycpIDogJycsXG4gICAgICAgIGhhc2g6IHVybFBhcnNpbmdOb2RlLmhhc2ggPyB1cmxQYXJzaW5nTm9kZS5oYXNoLnJlcGxhY2UoL14jLywgJycpIDogJycsXG4gICAgICAgIGhvc3RuYW1lOiB1cmxQYXJzaW5nTm9kZS5ob3N0bmFtZSxcbiAgICAgICAgcG9ydDogdXJsUGFyc2luZ05vZGUucG9ydCxcbiAgICAgICAgcGF0aG5hbWU6ICh1cmxQYXJzaW5nTm9kZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJykgP1xuICAgICAgICAgICAgICAgICAgdXJsUGFyc2luZ05vZGUucGF0aG5hbWUgOlxuICAgICAgICAgICAgICAgICAgJy8nICsgdXJsUGFyc2luZ05vZGUucGF0aG5hbWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgb3JpZ2luVVJMID0gcmVzb2x2ZVVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICAvKipcbiAgICAqIERldGVybWluZSBpZiBhIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBjdXJyZW50IGxvY2F0aW9uXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RVUkwgVGhlIFVSTCB0byB0ZXN0XG4gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgKi9cbiAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcbiAgICAgIHZhciBwYXJzZWQgPSAodXRpbHMuaXNTdHJpbmcocmVxdWVzdFVSTCkpID8gcmVzb2x2ZVVSTChyZXF1ZXN0VVJMKSA6IHJlcXVlc3RVUkw7XG4gICAgICByZXR1cm4gKHBhcnNlZC5wcm90b2NvbCA9PT0gb3JpZ2luVVJMLnByb3RvY29sICYmXG4gICAgICAgICAgICBwYXJzZWQuaG9zdCA9PT0gb3JpZ2luVVJMLmhvc3QpO1xuICAgIH07XG4gIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudnMgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gIH0pKClcbik7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///41\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n  (function standardBrowserEnv() {\n    return {\n      write: function write(name, value, expires, path, domain, secure) {\n        var cookie = [];\n        cookie.push(name + '=' + encodeURIComponent(value));\n\n        if (utils.isNumber(expires)) {\n          cookie.push('expires=' + new Date(expires).toGMTString());\n        }\n\n        if (utils.isString(path)) {\n          cookie.push('path=' + path);\n        }\n\n        if (utils.isString(domain)) {\n          cookie.push('domain=' + domain);\n        }\n\n        if (secure === true) {\n          cookie.push('secure');\n        }\n\n        document.cookie = cookie.join('; ');\n      },\n\n      read: function read(name) {\n        var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n        return (match ? decodeURIComponent(match[3]) : null);\n      },\n\n      remove: function remove(name) {\n        this.write(name, '', Date.now() - 86400000);\n      }\n    };\n  })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return {\n      write: function write() {},\n      read: function read() { return null; },\n      remove: function remove() {}\n    };\n  })()\n);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2Nvb2tpZXMuanM/N2FhYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMsQ0FBWTs7QUFFaEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QyxPQUFPOztBQUVQO0FBQ0EsMERBQTBELHdCQUF3QjtBQUNsRjtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQyw2QkFBNkIsYUFBYSxFQUFFO0FBQzVDO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxuICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgIHJldHVybiB7XG4gICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XG4gICAgICAgIHZhciBjb29raWUgPSBbXTtcbiAgICAgICAgY29va2llLnB1c2gobmFtZSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuXG4gICAgICAgIGlmICh1dGlscy5pc051bWJlcihleHBpcmVzKSkge1xuICAgICAgICAgIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhwYXRoKSkge1xuICAgICAgICAgIGNvb2tpZS5wdXNoKCdwYXRoPScgKyBwYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhkb21haW4pKSB7XG4gICAgICAgICAgY29va2llLnB1c2goJ2RvbWFpbj0nICsgZG9tYWluKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWN1cmUgPT09IHRydWUpIHtcbiAgICAgICAgICBjb29raWUucHVzaCgnc2VjdXJlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWUuam9pbignOyAnKTtcbiAgICAgIH0sXG5cbiAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQobmFtZSkge1xuICAgICAgICB2YXIgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgICByZXR1cm4gKG1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzNdKSA6IG51bGwpO1xuICAgICAgfSxcblxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgICAgfVxuICAgIH07XG4gIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudiAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKCkge30sXG4gICAgICByZWFkOiBmdW5jdGlvbiByZWFkKCkgeyByZXR1cm4gbnVsbDsgfSxcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICB9O1xuICB9KSgpXG4pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///42\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcz9mNmI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxDQUFZOztBQUVoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQjtBQUNBLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBIiwiZmlsZSI6IjQzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIEludGVyY2VwdG9yTWFuYWdlcigpIHtcbiAgdGhpcy5oYW5kbGVycyA9IFtdO1xufVxuXG4vKipcbiAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxuICpcbiAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoZnVsZmlsbGVkLCByZWplY3RlZCkge1xuICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgIGZ1bGZpbGxlZDogZnVsZmlsbGVkLFxuICAgIHJlamVjdGVkOiByZWplY3RlZFxuICB9KTtcbiAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmVqZWN0ID0gZnVuY3Rpb24gZWplY3QoaWQpIHtcbiAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICB9XG59O1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXG4gKlxuICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcbiAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgIGZuKGgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEludGVyY2VwdG9yTWFuYWdlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\nvar transformData = __webpack_require__(45);\nvar isCancel = __webpack_require__(15);\nvar defaults = __webpack_require__(5);\nvar isAbsoluteURL = __webpack_require__(46);\nvar combineURLs = __webpack_require__(47);\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Support baseURL config\n  if (config.baseURL && !isAbsoluteURL(config.url)) {\n    config.url = combineURLs(config.baseURL, config.url);\n  }\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData(\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers || {}\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData(\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData(\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcz81MjcwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxDQUFZO0FBQ2hDLG9CQUFvQixtQkFBTyxDQUFDLEVBQWlCO0FBQzdDLGVBQWUsbUJBQU8sQ0FBQyxFQUFvQjtBQUMzQyxlQUFlLG1CQUFPLENBQUMsQ0FBYTtBQUNwQyxvQkFBb0IsbUJBQU8sQ0FBQyxFQUE0QjtBQUN4RCxrQkFBa0IsbUJBQU8sQ0FBQyxFQUEwQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLHVDQUF1QztBQUN2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSCIsImZpbGUiOiI0NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHRyYW5zZm9ybURhdGEgPSByZXF1aXJlKCcuL3RyYW5zZm9ybURhdGEnKTtcbnZhciBpc0NhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9pc0NhbmNlbCcpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcbnZhciBpc0Fic29sdXRlVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwnKTtcbnZhciBjb21iaW5lVVJMcyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9jb21iaW5lVVJMcycpO1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYWRhcHRlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRpc3BhdGNoUmVxdWVzdChjb25maWcpIHtcbiAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gIC8vIFN1cHBvcnQgYmFzZVVSTCBjb25maWdcbiAgaWYgKGNvbmZpZy5iYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKGNvbmZpZy51cmwpKSB7XG4gICAgY29uZmlnLnVybCA9IGNvbWJpbmVVUkxzKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgfVxuXG4gIC8vIEVuc3VyZSBoZWFkZXJzIGV4aXN0XG4gIGNvbmZpZy5oZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgfHwge307XG5cbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxuICBjb25maWcuZGF0YSA9IHRyYW5zZm9ybURhdGEoXG4gICAgY29uZmlnLmRhdGEsXG4gICAgY29uZmlnLmhlYWRlcnMsXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcbiAgKTtcblxuICAvLyBGbGF0dGVuIGhlYWRlcnNcbiAgY29uZmlnLmhlYWRlcnMgPSB1dGlscy5tZXJnZShcbiAgICBjb25maWcuaGVhZGVycy5jb21tb24gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnNbY29uZmlnLm1ldGhvZF0gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnMgfHwge31cbiAgKTtcblxuICB1dGlscy5mb3JFYWNoKFxuICAgIFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJywgJ2NvbW1vbiddLFxuICAgIGZ1bmN0aW9uIGNsZWFuSGVhZGVyQ29uZmlnKG1ldGhvZCkge1xuICAgICAgZGVsZXRlIGNvbmZpZy5oZWFkZXJzW21ldGhvZF07XG4gICAgfVxuICApO1xuXG4gIHZhciBhZGFwdGVyID0gY29uZmlnLmFkYXB0ZXIgfHwgZGVmYXVsdHMuYWRhcHRlcjtcblxuICByZXR1cm4gYWRhcHRlcihjb25maWcpLnRoZW4oZnVuY3Rpb24gb25BZGFwdGVyUmVzb2x1dGlvbihyZXNwb25zZSkge1xuICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgcmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEoXG4gICAgICByZXNwb25zZS5kYXRhLFxuICAgICAgcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YShcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///44\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(0);\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn(data, headers);\n  });\n\n  return data;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3RyYW5zZm9ybURhdGEuanM/YzQwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMsQ0FBWTs7QUFFaEM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsTUFBTTtBQUNqQixXQUFXLGVBQWU7QUFDMUIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSIsImZpbGUiOiI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2VcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IGRhdGEgVGhlIGRhdGEgdG8gYmUgdHJhbnNmb3JtZWRcbiAqIEBwYXJhbSB7QXJyYXl9IGhlYWRlcnMgVGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShkYXRhLCBoZWFkZXJzLCBmbnMpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4oZGF0YSwgaGVhZGVycyk7XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanM/ZDkyNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQ2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxuICAvLyBSRkMgMzk4NiBkZWZpbmVzIHNjaGVtZSBuYW1lIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBhbmQgZm9sbG93ZWRcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXG4gIHJldHVybiAvXihbYS16XVthLXpcXGRcXCtcXC1cXC5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzP2U2ODMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQ3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgc3BlY2lmaWVkIFVSTHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVVSTCBUaGUgcmVsYXRpdmUgVVJMXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///47\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar Cancel = __webpack_require__(16);\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsVG9rZW4uanM/OGRmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixhQUFhLG1CQUFPLENBQUMsRUFBVTs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6IjQ4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi9DYW5jZWwnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xuICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIHJlc29sdmVQcm9taXNlO1xuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAqL1xuQ2FuY2VsVG9rZW4uc291cmNlID0gZnVuY3Rpb24gc291cmNlKCkge1xuICB2YXIgY2FuY2VsO1xuICB2YXIgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xuICAgIGNhbmNlbCA9IGM7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRva2VuOiB0b2tlbixcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxUb2tlbjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwcmVhZC5qcz8wZGY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFN5bnRhY3RpYyBzdWdhciBmb3IgaW52b2tpbmcgYSBmdW5jdGlvbiBhbmQgZXhwYW5kaW5nIGFuIGFycmF5IGZvciBhcmd1bWVudHMuXG4gKlxuICogQ29tbW9uIHVzZSBjYXNlIHdvdWxkIGJlIHRvIHVzZSBgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5YC5cbiAqXG4gKiAgYGBganNcbiAqICBmdW5jdGlvbiBmKHgsIHksIHopIHt9XG4gKiAgdmFyIGFyZ3MgPSBbMSwgMiwgM107XG4gKiAgZi5hcHBseShudWxsLCBhcmdzKTtcbiAqICBgYGBcbiAqXG4gKiBXaXRoIGBzcHJlYWRgIHRoaXMgZXhhbXBsZSBjYW4gYmUgcmUtd3JpdHRlbi5cbiAqXG4gKiAgYGBganNcbiAqICBzcHJlYWQoZnVuY3Rpb24oeCwgeSwgeikge30pKFsxLCAyLCAzXSk7XG4gKiAgYGBgXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoYXJyKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XG4gIH07XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///49\n")},function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(global) {\n\nvar required = __webpack_require__(51)\n  , qs = __webpack_require__(52)\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\S\\s]*)/i\n  , whitespace = '[\\\\x09\\\\x0A\\\\x0B\\\\x0C\\\\x0D\\\\x20\\\\xA0\\\\u1680\\\\u180E\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200A\\\\u202F\\\\u205F\\\\u3000\\\\u2028\\\\u2029\\\\uFEFF]'\n  , left = new RegExp('^'+ whitespace +'+');\n\n/**\n * Trim a given string.\n *\n * @param {String} str String to trim.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(left, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address) {          // Sanitize what is left of the address\n    return address.replace('\\\\', '/');\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d+)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address) {\n  address = trimLeft(address);\n  var match = protocolre.exec(address);\n\n  return {\n    protocol: match[1] ? match[1].toLowerCase() : '',\n    slashes: !!match[2],\n    rest: match[3]\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '');\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (!extracted.slashes) instructions[3] = [/(.*)/, 'pathname'];\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      if (~(index = address.indexOf(parse))) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n  if (url.auth) {\n    instruction = url.auth.split(':');\n    url.username = instruction[0] || '';\n    url.password = instruction[1] || '';\n  }\n\n  url.origin = url.protocol && url.host && url.protocol !== 'file:'\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (/:\\d+$/.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    default:\n      url[part] = value;\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.origin = url.protocol && url.host && url.protocol !== 'file:'\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result = protocol + (url.slashes ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  }\n\n  result += url.host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(2)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3VybC1wYXJzZS9pbmRleC5qcz8xODE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhDQUFhOztBQUViLGVBQWUsbUJBQU8sQ0FBQyxFQUFlO0FBQ3RDLFNBQVMsbUJBQU8sQ0FBQyxFQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQ7QUFDekQsR0FBRztBQUNILHNDQUFzQztBQUN0QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEIsY0FBYyxPQUFPO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZLGdCQUFnQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGNBQWM7QUFDekIsV0FBVyxpQkFBaUI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLHlCQUF5QjtBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE1BQU07QUFDakIsV0FBVyxpQkFBaUI7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFJO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6IjUwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVxdWlyZWQgPSByZXF1aXJlKCdyZXF1aXJlcy1wb3J0JylcbiAgLCBxcyA9IHJlcXVpcmUoJ3F1ZXJ5c3RyaW5naWZ5JylcbiAgLCBzbGFzaGVzID0gL15bQS1aYS16XVtBLVphLXowLTkrLS5dKjpcXC9cXC8vXG4gICwgcHJvdG9jb2xyZSA9IC9eKFthLXpdW2EtejAtOS4rLV0qOik/KFxcL1xcLyk/KFtcXFNcXHNdKikvaVxuICAsIHdoaXRlc3BhY2UgPSAnW1xcXFx4MDlcXFxceDBBXFxcXHgwQlxcXFx4MENcXFxceDBEXFxcXHgyMFxcXFx4QTBcXFxcdTE2ODBcXFxcdTE4MEVcXFxcdTIwMDBcXFxcdTIwMDFcXFxcdTIwMDJcXFxcdTIwMDNcXFxcdTIwMDRcXFxcdTIwMDVcXFxcdTIwMDZcXFxcdTIwMDdcXFxcdTIwMDhcXFxcdTIwMDlcXFxcdTIwMEFcXFxcdTIwMkZcXFxcdTIwNUZcXFxcdTMwMDBcXFxcdTIwMjhcXFxcdTIwMjlcXFxcdUZFRkZdJ1xuICAsIGxlZnQgPSBuZXcgUmVnRXhwKCdeJysgd2hpdGVzcGFjZSArJysnKTtcblxuLyoqXG4gKiBUcmltIGEgZ2l2ZW4gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgU3RyaW5nIHRvIHRyaW0uXG4gKiBAcHVibGljXG4gKi9cbmZ1bmN0aW9uIHRyaW1MZWZ0KHN0cikge1xuICByZXR1cm4gKHN0ciA/IHN0ciA6ICcnKS50b1N0cmluZygpLnJlcGxhY2UobGVmdCwgJycpO1xufVxuXG4vKipcbiAqIFRoZXNlIGFyZSB0aGUgcGFyc2UgcnVsZXMgZm9yIHRoZSBVUkwgcGFyc2VyLCBpdCBpbmZvcm1zIHRoZSBwYXJzZXJcbiAqIGFib3V0OlxuICpcbiAqIDAuIFRoZSBjaGFyIGl0IE5lZWRzIHRvIHBhcnNlLCBpZiBpdCdzIGEgc3RyaW5nIGl0IHNob3VsZCBiZSBkb25lIHVzaW5nXG4gKiAgICBpbmRleE9mLCBSZWdFeHAgdXNpbmcgZXhlYyBhbmQgTmFOIG1lYW5zIHNldCBhcyBjdXJyZW50IHZhbHVlLlxuICogMS4gVGhlIHByb3BlcnR5IHdlIHNob3VsZCBzZXQgd2hlbiBwYXJzaW5nIHRoaXMgdmFsdWUuXG4gKiAyLiBJbmRpY2F0aW9uIGlmIGl0J3MgYmFja3dhcmRzIG9yIGZvcndhcmQgcGFyc2luZywgd2hlbiBzZXQgYXMgbnVtYmVyIGl0J3NcbiAqICAgIHRoZSB2YWx1ZSBvZiBleHRyYSBjaGFycyB0aGF0IHNob3VsZCBiZSBzcGxpdCBvZmYuXG4gKiAzLiBJbmhlcml0IGZyb20gbG9jYXRpb24gaWYgbm9uIGV4aXN0aW5nIGluIHRoZSBwYXJzZXIuXG4gKiA0LiBgdG9Mb3dlckNhc2VgIHRoZSByZXN1bHRpbmcgdmFsdWUuXG4gKi9cbnZhciBydWxlcyA9IFtcbiAgWycjJywgJ2hhc2gnXSwgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IGZyb20gdGhlIGJhY2suXG4gIFsnPycsICdxdWVyeSddLCAgICAgICAgICAgICAgICAgICAgICAgLy8gRXh0cmFjdCBmcm9tIHRoZSBiYWNrLlxuICBmdW5jdGlvbiBzYW5pdGl6ZShhZGRyZXNzKSB7ICAgICAgICAgIC8vIFNhbml0aXplIHdoYXQgaXMgbGVmdCBvZiB0aGUgYWRkcmVzc1xuICAgIHJldHVybiBhZGRyZXNzLnJlcGxhY2UoJ1xcXFwnLCAnLycpO1xuICB9LFxuICBbJy8nLCAncGF0aG5hbWUnXSwgICAgICAgICAgICAgICAgICAgIC8vIEV4dHJhY3QgZnJvbSB0aGUgYmFjay5cbiAgWydAJywgJ2F1dGgnLCAxXSwgICAgICAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IGZyb20gdGhlIGZyb250LlxuICBbTmFOLCAnaG9zdCcsIHVuZGVmaW5lZCwgMSwgMV0sICAgICAgIC8vIFNldCBsZWZ0IG92ZXIgdmFsdWUuXG4gIFsvOihcXGQrKSQvLCAncG9ydCcsIHVuZGVmaW5lZCwgMV0sICAgIC8vIFJlZ0V4cCB0aGUgYmFjay5cbiAgW05hTiwgJ2hvc3RuYW1lJywgdW5kZWZpbmVkLCAxLCAxXSAgICAvLyBTZXQgbGVmdCBvdmVyLlxuXTtcblxuLyoqXG4gKiBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBub3QgYmUgY29waWVkIG9yIGluaGVyaXRlZCBmcm9tLiBUaGlzIGlzIG9ubHkgbmVlZGVkXG4gKiBmb3IgYWxsIG5vbiBibG9iIFVSTCdzIGFzIGEgYmxvYiBVUkwgZG9lcyBub3QgaW5jbHVkZSBhIGhhc2gsIG9ubHkgdGhlXG4gKiBvcmlnaW4uXG4gKlxuICogQHR5cGUge09iamVjdH1cbiAqIEBwcml2YXRlXG4gKi9cbnZhciBpZ25vcmUgPSB7IGhhc2g6IDEsIHF1ZXJ5OiAxIH07XG5cbi8qKlxuICogVGhlIGxvY2F0aW9uIG9iamVjdCBkaWZmZXJzIHdoZW4geW91ciBjb2RlIGlzIGxvYWRlZCB0aHJvdWdoIGEgbm9ybWFsIHBhZ2UsXG4gKiBXb3JrZXIgb3IgdGhyb3VnaCBhIHdvcmtlciB1c2luZyBhIGJsb2IuIEFuZCB3aXRoIHRoZSBibG9iYmxlIGJlZ2lucyB0aGVcbiAqIHRyb3VibGUgYXMgdGhlIGxvY2F0aW9uIG9iamVjdCB3aWxsIGNvbnRhaW4gdGhlIFVSTCBvZiB0aGUgYmxvYiwgbm90IHRoZVxuICogbG9jYXRpb24gb2YgdGhlIHBhZ2Ugd2hlcmUgb3VyIGNvZGUgaXMgbG9hZGVkIGluLiBUaGUgYWN0dWFsIG9yaWdpbiBpc1xuICogZW5jb2RlZCBpbiB0aGUgYHBhdGhuYW1lYCBzbyB3ZSBjYW4gdGhhbmtmdWxseSBnZW5lcmF0ZSBhIGdvb2QgXCJkZWZhdWx0XCJcbiAqIGxvY2F0aW9uIGZyb20gaXQgc28gd2UgY2FuIGdlbmVyYXRlIHByb3BlciByZWxhdGl2ZSBVUkwncyBhZ2Fpbi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IGxvYyBPcHRpb25hbCBkZWZhdWx0IGxvY2F0aW9uIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IGxvbGNhdGlvbiBvYmplY3QuXG4gKiBAcHVibGljXG4gKi9cbmZ1bmN0aW9uIGxvbGNhdGlvbihsb2MpIHtcbiAgdmFyIGdsb2JhbFZhcjtcblxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIGdsb2JhbFZhciA9IHdpbmRvdztcbiAgZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIGdsb2JhbFZhciA9IGdsb2JhbDtcbiAgZWxzZSBpZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSBnbG9iYWxWYXIgPSBzZWxmO1xuICBlbHNlIGdsb2JhbFZhciA9IHt9O1xuXG4gIHZhciBsb2NhdGlvbiA9IGdsb2JhbFZhci5sb2NhdGlvbiB8fCB7fTtcbiAgbG9jID0gbG9jIHx8IGxvY2F0aW9uO1xuXG4gIHZhciBmaW5hbGRlc3RpbmF0aW9uID0ge31cbiAgICAsIHR5cGUgPSB0eXBlb2YgbG9jXG4gICAgLCBrZXk7XG5cbiAgaWYgKCdibG9iOicgPT09IGxvYy5wcm90b2NvbCkge1xuICAgIGZpbmFsZGVzdGluYXRpb24gPSBuZXcgVXJsKHVuZXNjYXBlKGxvYy5wYXRobmFtZSksIHt9KTtcbiAgfSBlbHNlIGlmICgnc3RyaW5nJyA9PT0gdHlwZSkge1xuICAgIGZpbmFsZGVzdGluYXRpb24gPSBuZXcgVXJsKGxvYywge30pO1xuICAgIGZvciAoa2V5IGluIGlnbm9yZSkgZGVsZXRlIGZpbmFsZGVzdGluYXRpb25ba2V5XTtcbiAgfSBlbHNlIGlmICgnb2JqZWN0JyA9PT0gdHlwZSkge1xuICAgIGZvciAoa2V5IGluIGxvYykge1xuICAgICAgaWYgKGtleSBpbiBpZ25vcmUpIGNvbnRpbnVlO1xuICAgICAgZmluYWxkZXN0aW5hdGlvbltrZXldID0gbG9jW2tleV07XG4gICAgfVxuXG4gICAgaWYgKGZpbmFsZGVzdGluYXRpb24uc2xhc2hlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBmaW5hbGRlc3RpbmF0aW9uLnNsYXNoZXMgPSBzbGFzaGVzLnRlc3QobG9jLmhyZWYpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmaW5hbGRlc3RpbmF0aW9uO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIFByb3RvY29sRXh0cmFjdFxuICogQHR5cGUgT2JqZWN0XG4gKiBAcHJvcGVydHkge1N0cmluZ30gcHJvdG9jb2wgUHJvdG9jb2wgbWF0Y2hlZCBpbiB0aGUgVVJMLCBpbiBsb3dlcmNhc2UuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHNsYXNoZXMgYHRydWVgIGlmIHByb3RvY29sIGlzIGZvbGxvd2VkIGJ5IFwiLy9cIiwgZWxzZSBgZmFsc2VgLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHJlc3QgUmVzdCBvZiB0aGUgVVJMIHRoYXQgaXMgbm90IHBhcnQgb2YgdGhlIHByb3RvY29sLlxuICovXG5cbi8qKlxuICogRXh0cmFjdCBwcm90b2NvbCBpbmZvcm1hdGlvbiBmcm9tIGEgVVJMIHdpdGgvd2l0aG91dCBkb3VibGUgc2xhc2ggKFwiLy9cIikuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFkZHJlc3MgVVJMIHdlIHdhbnQgdG8gZXh0cmFjdCBmcm9tLlxuICogQHJldHVybiB7UHJvdG9jb2xFeHRyYWN0fSBFeHRyYWN0ZWQgaW5mb3JtYXRpb24uXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBleHRyYWN0UHJvdG9jb2woYWRkcmVzcykge1xuICBhZGRyZXNzID0gdHJpbUxlZnQoYWRkcmVzcyk7XG4gIHZhciBtYXRjaCA9IHByb3RvY29scmUuZXhlYyhhZGRyZXNzKTtcblxuICByZXR1cm4ge1xuICAgIHByb3RvY29sOiBtYXRjaFsxXSA/IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCkgOiAnJyxcbiAgICBzbGFzaGVzOiAhIW1hdGNoWzJdLFxuICAgIHJlc3Q6IG1hdGNoWzNdXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHJlbGF0aXZlIFVSTCBwYXRobmFtZSBhZ2FpbnN0IGEgYmFzZSBVUkwgcGF0aG5hbWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHJlbGF0aXZlIFBhdGhuYW1lIG9mIHRoZSByZWxhdGl2ZSBVUkwuXG4gKiBAcGFyYW0ge1N0cmluZ30gYmFzZSBQYXRobmFtZSBvZiB0aGUgYmFzZSBVUkwuXG4gKiBAcmV0dXJuIHtTdHJpbmd9IFJlc29sdmVkIHBhdGhuYW1lLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZShyZWxhdGl2ZSwgYmFzZSkge1xuICBpZiAocmVsYXRpdmUgPT09ICcnKSByZXR1cm4gYmFzZTtcblxuICB2YXIgcGF0aCA9IChiYXNlIHx8ICcvJykuc3BsaXQoJy8nKS5zbGljZSgwLCAtMSkuY29uY2F0KHJlbGF0aXZlLnNwbGl0KCcvJykpXG4gICAgLCBpID0gcGF0aC5sZW5ndGhcbiAgICAsIGxhc3QgPSBwYXRoW2kgLSAxXVxuICAgICwgdW5zaGlmdCA9IGZhbHNlXG4gICAgLCB1cCA9IDA7XG5cbiAgd2hpbGUgKGktLSkge1xuICAgIGlmIChwYXRoW2ldID09PSAnLicpIHtcbiAgICAgIHBhdGguc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGF0aFtpXSA9PT0gJy4uJykge1xuICAgICAgcGF0aC5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIGlmIChpID09PSAwKSB1bnNoaWZ0ID0gdHJ1ZTtcbiAgICAgIHBhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICBpZiAodW5zaGlmdCkgcGF0aC51bnNoaWZ0KCcnKTtcbiAgaWYgKGxhc3QgPT09ICcuJyB8fCBsYXN0ID09PSAnLi4nKSBwYXRoLnB1c2goJycpO1xuXG4gIHJldHVybiBwYXRoLmpvaW4oJy8nKTtcbn1cblxuLyoqXG4gKiBUaGUgYWN0dWFsIFVSTCBpbnN0YW5jZS4gSW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gb2JqZWN0IHdlJ3ZlIG9wdGVkLWluIHRvXG4gKiBjcmVhdGUgYW4gYWN0dWFsIGNvbnN0cnVjdG9yIGFzIGl0J3MgbXVjaCBtb3JlIG1lbW9yeSBlZmZpY2llbnQgYW5kXG4gKiBmYXN0ZXIgYW5kIGl0IHBsZWFzZXMgbXkgT0NELlxuICpcbiAqIEl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHdlIHNob3VsZCBub3QgdXNlIGBVUkxgIGFzIGNsYXNzIG5hbWUgdG8gcHJldmVudFxuICogY2xhc2hlcyB3aXRoIHRoZSBnbG9iYWwgVVJMIGluc3RhbmNlIHRoYXQgZ290IGludHJvZHVjZWQgaW4gYnJvd3NlcnMuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyBVUkwgd2Ugd2FudCB0byBwYXJzZS5cbiAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ30gW2xvY2F0aW9uXSBMb2NhdGlvbiBkZWZhdWx0cyBmb3IgcmVsYXRpdmUgcGF0aHMuXG4gKiBAcGFyYW0ge0Jvb2xlYW58RnVuY3Rpb259IFtwYXJzZXJdIFBhcnNlciBmb3IgdGhlIHF1ZXJ5IHN0cmluZy5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIFVybChhZGRyZXNzLCBsb2NhdGlvbiwgcGFyc2VyKSB7XG4gIGFkZHJlc3MgPSB0cmltTGVmdChhZGRyZXNzKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVXJsKSkge1xuICAgIHJldHVybiBuZXcgVXJsKGFkZHJlc3MsIGxvY2F0aW9uLCBwYXJzZXIpO1xuICB9XG5cbiAgdmFyIHJlbGF0aXZlLCBleHRyYWN0ZWQsIHBhcnNlLCBpbnN0cnVjdGlvbiwgaW5kZXgsIGtleVxuICAgICwgaW5zdHJ1Y3Rpb25zID0gcnVsZXMuc2xpY2UoKVxuICAgICwgdHlwZSA9IHR5cGVvZiBsb2NhdGlvblxuICAgICwgdXJsID0gdGhpc1xuICAgICwgaSA9IDA7XG5cbiAgLy9cbiAgLy8gVGhlIGZvbGxvd2luZyBpZiBzdGF0ZW1lbnRzIGFsbG93cyB0aGlzIG1vZHVsZSB0d28gaGF2ZSBjb21wYXRpYmlsaXR5IHdpdGhcbiAgLy8gMiBkaWZmZXJlbnQgQVBJOlxuICAvL1xuICAvLyAxLiBOb2RlLmpzJ3MgYHVybC5wYXJzZWAgYXBpIHdoaWNoIGFjY2VwdHMgYSBVUkwsIGJvb2xlYW4gYXMgYXJndW1lbnRzXG4gIC8vICAgIHdoZXJlIHRoZSBib29sZWFuIGluZGljYXRlcyB0aGF0IHRoZSBxdWVyeSBzdHJpbmcgc2hvdWxkIGFsc28gYmUgcGFyc2VkLlxuICAvL1xuICAvLyAyLiBUaGUgYFVSTGAgaW50ZXJmYWNlIG9mIHRoZSBicm93c2VyIHdoaWNoIGFjY2VwdHMgYSBVUkwsIG9iamVjdCBhc1xuICAvLyAgICBhcmd1bWVudHMuIFRoZSBzdXBwbGllZCBvYmplY3Qgd2lsbCBiZSB1c2VkIGFzIGRlZmF1bHQgdmFsdWVzIC8gZmFsbC1iYWNrXG4gIC8vICAgIGZvciByZWxhdGl2ZSBwYXRocy5cbiAgLy9cbiAgaWYgKCdvYmplY3QnICE9PSB0eXBlICYmICdzdHJpbmcnICE9PSB0eXBlKSB7XG4gICAgcGFyc2VyID0gbG9jYXRpb247XG4gICAgbG9jYXRpb24gPSBudWxsO1xuICB9XG5cbiAgaWYgKHBhcnNlciAmJiAnZnVuY3Rpb24nICE9PSB0eXBlb2YgcGFyc2VyKSBwYXJzZXIgPSBxcy5wYXJzZTtcblxuICBsb2NhdGlvbiA9IGxvbGNhdGlvbihsb2NhdGlvbik7XG5cbiAgLy9cbiAgLy8gRXh0cmFjdCBwcm90b2NvbCBpbmZvcm1hdGlvbiBiZWZvcmUgcnVubmluZyB0aGUgaW5zdHJ1Y3Rpb25zLlxuICAvL1xuICBleHRyYWN0ZWQgPSBleHRyYWN0UHJvdG9jb2woYWRkcmVzcyB8fCAnJyk7XG4gIHJlbGF0aXZlID0gIWV4dHJhY3RlZC5wcm90b2NvbCAmJiAhZXh0cmFjdGVkLnNsYXNoZXM7XG4gIHVybC5zbGFzaGVzID0gZXh0cmFjdGVkLnNsYXNoZXMgfHwgcmVsYXRpdmUgJiYgbG9jYXRpb24uc2xhc2hlcztcbiAgdXJsLnByb3RvY29sID0gZXh0cmFjdGVkLnByb3RvY29sIHx8IGxvY2F0aW9uLnByb3RvY29sIHx8ICcnO1xuICBhZGRyZXNzID0gZXh0cmFjdGVkLnJlc3Q7XG5cbiAgLy9cbiAgLy8gV2hlbiB0aGUgYXV0aG9yaXR5IGNvbXBvbmVudCBpcyBhYnNlbnQgdGhlIFVSTCBzdGFydHMgd2l0aCBhIHBhdGhcbiAgLy8gY29tcG9uZW50LlxuICAvL1xuICBpZiAoIWV4dHJhY3RlZC5zbGFzaGVzKSBpbnN0cnVjdGlvbnNbM10gPSBbLyguKikvLCAncGF0aG5hbWUnXTtcblxuICBmb3IgKDsgaSA8IGluc3RydWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zW2ldO1xuXG4gICAgaWYgKHR5cGVvZiBpbnN0cnVjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYWRkcmVzcyA9IGluc3RydWN0aW9uKGFkZHJlc3MpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcGFyc2UgPSBpbnN0cnVjdGlvblswXTtcbiAgICBrZXkgPSBpbnN0cnVjdGlvblsxXTtcblxuICAgIGlmIChwYXJzZSAhPT0gcGFyc2UpIHtcbiAgICAgIHVybFtrZXldID0gYWRkcmVzcztcbiAgICB9IGVsc2UgaWYgKCdzdHJpbmcnID09PSB0eXBlb2YgcGFyc2UpIHtcbiAgICAgIGlmICh+KGluZGV4ID0gYWRkcmVzcy5pbmRleE9mKHBhcnNlKSkpIHtcbiAgICAgICAgaWYgKCdudW1iZXInID09PSB0eXBlb2YgaW5zdHJ1Y3Rpb25bMl0pIHtcbiAgICAgICAgICB1cmxba2V5XSA9IGFkZHJlc3Muc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICAgIGFkZHJlc3MgPSBhZGRyZXNzLnNsaWNlKGluZGV4ICsgaW5zdHJ1Y3Rpb25bMl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVybFtrZXldID0gYWRkcmVzcy5zbGljZShpbmRleCk7XG4gICAgICAgICAgYWRkcmVzcyA9IGFkZHJlc3Muc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgoaW5kZXggPSBwYXJzZS5leGVjKGFkZHJlc3MpKSkge1xuICAgICAgdXJsW2tleV0gPSBpbmRleFsxXTtcbiAgICAgIGFkZHJlc3MgPSBhZGRyZXNzLnNsaWNlKDAsIGluZGV4LmluZGV4KTtcbiAgICB9XG5cbiAgICB1cmxba2V5XSA9IHVybFtrZXldIHx8IChcbiAgICAgIHJlbGF0aXZlICYmIGluc3RydWN0aW9uWzNdID8gbG9jYXRpb25ba2V5XSB8fCAnJyA6ICcnXG4gICAgKTtcblxuICAgIC8vXG4gICAgLy8gSG9zdG5hbWUsIGhvc3QgYW5kIHByb3RvY29sIHNob3VsZCBiZSBsb3dlcmNhc2VkIHNvIHRoZXkgY2FuIGJlIHVzZWQgdG9cbiAgICAvLyBjcmVhdGUgYSBwcm9wZXIgYG9yaWdpbmAuXG4gICAgLy9cbiAgICBpZiAoaW5zdHJ1Y3Rpb25bNF0pIHVybFtrZXldID0gdXJsW2tleV0udG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIC8vXG4gIC8vIEFsc28gcGFyc2UgdGhlIHN1cHBsaWVkIHF1ZXJ5IHN0cmluZyBpbiB0byBhbiBvYmplY3QuIElmIHdlJ3JlIHN1cHBsaWVkXG4gIC8vIHdpdGggYSBjdXN0b20gcGFyc2VyIGFzIGZ1bmN0aW9uIHVzZSB0aGF0IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgYnVpbGQtaW5cbiAgLy8gcGFyc2VyLlxuICAvL1xuICBpZiAocGFyc2VyKSB1cmwucXVlcnkgPSBwYXJzZXIodXJsLnF1ZXJ5KTtcblxuICAvL1xuICAvLyBJZiB0aGUgVVJMIGlzIHJlbGF0aXZlLCByZXNvbHZlIHRoZSBwYXRobmFtZSBhZ2FpbnN0IHRoZSBiYXNlIFVSTC5cbiAgLy9cbiAgaWYgKFxuICAgICAgcmVsYXRpdmVcbiAgICAmJiBsb2NhdGlvbi5zbGFzaGVzXG4gICAgJiYgdXJsLnBhdGhuYW1lLmNoYXJBdCgwKSAhPT0gJy8nXG4gICAgJiYgKHVybC5wYXRobmFtZSAhPT0gJycgfHwgbG9jYXRpb24ucGF0aG5hbWUgIT09ICcnKVxuICApIHtcbiAgICB1cmwucGF0aG5hbWUgPSByZXNvbHZlKHVybC5wYXRobmFtZSwgbG9jYXRpb24ucGF0aG5hbWUpO1xuICB9XG5cbiAgLy9cbiAgLy8gV2Ugc2hvdWxkIG5vdCBhZGQgcG9ydCBudW1iZXJzIGlmIHRoZXkgYXJlIGFscmVhZHkgdGhlIGRlZmF1bHQgcG9ydCBudW1iZXJcbiAgLy8gZm9yIGEgZ2l2ZW4gcHJvdG9jb2wuIEFzIHRoZSBob3N0IGFsc28gY29udGFpbnMgdGhlIHBvcnQgbnVtYmVyIHdlJ3JlIGdvaW5nXG4gIC8vIG92ZXJyaWRlIGl0IHdpdGggdGhlIGhvc3RuYW1lIHdoaWNoIGNvbnRhaW5zIG5vIHBvcnQgbnVtYmVyLlxuICAvL1xuICBpZiAoIXJlcXVpcmVkKHVybC5wb3J0LCB1cmwucHJvdG9jb2wpKSB7XG4gICAgdXJsLmhvc3QgPSB1cmwuaG9zdG5hbWU7XG4gICAgdXJsLnBvcnQgPSAnJztcbiAgfVxuXG4gIC8vXG4gIC8vIFBhcnNlIGRvd24gdGhlIGBhdXRoYCBmb3IgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZC5cbiAgLy9cbiAgdXJsLnVzZXJuYW1lID0gdXJsLnBhc3N3b3JkID0gJyc7XG4gIGlmICh1cmwuYXV0aCkge1xuICAgIGluc3RydWN0aW9uID0gdXJsLmF1dGguc3BsaXQoJzonKTtcbiAgICB1cmwudXNlcm5hbWUgPSBpbnN0cnVjdGlvblswXSB8fCAnJztcbiAgICB1cmwucGFzc3dvcmQgPSBpbnN0cnVjdGlvblsxXSB8fCAnJztcbiAgfVxuXG4gIHVybC5vcmlnaW4gPSB1cmwucHJvdG9jb2wgJiYgdXJsLmhvc3QgJiYgdXJsLnByb3RvY29sICE9PSAnZmlsZTonXG4gICAgPyB1cmwucHJvdG9jb2wgKycvLycrIHVybC5ob3N0XG4gICAgOiAnbnVsbCc7XG5cbiAgLy9cbiAgLy8gVGhlIGhyZWYgaXMganVzdCB0aGUgY29tcGlsZWQgcmVzdWx0LlxuICAvL1xuICB1cmwuaHJlZiA9IHVybC50b1N0cmluZygpO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgY29udmVuaWVuY2UgbWV0aG9kIGZvciBjaGFuZ2luZyBwcm9wZXJ0aWVzIGluIHRoZSBVUkwgaW5zdGFuY2UgdG9cbiAqIGluc3VyZSB0aGF0IHRoZXkgYWxsIHByb3BhZ2F0ZSBjb3JyZWN0bHkuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHBhcnQgICAgICAgICAgUHJvcGVydHkgd2UgbmVlZCB0byBhZGp1c3QuXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAgICAgICAgICBUaGUgbmV3bHkgYXNzaWduZWQgdmFsdWUuXG4gKiBAcGFyYW0ge0Jvb2xlYW58RnVuY3Rpb259IGZuICBXaGVuIHNldHRpbmcgdGhlIHF1ZXJ5LCBpdCB3aWxsIGJlIHRoZSBmdW5jdGlvblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCB0byBwYXJzZSB0aGUgcXVlcnkuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHNldHRpbmcgdGhlIHByb3RvY29sLCBkb3VibGUgc2xhc2ggd2lsbCBiZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCBmcm9tIHRoZSBmaW5hbCB1cmwgaWYgaXQgaXMgdHJ1ZS5cbiAqIEByZXR1cm5zIHtVUkx9IFVSTCBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gKiBAcHVibGljXG4gKi9cbmZ1bmN0aW9uIHNldChwYXJ0LCB2YWx1ZSwgZm4pIHtcbiAgdmFyIHVybCA9IHRoaXM7XG5cbiAgc3dpdGNoIChwYXJ0KSB7XG4gICAgY2FzZSAncXVlcnknOlxuICAgICAgaWYgKCdzdHJpbmcnID09PSB0eXBlb2YgdmFsdWUgJiYgdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIHZhbHVlID0gKGZuIHx8IHFzLnBhcnNlKSh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHVybFtwYXJ0XSA9IHZhbHVlO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdwb3J0JzpcbiAgICAgIHVybFtwYXJ0XSA9IHZhbHVlO1xuXG4gICAgICBpZiAoIXJlcXVpcmVkKHZhbHVlLCB1cmwucHJvdG9jb2wpKSB7XG4gICAgICAgIHVybC5ob3N0ID0gdXJsLmhvc3RuYW1lO1xuICAgICAgICB1cmxbcGFydF0gPSAnJztcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgICAgdXJsLmhvc3QgPSB1cmwuaG9zdG5hbWUgKyc6JysgdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnaG9zdG5hbWUnOlxuICAgICAgdXJsW3BhcnRdID0gdmFsdWU7XG5cbiAgICAgIGlmICh1cmwucG9ydCkgdmFsdWUgKz0gJzonKyB1cmwucG9ydDtcbiAgICAgIHVybC5ob3N0ID0gdmFsdWU7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2hvc3QnOlxuICAgICAgdXJsW3BhcnRdID0gdmFsdWU7XG5cbiAgICAgIGlmICgvOlxcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgICAgIHVybC5wb3J0ID0gdmFsdWUucG9wKCk7XG4gICAgICAgIHVybC5ob3N0bmFtZSA9IHZhbHVlLmpvaW4oJzonKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybC5ob3N0bmFtZSA9IHZhbHVlO1xuICAgICAgICB1cmwucG9ydCA9ICcnO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3Byb3RvY29sJzpcbiAgICAgIHVybC5wcm90b2NvbCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICB1cmwuc2xhc2hlcyA9ICFmbjtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAncGF0aG5hbWUnOlxuICAgIGNhc2UgJ2hhc2gnOlxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHZhciBjaGFyID0gcGFydCA9PT0gJ3BhdGhuYW1lJyA/ICcvJyA6ICcjJztcbiAgICAgICAgdXJsW3BhcnRdID0gdmFsdWUuY2hhckF0KDApICE9PSBjaGFyID8gY2hhciArIHZhbHVlIDogdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmxbcGFydF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHVybFtwYXJ0XSA9IHZhbHVlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpbnMgPSBydWxlc1tpXTtcblxuICAgIGlmIChpbnNbNF0pIHVybFtpbnNbMV1dID0gdXJsW2luc1sxXV0udG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIHVybC5vcmlnaW4gPSB1cmwucHJvdG9jb2wgJiYgdXJsLmhvc3QgJiYgdXJsLnByb3RvY29sICE9PSAnZmlsZTonXG4gICAgPyB1cmwucHJvdG9jb2wgKycvLycrIHVybC5ob3N0XG4gICAgOiAnbnVsbCc7XG5cbiAgdXJsLmhyZWYgPSB1cmwudG9TdHJpbmcoKTtcblxuICByZXR1cm4gdXJsO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgcHJvcGVydGllcyBiYWNrIGluIHRvIGEgdmFsaWQgYW5kIGZ1bGwgVVJMIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmdpZnkgT3B0aW9uYWwgcXVlcnkgc3RyaW5naWZ5IGZ1bmN0aW9uLlxuICogQHJldHVybnMge1N0cmluZ30gQ29tcGlsZWQgdmVyc2lvbiBvZiB0aGUgVVJMLlxuICogQHB1YmxpY1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyhzdHJpbmdpZnkpIHtcbiAgaWYgKCFzdHJpbmdpZnkgfHwgJ2Z1bmN0aW9uJyAhPT0gdHlwZW9mIHN0cmluZ2lmeSkgc3RyaW5naWZ5ID0gcXMuc3RyaW5naWZ5O1xuXG4gIHZhciBxdWVyeVxuICAgICwgdXJsID0gdGhpc1xuICAgICwgcHJvdG9jb2wgPSB1cmwucHJvdG9jb2w7XG5cbiAgaWYgKHByb3RvY29sICYmIHByb3RvY29sLmNoYXJBdChwcm90b2NvbC5sZW5ndGggLSAxKSAhPT0gJzonKSBwcm90b2NvbCArPSAnOic7XG5cbiAgdmFyIHJlc3VsdCA9IHByb3RvY29sICsgKHVybC5zbGFzaGVzID8gJy8vJyA6ICcnKTtcblxuICBpZiAodXJsLnVzZXJuYW1lKSB7XG4gICAgcmVzdWx0ICs9IHVybC51c2VybmFtZTtcbiAgICBpZiAodXJsLnBhc3N3b3JkKSByZXN1bHQgKz0gJzonKyB1cmwucGFzc3dvcmQ7XG4gICAgcmVzdWx0ICs9ICdAJztcbiAgfVxuXG4gIHJlc3VsdCArPSB1cmwuaG9zdCArIHVybC5wYXRobmFtZTtcblxuICBxdWVyeSA9ICdvYmplY3QnID09PSB0eXBlb2YgdXJsLnF1ZXJ5ID8gc3RyaW5naWZ5KHVybC5xdWVyeSkgOiB1cmwucXVlcnk7XG4gIGlmIChxdWVyeSkgcmVzdWx0ICs9ICc/JyAhPT0gcXVlcnkuY2hhckF0KDApID8gJz8nKyBxdWVyeSA6IHF1ZXJ5O1xuXG4gIGlmICh1cmwuaGFzaCkgcmVzdWx0ICs9IHVybC5oYXNoO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblVybC5wcm90b3R5cGUgPSB7IHNldDogc2V0LCB0b1N0cmluZzogdG9TdHJpbmcgfTtcblxuLy9cbi8vIEV4cG9zZSB0aGUgVVJMIHBhcnNlciBhbmQgc29tZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdGhhdCBtaWdodCBiZSB1c2VmdWwgZm9yXG4vLyBvdGhlcnMgb3IgdGVzdGluZy5cbi8vXG5VcmwuZXh0cmFjdFByb3RvY29sID0gZXh0cmFjdFByb3RvY29sO1xuVXJsLmxvY2F0aW9uID0gbG9sY2F0aW9uO1xuVXJsLnRyaW1MZWZ0ID0gdHJpbUxlZnQ7XG5VcmwucXMgPSBxcztcblxubW9kdWxlLmV4cG9ydHMgPSBVcmw7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///50\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3JlcXVpcmVzLXBvcnQvaW5kZXguanM/NDQwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiI1MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDaGVjayBpZiB3ZSdyZSByZXF1aXJlZCB0byBhZGQgYSBwb3J0IG51bWJlci5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZGVmYXVsdC1wb3J0XG4gKiBAcGFyYW0ge051bWJlcnxTdHJpbmd9IHBvcnQgUG9ydCBudW1iZXIgd2UgbmVlZCB0byBjaGVja1xuICogQHBhcmFtIHtTdHJpbmd9IHByb3RvY29sIFByb3RvY29sIHdlIG5lZWQgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBJcyBpdCBhIGRlZmF1bHQgcG9ydCBmb3IgdGhlIGdpdmVuIHByb3RvY29sXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXF1aXJlZChwb3J0LCBwcm90b2NvbCkge1xuICBwcm90b2NvbCA9IHByb3RvY29sLnNwbGl0KCc6JylbMF07XG4gIHBvcnQgPSArcG9ydDtcblxuICBpZiAoIXBvcnQpIHJldHVybiBmYWxzZTtcblxuICBzd2l0Y2ggKHByb3RvY29sKSB7XG4gICAgY2FzZSAnaHR0cCc6XG4gICAgY2FzZSAnd3MnOlxuICAgIHJldHVybiBwb3J0ICE9PSA4MDtcblxuICAgIGNhc2UgJ2h0dHBzJzpcbiAgICBjYXNlICd3c3MnOlxuICAgIHJldHVybiBwb3J0ICE9PSA0NDM7XG5cbiAgICBjYXNlICdmdHAnOlxuICAgIHJldHVybiBwb3J0ICE9PSAyMTtcblxuICAgIGNhc2UgJ2dvcGhlcic6XG4gICAgcmV0dXJuIHBvcnQgIT09IDcwO1xuXG4gICAgY2FzZSAnZmlsZSc6XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHBvcnQgIT09IDA7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///51\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encodeURIComponent(key);\n      value = encodeURIComponent(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F1ZXJ5c3RyaW5naWZ5L2luZGV4LmpzPzljNTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxZQUFZO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFlBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5XG4gICwgdW5kZWY7XG5cbi8qKlxuICogRGVjb2RlIGEgVVJJIGVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgVVJJIGVuY29kZWQgc3RyaW5nLlxuICogQHJldHVybnMge1N0cmluZ3xOdWxsfSBUaGUgZGVjb2RlZCBzdHJpbmcuXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZGVjb2RlKGlucHV0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChpbnB1dC5yZXBsYWNlKC9cXCsvZywgJyAnKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGVuY29kZSBhIGdpdmVuIGlucHV0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgc3RyaW5nIHRoYXQgbmVlZHMgdG8gYmUgZW5jb2RlZC5cbiAqIEByZXR1cm5zIHtTdHJpbmd8TnVsbH0gVGhlIGVuY29kZWQgc3RyaW5nLlxuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGVuY29kZShpbnB1dCkge1xuICB0cnkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoaW5wdXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBTaW1wbGUgcXVlcnkgc3RyaW5nIHBhcnNlci5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcXVlcnkgVGhlIHF1ZXJ5IHN0cmluZyB0aGF0IG5lZWRzIHRvIGJlIHBhcnNlZC5cbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5mdW5jdGlvbiBxdWVyeXN0cmluZyhxdWVyeSkge1xuICB2YXIgcGFyc2VyID0gLyhbXj0/Jl0rKT0/KFteJl0qKS9nXG4gICAgLCByZXN1bHQgPSB7fVxuICAgICwgcGFydDtcblxuICB3aGlsZSAocGFydCA9IHBhcnNlci5leGVjKHF1ZXJ5KSkge1xuICAgIHZhciBrZXkgPSBkZWNvZGUocGFydFsxXSlcbiAgICAgICwgdmFsdWUgPSBkZWNvZGUocGFydFsyXSk7XG5cbiAgICAvL1xuICAgIC8vIFByZXZlbnQgb3ZlcnJpZGluZyBvZiBleGlzdGluZyBwcm9wZXJ0aWVzLiBUaGlzIGVuc3VyZXMgdGhhdCBidWlsZC1pblxuICAgIC8vIG1ldGhvZHMgbGlrZSBgdG9TdHJpbmdgIG9yIF9fcHJvdG9fXyBhcmUgbm90IG92ZXJyaWRlbiBieSBtYWxpY2lvdXNcbiAgICAvLyBxdWVyeXN0cmluZ3MuXG4gICAgLy9cbiAgICAvLyBJbiB0aGUgY2FzZSBpZiBmYWlsZWQgZGVjb2RpbmcsIHdlIHdhbnQgdG8gb21pdCB0aGUga2V5L3ZhbHVlIHBhaXJzXG4gICAgLy8gZnJvbSB0aGUgcmVzdWx0LlxuICAgIC8vXG4gICAgaWYgKGtleSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCBrZXkgaW4gcmVzdWx0KSBjb250aW51ZTtcbiAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYSBxdWVyeSBzdHJpbmcgdG8gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogT2JqZWN0IHRoYXQgc2hvdWxkIGJlIHRyYW5zZm9ybWVkLlxuICogQHBhcmFtIHtTdHJpbmd9IHByZWZpeCBPcHRpb25hbCBwcmVmaXguXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuZnVuY3Rpb24gcXVlcnlzdHJpbmdpZnkob2JqLCBwcmVmaXgpIHtcbiAgcHJlZml4ID0gcHJlZml4IHx8ICcnO1xuXG4gIHZhciBwYWlycyA9IFtdXG4gICAgLCB2YWx1ZVxuICAgICwga2V5O1xuXG4gIC8vXG4gIC8vIE9wdGlvbmFsbHkgcHJlZml4IHdpdGggYSAnPycgaWYgbmVlZGVkXG4gIC8vXG4gIGlmICgnc3RyaW5nJyAhPT0gdHlwZW9mIHByZWZpeCkgcHJlZml4ID0gJz8nO1xuXG4gIGZvciAoa2V5IGluIG9iaikge1xuICAgIGlmIChoYXMuY2FsbChvYmosIGtleSkpIHtcbiAgICAgIHZhbHVlID0gb2JqW2tleV07XG5cbiAgICAgIC8vXG4gICAgICAvLyBFZGdlIGNhc2VzIHdoZXJlIHdlIGFjdHVhbGx5IHdhbnQgdG8gZW5jb2RlIHRoZSB2YWx1ZSB0byBhbiBlbXB0eVxuICAgICAgLy8gc3RyaW5nIGluc3RlYWQgb2YgdGhlIHN0cmluZ2lmaWVkIHZhbHVlLlxuICAgICAgLy9cbiAgICAgIGlmICghdmFsdWUgJiYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZiB8fCBpc05hTih2YWx1ZSkpKSB7XG4gICAgICAgIHZhbHVlID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGtleSA9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpO1xuICAgICAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuXG4gICAgICAvL1xuICAgICAgLy8gSWYgd2UgZmFpbGVkIHRvIGVuY29kZSB0aGUgc3RyaW5ncywgd2Ugc2hvdWxkIGJhaWwgb3V0IGFzIHdlIGRvbid0XG4gICAgICAvLyB3YW50IHRvIGFkZCBpbnZhbGlkIHN0cmluZ3MgdG8gdGhlIHF1ZXJ5LlxuICAgICAgLy9cbiAgICAgIGlmIChrZXkgPT09IG51bGwgfHwgdmFsdWUgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgcGFpcnMucHVzaChrZXkgKyc9JysgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYWlycy5sZW5ndGggPyBwcmVmaXggKyBwYWlycy5qb2luKCcmJykgOiAnJztcbn1cblxuLy9cbi8vIEV4cG9zZSB0aGUgbW9kdWxlLlxuLy9cbmV4cG9ydHMuc3RyaW5naWZ5ID0gcXVlcnlzdHJpbmdpZnk7XG5leHBvcnRzLnBhcnNlID0gcXVlcnlzdHJpbmc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){"use strict";eval('\nObject.defineProperty(exports, "__esModule", { value: true });\nconst QtumRPC_1 = __webpack_require__(11);\nconst ContractsRepo_1 = __webpack_require__(54);\n/**\n * The `Qtum` class is an instance of the `qtumjs` API.\n *\n * @param providerURL URL of the qtumd RPC service.\n * @param repoData Information about Solidity contracts.\n */\nclass Qtum extends QtumRPC_1.QtumRPC {\n    constructor(providerURL, repoData) {\n        super(providerURL);\n        this.repo = new ContractsRepo_1.ContractsRepo(this, Object.assign({ \n            // massage the repoData by providing empty default properties\n            contracts: {}, libraries: {}, related: {} }, repoData));\n    }\n    /**\n     * A factory method to instantiate a `Contract` instance using the ABI\n     * definitions and address found in `repoData`. The Contract instance is\n     * configured with an event log decoder that can decode all known event types\n     * found in `repoData`.\n     *\n     * @param name The name of a deployed contract\n     */\n    contract(name) {\n        return this.repo.contract(name);\n    }\n}\nexports.Qtum = Qtum;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvUXR1bS5qcz9lMDAxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsa0JBQWtCLG1CQUFPLENBQUMsRUFBVztBQUNyQyx3QkFBd0IsbUJBQU8sQ0FBQyxFQUFpQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyRTtBQUNBO0FBQ0EseUJBQXlCLGVBQWUsYUFBYSxFQUFFO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IFF0dW1SUENfMSA9IHJlcXVpcmUoXCIuL1F0dW1SUENcIik7XG5jb25zdCBDb250cmFjdHNSZXBvXzEgPSByZXF1aXJlKFwiLi9Db250cmFjdHNSZXBvXCIpO1xuLyoqXG4gKiBUaGUgYFF0dW1gIGNsYXNzIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBgcXR1bWpzYCBBUEkuXG4gKlxuICogQHBhcmFtIHByb3ZpZGVyVVJMIFVSTCBvZiB0aGUgcXR1bWQgUlBDIHNlcnZpY2UuXG4gKiBAcGFyYW0gcmVwb0RhdGEgSW5mb3JtYXRpb24gYWJvdXQgU29saWRpdHkgY29udHJhY3RzLlxuICovXG5jbGFzcyBRdHVtIGV4dGVuZHMgUXR1bVJQQ18xLlF0dW1SUEMge1xuICAgIGNvbnN0cnVjdG9yKHByb3ZpZGVyVVJMLCByZXBvRGF0YSkge1xuICAgICAgICBzdXBlcihwcm92aWRlclVSTCk7XG4gICAgICAgIHRoaXMucmVwbyA9IG5ldyBDb250cmFjdHNSZXBvXzEuQ29udHJhY3RzUmVwbyh0aGlzLCBPYmplY3QuYXNzaWduKHsgXG4gICAgICAgICAgICAvLyBtYXNzYWdlIHRoZSByZXBvRGF0YSBieSBwcm92aWRpbmcgZW1wdHkgZGVmYXVsdCBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBjb250cmFjdHM6IHt9LCBsaWJyYXJpZXM6IHt9LCByZWxhdGVkOiB7fSB9LCByZXBvRGF0YSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIGZhY3RvcnkgbWV0aG9kIHRvIGluc3RhbnRpYXRlIGEgYENvbnRyYWN0YCBpbnN0YW5jZSB1c2luZyB0aGUgQUJJXG4gICAgICogZGVmaW5pdGlvbnMgYW5kIGFkZHJlc3MgZm91bmQgaW4gYHJlcG9EYXRhYC4gVGhlIENvbnRyYWN0IGluc3RhbmNlIGlzXG4gICAgICogY29uZmlndXJlZCB3aXRoIGFuIGV2ZW50IGxvZyBkZWNvZGVyIHRoYXQgY2FuIGRlY29kZSBhbGwga25vd24gZXZlbnQgdHlwZXNcbiAgICAgKiBmb3VuZCBpbiBgcmVwb0RhdGFgLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgYSBkZXBsb3llZCBjb250cmFjdFxuICAgICAqL1xuICAgIGNvbnRyYWN0KG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVwby5jb250cmFjdChuYW1lKTtcbiAgICB9XG59XG5leHBvcnRzLlF0dW0gPSBRdHVtO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///53\n')},function(module,exports,__webpack_require__){"use strict";eval('\nObject.defineProperty(exports, "__esModule", { value: true });\nconst Contract_1 = __webpack_require__(9);\nconst abi_1 = __webpack_require__(3);\nconst EventListener_1 = __webpack_require__(55);\n/**\n * ContractsRepo contains the ABI definitions of all known contracts\n */\nclass ContractsRepo {\n    constructor(rpc, repoData) {\n        this.rpc = rpc;\n        this.repoData = repoData;\n        const eventABIs = this.allEventABIs();\n        this.logDecoder = new abi_1.ContractLogDecoder(eventABIs);\n    }\n    contract(name) {\n        const info = this.repoData.contracts[name];\n        if (!info) {\n            throw new Error(`cannot find contract: ${name}`);\n        }\n        // Instantiate the contract with a log decoder that can handle all known events\n        return new Contract_1.Contract(this.rpc, info, { logDecoder: this.logDecoder });\n    }\n    eventListener() {\n        return new EventListener_1.EventListener(this.rpc, this.logDecoder);\n    }\n    /**\n     *  Combine all known event ABIs into one single array\n     */\n    allEventABIs() {\n        const allEventABIs = [];\n        const { contracts, libraries, related, } = this.repoData;\n        if (contracts) {\n            mergeDefs(contracts);\n        }\n        if (libraries) {\n            mergeDefs(libraries);\n        }\n        if (related) {\n            mergeDefs(related);\n        }\n        return allEventABIs;\n        // inner utility function for allEventABIs\n        function mergeDefs(abiDefs) {\n            for (const key of Object.keys(abiDefs)) {\n                const defs = abiDefs[key].abi;\n                for (const def of defs) {\n                    if (def.type === "event") {\n                        allEventABIs.push(def);\n                    }\n                }\n            }\n        }\n    }\n}\nexports.ContractsRepo = ContractsRepo;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvQ29udHJhY3RzUmVwby5qcz9kOTRhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsbUJBQW1CLG1CQUFPLENBQUMsQ0FBWTtBQUN2QyxjQUFjLG1CQUFPLENBQUMsQ0FBTztBQUM3Qix3QkFBd0IsbUJBQU8sQ0FBQyxFQUFpQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxLQUFLO0FBQzFEO0FBQ0E7QUFDQSx3REFBd0QsOEJBQThCO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUNBQWlDO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgQ29udHJhY3RfMSA9IHJlcXVpcmUoXCIuL0NvbnRyYWN0XCIpO1xuY29uc3QgYWJpXzEgPSByZXF1aXJlKFwiLi9hYmlcIik7XG5jb25zdCBFdmVudExpc3RlbmVyXzEgPSByZXF1aXJlKFwiLi9FdmVudExpc3RlbmVyXCIpO1xuLyoqXG4gKiBDb250cmFjdHNSZXBvIGNvbnRhaW5zIHRoZSBBQkkgZGVmaW5pdGlvbnMgb2YgYWxsIGtub3duIGNvbnRyYWN0c1xuICovXG5jbGFzcyBDb250cmFjdHNSZXBvIHtcbiAgICBjb25zdHJ1Y3RvcihycGMsIHJlcG9EYXRhKSB7XG4gICAgICAgIHRoaXMucnBjID0gcnBjO1xuICAgICAgICB0aGlzLnJlcG9EYXRhID0gcmVwb0RhdGE7XG4gICAgICAgIGNvbnN0IGV2ZW50QUJJcyA9IHRoaXMuYWxsRXZlbnRBQklzKCk7XG4gICAgICAgIHRoaXMubG9nRGVjb2RlciA9IG5ldyBhYmlfMS5Db250cmFjdExvZ0RlY29kZXIoZXZlbnRBQklzKTtcbiAgICB9XG4gICAgY29udHJhY3QobmFtZSkge1xuICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5yZXBvRGF0YS5jb250cmFjdHNbbmFtZV07XG4gICAgICAgIGlmICghaW5mbykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgZmluZCBjb250cmFjdDogJHtuYW1lfWApO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluc3RhbnRpYXRlIHRoZSBjb250cmFjdCB3aXRoIGEgbG9nIGRlY29kZXIgdGhhdCBjYW4gaGFuZGxlIGFsbCBrbm93biBldmVudHNcbiAgICAgICAgcmV0dXJuIG5ldyBDb250cmFjdF8xLkNvbnRyYWN0KHRoaXMucnBjLCBpbmZvLCB7IGxvZ0RlY29kZXI6IHRoaXMubG9nRGVjb2RlciB9KTtcbiAgICB9XG4gICAgZXZlbnRMaXN0ZW5lcigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFdmVudExpc3RlbmVyXzEuRXZlbnRMaXN0ZW5lcih0aGlzLnJwYywgdGhpcy5sb2dEZWNvZGVyKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogIENvbWJpbmUgYWxsIGtub3duIGV2ZW50IEFCSXMgaW50byBvbmUgc2luZ2xlIGFycmF5XG4gICAgICovXG4gICAgYWxsRXZlbnRBQklzKCkge1xuICAgICAgICBjb25zdCBhbGxFdmVudEFCSXMgPSBbXTtcbiAgICAgICAgY29uc3QgeyBjb250cmFjdHMsIGxpYnJhcmllcywgcmVsYXRlZCwgfSA9IHRoaXMucmVwb0RhdGE7XG4gICAgICAgIGlmIChjb250cmFjdHMpIHtcbiAgICAgICAgICAgIG1lcmdlRGVmcyhjb250cmFjdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaWJyYXJpZXMpIHtcbiAgICAgICAgICAgIG1lcmdlRGVmcyhsaWJyYXJpZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWxhdGVkKSB7XG4gICAgICAgICAgICBtZXJnZURlZnMocmVsYXRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFsbEV2ZW50QUJJcztcbiAgICAgICAgLy8gaW5uZXIgdXRpbGl0eSBmdW5jdGlvbiBmb3IgYWxsRXZlbnRBQklzXG4gICAgICAgIGZ1bmN0aW9uIG1lcmdlRGVmcyhhYmlEZWZzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhYmlEZWZzKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZnMgPSBhYmlEZWZzW2tleV0uYWJpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGVmIG9mIGRlZnMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlZi50eXBlID09PSBcImV2ZW50XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEV2ZW50QUJJcy5wdXNoKGRlZik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkNvbnRyYWN0c1JlcG8gPSBDb250cmFjdHNSZXBvO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///54\n')},function(module,exports,__webpack_require__){"use strict";eval('\nObject.defineProperty(exports, "__esModule", { value: true });\nconst eventemitter3_1 = __webpack_require__(4);\nclass EventListener {\n    // TODO filter out unparseable logs\n    constructor(rpc, logDecoder) {\n        this.rpc = rpc;\n        this.logDecoder = logDecoder;\n    }\n    /**\n     * Get contract event logs. Long-poll wait if no log is found. Returns a cancel\n     * function that stops the events subscription.\n     *\n     * @param req (optional) IRPCWaitForLogsRequest\n     */\n    waitLogs(req = {}) {\n        const filter = req.filter || {};\n        const logPromise = this.rpc.waitforlogs(Object.assign({}, req, { filter }));\n        return logPromise.then((result) => {\n            const entries = result.entries.map((entry) => {\n                const parsedLog = this.logDecoder.decode(entry);\n                return Object.assign({}, entry, { event: parsedLog });\n            });\n            return Object.assign({}, result, { entries });\n        }); // bypass typechecker problem\n    }\n    /**\n     * Subscribe to contract\'s events, using callback interface.\n     */\n    onLog(fn, opts = {}) {\n        let nextblock = opts.fromBlock || "latest";\n        let promiseCancel;\n        let canceled = false;\n        const asyncLoop = async () => {\n            while (true) {\n                if (canceled) {\n                    break;\n                }\n                const logPromise = this.waitLogs(Object.assign({}, opts, { fromBlock: nextblock }));\n                promiseCancel = logPromise.cancel;\n                const result = await logPromise;\n                for (const entry of result.entries) {\n                    fn(entry);\n                }\n                nextblock = result.nextblock;\n            }\n        };\n        asyncLoop();\n        // return a cancel function\n        return () => {\n            canceled = true;\n            if (promiseCancel) {\n                promiseCancel();\n            }\n        };\n    }\n    /**\n     * Subscribe to contract\'s events, use EventsEmitter interface.\n     */\n    emitter(opts = {}) {\n        const emitter = new eventemitter3_1.EventEmitter();\n        const cancel = this.onLog((entry) => {\n            const key = (entry.event && entry.event.type) || "?";\n            emitter.emit(key, entry);\n        }, opts);\n        return Object.assign(emitter, {\n            cancel,\n        });\n    }\n}\nexports.EventListener = EventListener;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vbm9kZV9tb2R1bGVzL3F0dW1qcy9saWIvRXZlbnRMaXN0ZW5lci5qcz83ZDNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsd0JBQXdCLG1CQUFPLENBQUMsQ0FBZTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxnRUFBZ0UsUUFBUSxTQUFTO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxVQUFVLG1CQUFtQjtBQUNwRSxhQUFhO0FBQ2IsbUNBQW1DLFdBQVcsVUFBVTtBQUN4RCxTQUFTLEVBQUU7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFLFNBQVMsdUJBQXVCO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EiLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IGV2ZW50ZW1pdHRlcjNfMSA9IHJlcXVpcmUoXCJldmVudGVtaXR0ZXIzXCIpO1xuY2xhc3MgRXZlbnRMaXN0ZW5lciB7XG4gICAgLy8gVE9ETyBmaWx0ZXIgb3V0IHVucGFyc2VhYmxlIGxvZ3NcbiAgICBjb25zdHJ1Y3RvcihycGMsIGxvZ0RlY29kZXIpIHtcbiAgICAgICAgdGhpcy5ycGMgPSBycGM7XG4gICAgICAgIHRoaXMubG9nRGVjb2RlciA9IGxvZ0RlY29kZXI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBjb250cmFjdCBldmVudCBsb2dzLiBMb25nLXBvbGwgd2FpdCBpZiBubyBsb2cgaXMgZm91bmQuIFJldHVybnMgYSBjYW5jZWxcbiAgICAgKiBmdW5jdGlvbiB0aGF0IHN0b3BzIHRoZSBldmVudHMgc3Vic2NyaXB0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcSAob3B0aW9uYWwpIElSUENXYWl0Rm9yTG9nc1JlcXVlc3RcbiAgICAgKi9cbiAgICB3YWl0TG9ncyhyZXEgPSB7fSkge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSByZXEuZmlsdGVyIHx8IHt9O1xuICAgICAgICBjb25zdCBsb2dQcm9taXNlID0gdGhpcy5ycGMud2FpdGZvcmxvZ3MoT2JqZWN0LmFzc2lnbih7fSwgcmVxLCB7IGZpbHRlciB9KSk7XG4gICAgICAgIHJldHVybiBsb2dQcm9taXNlLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IHJlc3VsdC5lbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRMb2cgPSB0aGlzLmxvZ0RlY29kZXIuZGVjb2RlKGVudHJ5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZW50cnksIHsgZXZlbnQ6IHBhcnNlZExvZyB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlc3VsdCwgeyBlbnRyaWVzIH0pO1xuICAgICAgICB9KTsgLy8gYnlwYXNzIHR5cGVjaGVja2VyIHByb2JsZW1cbiAgICB9XG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlIHRvIGNvbnRyYWN0J3MgZXZlbnRzLCB1c2luZyBjYWxsYmFjayBpbnRlcmZhY2UuXG4gICAgICovXG4gICAgb25Mb2coZm4sIG9wdHMgPSB7fSkge1xuICAgICAgICBsZXQgbmV4dGJsb2NrID0gb3B0cy5mcm9tQmxvY2sgfHwgXCJsYXRlc3RcIjtcbiAgICAgICAgbGV0IHByb21pc2VDYW5jZWw7XG4gICAgICAgIGxldCBjYW5jZWxlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBhc3luY0xvb3AgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjYW5jZWxlZCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbG9nUHJvbWlzZSA9IHRoaXMud2FpdExvZ3MoT2JqZWN0LmFzc2lnbih7fSwgb3B0cywgeyBmcm9tQmxvY2s6IG5leHRibG9jayB9KSk7XG4gICAgICAgICAgICAgICAgcHJvbWlzZUNhbmNlbCA9IGxvZ1Byb21pc2UuY2FuY2VsO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGxvZ1Byb21pc2U7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiByZXN1bHQuZW50cmllcykge1xuICAgICAgICAgICAgICAgICAgICBmbihlbnRyeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5leHRibG9jayA9IHJlc3VsdC5uZXh0YmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGFzeW5jTG9vcCgpO1xuICAgICAgICAvLyByZXR1cm4gYSBjYW5jZWwgZnVuY3Rpb25cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChwcm9taXNlQ2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZUNhbmNlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gY29udHJhY3QncyBldmVudHMsIHVzZSBFdmVudHNFbWl0dGVyIGludGVyZmFjZS5cbiAgICAgKi9cbiAgICBlbWl0dGVyKG9wdHMgPSB7fSkge1xuICAgICAgICBjb25zdCBlbWl0dGVyID0gbmV3IGV2ZW50ZW1pdHRlcjNfMS5FdmVudEVtaXR0ZXIoKTtcbiAgICAgICAgY29uc3QgY2FuY2VsID0gdGhpcy5vbkxvZygoZW50cnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IChlbnRyeS5ldmVudCAmJiBlbnRyeS5ldmVudC50eXBlKSB8fCBcIj9cIjtcbiAgICAgICAgICAgIGVtaXR0ZXIuZW1pdChrZXksIGVudHJ5KTtcbiAgICAgICAgfSwgb3B0cyk7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGVtaXR0ZXIsIHtcbiAgICAgICAgICAgIGNhbmNlbCxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0cy5FdmVudExpc3RlbmVyID0gRXZlbnRMaXN0ZW5lcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///55\n')},function(module){eval('module.exports = JSON.parse("{\\"1\\":\\"mainnet\\",\\"3\\":\\"ropsten\\",\\"61\\":\\"classic\\",\\"63\\":\\"mordor\\",\\"classic\\":\\"classic\\",\\"main\\":\\"mainnet\\",\\"mainnet\\":\\"mainnet\\",\\"mordor\\":\\"mordor\\",\\"ropsten\\":\\"ropsten\\",\\"qtumTestnet\\":\\"qtumTestnet\\"}");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI1Ni5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///56\n')},function(module){eval('module.exports = JSON.parse("{\\"classic\\":{\\"birthblock\\":8285377,\\"contracts\\":{\\"Auctions\\":{\\"address\\":\\"0xF5269Caa54F1f776dD996Db35992D599e14d8a3B\\"},\\"AutonomousConverter\\":{\\"address\\":\\"0x567EEBB6397cC8345e5A7eAE288994bf45FDF85B\\"},\\"METToken\\":{\\"address\\":\\"0xA4d3A7b00056Cc5D8206b3b2983bfe0C107D90da\\"},\\"Proposals\\":{\\"address\\":\\"0x62c42c2Ee48E6034B0556ebCCF58A2E0eEB8E538\\"},\\"TokenPorter\\":{\\"address\\":\\"0x17B418cBE5c4F6DD75BdCA7F8BFBB1424062D9ef\\"},\\"Validator\\":{\\"address\\":\\"0x7f37407F868E6A88f9838B57B00FEB04f23E7F9F\\"}},\\"version\\":\\"3a9a045\\"},\\"mainnet\\":{\\"birthblock\\":5659894,\\"contracts\\":{\\"Auctions\\":{\\"address\\":\\"0x9d9BcDd249E439AAaB545F59a33812E39A8e3072\\"},\\"AutonomousConverter\\":{\\"address\\":\\"0x686e5ac50D9236A9b7406791256e47feDDB26AbA\\"},\\"METToken\\":{\\"address\\":\\"0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e\\"},\\"Proposals\\":{\\"address\\":\\"0x760a0A933f9597fbC3B4DB86Ef92D61c956269E4\\",\\"version\\":\\"821aeaf\\"},\\"TokenPorter\\":{\\"address\\":\\"0xc0CEF6cF59e56A9427CEF967f8dFb7BDe06173B3\\",\\"version\\":\\"821aeaf\\"},\\"Validator\\":{\\"address\\":\\"0xE804EBEfF801a63De6e746c24cEB41A9864Eb1C1\\",\\"version\\":\\"821aeaf\\"}},\\"version\\":\\"35a6cd3\\"},\\"mordor\\":{\\"birthblock\\":35554,\\"contracts\\":{\\"Auctions\\":{\\"address\\":\\"0x91D4f7097eA3A5cD3fDC9FC863dF9A0d6Ae64738\\"},\\"AutonomousConverter\\":{\\"address\\":\\"0x6ffAEBfd319cB66743acba078e173eD27B33a2a3\\"},\\"METToken\\":{\\"address\\":\\"0x2faE8aF94CdC68452042CCFc2AbF25a9120Fdb2E\\"},\\"Proposals\\":{\\"address\\":\\"0xb4C458a0389C7DFC325B5d97143b09D03a958Cf1\\"},\\"TokenPorter\\":{\\"address\\":\\"0x62187b4AA3BDA5bF7580fa4aa89659f018bb958f\\"},\\"Validator\\":{\\"address\\":\\"0x444E8fafB172cF0Df4Be1B4c20e24a48bd4a0Ae0\\"}},\\"version\\":\\"b21557f\\"},\\"ropsten\\":{\\"birthblock\\":3399250,\\"contracts\\":{\\"Auctions\\":{\\"address\\":\\"0x767182C6ef62398993099e5542Ab43c2456A8abA\\"},\\"AutonomousConverter\\":{\\"address\\":\\"0x638E84db864AA345266e1AEE13873b860aFe82e7\\"},\\"METToken\\":{\\"address\\":\\"0xF3e9a687Fdf24112745D4d7dEe150BA87A07ecc3\\"},\\"Proposals\\":{\\"address\\":\\"0xdC48aBe19B9e41d9A9B6A8B1E5793FeEf91faB6e\\",\\"version\\":\\"7e8f2e3\\"},\\"TokenPorter\\":{\\"address\\":\\"0x21c8CeB0c6f6c5357E9D6082B38425e46fdc6177\\",\\"version\\":\\"7e8f2e3\\"},\\"Validator\\":{\\"address\\":\\"0xe0CB1167725CDb0e77c0362EAf32Ae198Ebc4902\\",\\"version\\":\\"7e8f2e3\\"}},\\"version\\":\\"35a6cd3\\"},\\"qtumTestnet\\":{\\"birthblock\\":222408,\\"version\\":\\"6d976f7\\",\\"contracts\\":{\\"Auctions\\":{\\"address\\":\\"0xB3F2D768Fb1f2e341f5fE72F1B207FADa4E51fE3\\"},\\"AutonomousConverter\\":{\\"address\\":\\"0xD27eD9A738D166a68D499B355995BebFbd7B3955\\"},\\"METToken\\":{\\"address\\":\\"0x16D74daC67aD7AF791427A00e5C687c204B733aB\\"},\\"Proposals\\":{\\"address\\":\\"0xa6Ca7eA28A78572CA06C8376555D8896f37ec6F8\\"},\\"TokenPorter\\":{\\"address\\":\\"0x4aa625D067457b6E5df52275048E70E68EA1BFF7\\"},\\"Validator\\":{\\"address\\":\\"0x39E910a1439Cc806a3dcb5F253D8Fa28a5B0C598\\"}}}}");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI1Ny5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n')},function(module,exports,__webpack_require__){eval('var map = {\n\t"./18e06e7/Proposals.json": 59,\n\t"./18e06e7/TokenPorter.json": 60,\n\t"./18e06e7/Validator.json": 61,\n\t"./35a6cd3/Auctions.json": 62,\n\t"./35a6cd3/AutonomousConverter.json": 63,\n\t"./35a6cd3/METToken.json": 64,\n\t"./3a9a045/Auctions.json": 65,\n\t"./3a9a045/AutonomousConverter.json": 66,\n\t"./3a9a045/METToken.json": 67,\n\t"./3a9a045/Proposals.json": 68,\n\t"./3a9a045/TokenPorter.json": 69,\n\t"./3a9a045/Validator.json": 70,\n\t"./4af63f2/Auctions.json": 71,\n\t"./4af63f2/AutonomousConverter.json": 72,\n\t"./4af63f2/METToken.json": 73,\n\t"./6d976f7/Auctions.json": 74,\n\t"./6d976f7/AutonomousConverter.json": 75,\n\t"./6d976f7/METToken.json": 76,\n\t"./6d976f7/Proposals.json": 77,\n\t"./6d976f7/TokenPorter.json": 78,\n\t"./6d976f7/Validator.json": 79,\n\t"./6d976f7/metronome.json": 80,\n\t"./7e8f2e3/Proposals.json": 81,\n\t"./7e8f2e3/TokenPorter.json": 82,\n\t"./7e8f2e3/Validator.json": 83,\n\t"./821aeaf/Proposals.json": 84,\n\t"./821aeaf/TokenPorter.json": 85,\n\t"./821aeaf/Validator.json": 86,\n\t"./b21557f/Auctions.json": 87,\n\t"./b21557f/AutonomousConverter.json": 88,\n\t"./b21557f/METToken.json": 89,\n\t"./b21557f/Proposals.json": 90,\n\t"./b21557f/TokenPorter.json": 91,\n\t"./b21557f/Validator.json": 92\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error("Cannot find module \'" + req + "\'");\n\t\te.code = \'MODULE_NOT_FOUND\';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 58;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tZXRyb25vbWUtY29udHJhY3RzLy4vc3JjL2FiaXMgc3luYyBeXFwuXFwvLipcXC5qc29uJD8zZTM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjU4LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG1hcCA9IHtcblx0XCIuLzE4ZTA2ZTcvUHJvcG9zYWxzLmpzb25cIjogNTksXG5cdFwiLi8xOGUwNmU3L1Rva2VuUG9ydGVyLmpzb25cIjogNjAsXG5cdFwiLi8xOGUwNmU3L1ZhbGlkYXRvci5qc29uXCI6IDYxLFxuXHRcIi4vMzVhNmNkMy9BdWN0aW9ucy5qc29uXCI6IDYyLFxuXHRcIi4vMzVhNmNkMy9BdXRvbm9tb3VzQ29udmVydGVyLmpzb25cIjogNjMsXG5cdFwiLi8zNWE2Y2QzL01FVFRva2VuLmpzb25cIjogNjQsXG5cdFwiLi8zYTlhMDQ1L0F1Y3Rpb25zLmpzb25cIjogNjUsXG5cdFwiLi8zYTlhMDQ1L0F1dG9ub21vdXNDb252ZXJ0ZXIuanNvblwiOiA2Nixcblx0XCIuLzNhOWEwNDUvTUVUVG9rZW4uanNvblwiOiA2Nyxcblx0XCIuLzNhOWEwNDUvUHJvcG9zYWxzLmpzb25cIjogNjgsXG5cdFwiLi8zYTlhMDQ1L1Rva2VuUG9ydGVyLmpzb25cIjogNjksXG5cdFwiLi8zYTlhMDQ1L1ZhbGlkYXRvci5qc29uXCI6IDcwLFxuXHRcIi4vNGFmNjNmMi9BdWN0aW9ucy5qc29uXCI6IDcxLFxuXHRcIi4vNGFmNjNmMi9BdXRvbm9tb3VzQ29udmVydGVyLmpzb25cIjogNzIsXG5cdFwiLi80YWY2M2YyL01FVFRva2VuLmpzb25cIjogNzMsXG5cdFwiLi82ZDk3NmY3L0F1Y3Rpb25zLmpzb25cIjogNzQsXG5cdFwiLi82ZDk3NmY3L0F1dG9ub21vdXNDb252ZXJ0ZXIuanNvblwiOiA3NSxcblx0XCIuLzZkOTc2ZjcvTUVUVG9rZW4uanNvblwiOiA3Nixcblx0XCIuLzZkOTc2ZjcvUHJvcG9zYWxzLmpzb25cIjogNzcsXG5cdFwiLi82ZDk3NmY3L1Rva2VuUG9ydGVyLmpzb25cIjogNzgsXG5cdFwiLi82ZDk3NmY3L1ZhbGlkYXRvci5qc29uXCI6IDc5LFxuXHRcIi4vNmQ5NzZmNy9tZXRyb25vbWUuanNvblwiOiA4MCxcblx0XCIuLzdlOGYyZTMvUHJvcG9zYWxzLmpzb25cIjogODEsXG5cdFwiLi83ZThmMmUzL1Rva2VuUG9ydGVyLmpzb25cIjogODIsXG5cdFwiLi83ZThmMmUzL1ZhbGlkYXRvci5qc29uXCI6IDgzLFxuXHRcIi4vODIxYWVhZi9Qcm9wb3NhbHMuanNvblwiOiA4NCxcblx0XCIuLzgyMWFlYWYvVG9rZW5Qb3J0ZXIuanNvblwiOiA4NSxcblx0XCIuLzgyMWFlYWYvVmFsaWRhdG9yLmpzb25cIjogODYsXG5cdFwiLi9iMjE1NTdmL0F1Y3Rpb25zLmpzb25cIjogODcsXG5cdFwiLi9iMjE1NTdmL0F1dG9ub21vdXNDb252ZXJ0ZXIuanNvblwiOiA4OCxcblx0XCIuL2IyMTU1N2YvTUVUVG9rZW4uanNvblwiOiA4OSxcblx0XCIuL2IyMTU1N2YvUHJvcG9zYWxzLmpzb25cIjogOTAsXG5cdFwiLi9iMjE1NTdmL1Rva2VuUG9ydGVyLmpzb25cIjogOTEsXG5cdFwiLi9iMjE1NTdmL1ZhbGlkYXRvci5qc29uXCI6IDkyXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gNTg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///58\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"votingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"closeProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"voteForProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"actions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeRemoveValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"valProposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateVotingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"voter\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogVoted\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"creator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogProposalCreated\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogProposalClosed\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI1OS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///59\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"importSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"chainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"recipientAddress\\",\\"type\\":\\"address\\"},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validators\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"mintToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"claimables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_exportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setExportFeePerTenThousand\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"removeDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"burnSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"importMET\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"exportedBurns\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_minimumExportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setMinimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setChainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"mintHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"burnHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"exportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_contractAddress\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"burnAtTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initTokenPorter\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"supplyOnAllChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"destinationChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"tokenOwner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"export\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"recipients\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"claimReceivables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"merkleRoots\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":false,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"indexed\\":false,\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"exporter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogExportReceipt\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToImport\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"exportTimeStamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"LogImportRequest\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":true,\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogImport\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ExportOnChainClaimedReceiptLog\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2MC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///60\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setTokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposals\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setProposalContract\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getValidatorsCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"validators\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"removeValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"threshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"hashClaimed\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashRefutation\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"attestHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_tokenPorterAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashAttestations\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"attestationCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"refuteHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_valCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"isNewThresholdValid\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"pure\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"isValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"hash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"recipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"isValid\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogAttestation\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorAdded\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorRemoved\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2MS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///61\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialAuctionEndTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"initialPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_n\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"priceAt\\",\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumPriceInDailyAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"MULTIPLIER\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tentimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialized\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"lastPurchaseTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_AC_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"hundredtimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"genesisTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"dailyAuctionStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"mintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minted\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"proceeds\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_GLOBAL_DAILY_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalMigratedIn\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumPrice\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"lastPurchasePrice\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"thousandtimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"numTicks\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"priceAtInitialAuction\\",\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"initPricer\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialAuctionDuration\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"chain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"DAILY_PURCHASE_LIMIT\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_FOUNDER_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"founders\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalSupplyAfterPercentageLogic\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalMigratedOut\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"AUCTION_WHEN_PERCENTAGE_LOGIC_STARTS\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"timeScale\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"tokenLockers\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"fallback\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"sender\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"purchasePrice\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogAuctionFundsIn\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"isRunning\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whichTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whichAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"heartbeat\\",\\"outputs\\":[{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"auctionAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"convertAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"minting\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"totalMET\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"proceedsBal\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currTick\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currAuction\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"nextAuctionGMT\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"genesisGMT\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currentAuctionPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_lastPurchasePrice\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_token\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_genesisTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_initialAuctionEndTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"skipInitBecauseIAmNotOg\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initAuctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_founder\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_token\\",\\"type\\":\\"address\\"}],\\"name\\":\\"createTokenLocker\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_founders\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_token\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"mintInitialSupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"stopEverything\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"isInitialAuctionEnded\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalMetSupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalDailySupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentPrice\\",\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"dailyMintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokensOnThisChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentMintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"prepareAuctionForNonOGChain\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_wei\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_timestamp\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whatWouldPurchaseDo\\",\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2Mi5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"smartToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"reserveToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogFundsIn\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"eth\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"met\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ConvertEthToMet\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"eth\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"met\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ConvertMetToEth\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_reserveToken\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_smartToken\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\"}],\\"name\\":\\"init\\",\\"outputs\\":[],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"handleFund\\",\\"outputs\\":[],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getMetBalance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getEthBalance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"getMetForEthResult\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"getEthForMetResult\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_mintReturn\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"convertEthToMet\\",\\"outputs\\":[{\\"name\\":\\"returnedMet\\",\\"type\\":\\"uint256\\"}],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_mintReturn\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"convertMetToEth\\",\\"outputs\\":[{\\"name\\":\\"returnedEth\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2My5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"name\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approve\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalSupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setTokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"decimals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint8\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"transferAllowed\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initToken\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"mint\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approveMore\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"autonomousConverter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"balanceOf\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approveLess\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"symbol\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"destroy\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"roots\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initMintable\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subs\\",\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"}],\\"name\\":\\"allowance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogSubscription\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogCancelSubscription\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Mint\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Approval\\",\\"type\\":\\"event\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initMETToken\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"enableMETTransfers\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transfer\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transferFrom\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"bits\\",\\"type\\":\\"uint256[]\\"}],\\"name\\":\\"multiTransfer\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"data\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"setRoot\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"addr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"getRoot\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"a\\",\\"type\\":\\"address\\"},{\\"name\\":\\"b\\",\\"type\\":\\"address\\"}],\\"name\\":\\"rootsMatch\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"importMET\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"export\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subscribe\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"cancelSubscription\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"getSubscription\\",\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subWithdraw\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"multiSubWithdraw\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_recipients\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"multiSubWithdrawFor\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2NC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///64\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialAuctionEndTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"initialPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_n\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"priceAt\\",\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumPriceInDailyAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"MULTIPLIER\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tentimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"restartAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialized\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"isInitialAuctionEnded\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentMintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"isRunning\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"lastPurchaseTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalMetSupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_AC_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalDailySupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"hundredtimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"heartbeat\\",\\"outputs\\":[{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"auctionAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"convertAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"minting\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"totalMET\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"proceedsBal\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currTick\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currAuction\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"nextAuctionGMT\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"genesisGMT\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currentAuctionPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_lastPurchasePrice\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"genesisTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"stopEverything\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"dailyAuctionStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"mintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minted\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokensOnThisChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"proceeds\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_GLOBAL_DAILY_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_wei\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_timestamp\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whatWouldPurchaseDo\\",\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalMigratedIn\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumPrice\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"lastPurchasePrice\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"dailyMintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"thousandtimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentPrice\\",\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"numTicks\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"priceAtInitialAuction\\",\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"initPricer\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialAuctionDuration\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"chain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whichTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"DAILY_PURCHASE_LIMIT\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_FOUNDER_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"prepareAuctionForNonOGChain\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"founders\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalSupplyAfterPercentageLogic\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_token\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_genesisTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_initialAuctionEndTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"skipInitBecauseIAmNotOg\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalMigratedOut\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"AUCTION_WHEN_PERCENTAGE_LOGIC_STARTS\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"timeScale\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_tick\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whichAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"fallback\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"sender\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"purchasePrice\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogAuctionFundsIn\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2NS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///65\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"convertMetToEth\\",\\"outputs\\":[{\\"name\\":\\"returnedEth\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_reserveToken\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_smartToken\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\"}],\\"name\\":\\"init\\",\\"outputs\\":[],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getMetBalance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"getEthForMetResult\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"getMetForEthResult\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getEthBalance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"handleFund\\",\\"outputs\\":[],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"convertEthToMet\\",\\"outputs\\":[{\\"name\\":\\"returnedMet\\",\\"type\\":\\"uint256\\"}],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"smartToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"reserveToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogFundsIn\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"eth\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"met\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ConvertEthToMet\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"eth\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"met\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ConvertMetToEth\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2Ni5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///66\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"name\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"addr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"getRoot\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approve\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalSupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initMETToken\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setTokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transferFrom\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"decimals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint8\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"transferAllowed\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initToken\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"mint\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"export\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approveMore\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"enableMETTransfers\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"autonomousConverter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"getSubscription\\",\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"leakage\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"importMET\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"balanceOf\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approveLess\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subWithdraw\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"cancelSubscription\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"symbol\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"destroy\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"roots\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transfer\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subscribe\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"bits\\",\\"type\\":\\"uint256[]\\"}],\\"name\\":\\"multiTransfer\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateLeakage\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"resetLeakage\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"multiSubWithdraw\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initMintable\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subs\\",\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"a\\",\\"type\\":\\"address\\"},{\\"name\\":\\"b\\",\\"type\\":\\"address\\"}],\\"name\\":\\"rootsMatch\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"data\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"setRoot\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"}],\\"name\\":\\"allowance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_recipients\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"multiSubWithdrawFor\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogSubscription\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogCancelSubscription\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Mint\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Approval\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2Ny5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///67\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"votingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"closeProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"voteForProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"actions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeRemoveValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"valProposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateVotingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"voter\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogVoted\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"creator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogProposalCreated\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogProposalClosed\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2OC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///68\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"importSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"chainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"recipientAddress\\",\\"type\\":\\"address\\"},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validators\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"mintToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"claimables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_exportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setExportFeePerTenThousand\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"removeDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"burnSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"importMET\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"exportedBurns\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_minimumExportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setMinimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setChainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"mintHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"burnHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"exportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_contractAddress\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"burnAtTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initTokenPorter\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"supplyOnAllChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"destinationChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"tokenOwner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"export\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"recipients\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"claimReceivables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"merkleRoots\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":false,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"indexed\\":false,\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"exporter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogExportReceipt\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToImport\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"exportTimeStamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"LogImportRequest\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":true,\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogImport\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ExportOnChainClaimedReceiptLog\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2OS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///69\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setTokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposals\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setProposalContract\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getValidatorsCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"validators\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"removeValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"threshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"hashClaimed\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashRefutation\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"attestHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_tokenPorterAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashAttestations\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"attestationCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"refuteHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_valCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"isNewThresholdValid\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"pure\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"isValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"hash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"recipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"isValid\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogAttestation\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorAdded\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorRemoved\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3MC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///70\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialAuctionEndTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"initialPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_n\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"priceAt\\",\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumPriceInDailyAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"MULTIPLIER\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tentimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"restartAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialized\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"isInitialAuctionEnded\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentMintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"isRunning\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"lastPurchaseTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalMetSupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_AC_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalDailySupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"hundredtimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"heartbeat\\",\\"outputs\\":[{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"auctionAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"convertAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"minting\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"totalMET\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"proceedsBal\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currTick\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currAuction\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"nextAuctionGMT\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"genesisGMT\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currentAuctionPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_lastPurchasePrice\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"genesisTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"stopEverything\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"dailyAuctionStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"mintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minted\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokensOnThisChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"proceeds\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_GLOBAL_DAILY_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_wei\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_timestamp\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whatWouldPurchaseDo\\",\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalMigratedIn\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumPrice\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"lastPurchasePrice\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"dailyMintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"thousandtimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentPrice\\",\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"numTicks\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"priceAtInitialAuction\\",\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"initPricer\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialAuctionDuration\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"chain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whichTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"DAILY_PURCHASE_LIMIT\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_FOUNDER_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"prepareAuctionForNonOGChain\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"founders\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalSupplyAfterPercentageLogic\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_token\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_genesisTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_initialAuctionEndTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"skipInitBecauseIAmNotOg\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalMigratedOut\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"AUCTION_WHEN_PERCENTAGE_LOGIC_STARTS\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"timeScale\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_tick\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whichAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"fallback\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"sender\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"purchasePrice\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogAuctionFundsIn\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3MS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///71\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"convertMetToEth\\",\\"outputs\\":[{\\"name\\":\\"returnedEth\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_reserveToken\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_smartToken\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\"}],\\"name\\":\\"init\\",\\"outputs\\":[],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getMetBalance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"getEthForMetResult\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"getMetForEthResult\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getEthBalance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"handleFund\\",\\"outputs\\":[],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"convertEthToMet\\",\\"outputs\\":[{\\"name\\":\\"returnedMet\\",\\"type\\":\\"uint256\\"}],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"smartToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"reserveToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogFundsIn\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"eth\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"met\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ConvertEthToMet\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"eth\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"met\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ConvertMetToEth\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3Mi5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///72\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"name\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"addr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"getRoot\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approve\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalSupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initMETToken\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setTokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transferFrom\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"decimals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint8\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"transferAllowed\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initToken\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"mint\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"export\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approveMore\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"enableMETTransfers\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"autonomousConverter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"getSubscription\\",\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"leakage\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"importMET\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"balanceOf\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approveLess\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subWithdraw\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"cancelSubscription\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"symbol\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"destroy\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"roots\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transfer\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subscribe\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"bits\\",\\"type\\":\\"uint256[]\\"}],\\"name\\":\\"multiTransfer\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateLeakage\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"resetLeakage\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"multiSubWithdraw\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initMintable\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subs\\",\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"a\\",\\"type\\":\\"address\\"},{\\"name\\":\\"b\\",\\"type\\":\\"address\\"}],\\"name\\":\\"rootsMatch\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"data\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"setRoot\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"}],\\"name\\":\\"allowance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_recipients\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"multiSubWithdrawFor\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogSubscription\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogCancelSubscription\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Mint\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Approval\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3My5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///73\n')},function(module){eval('module.exports = JSON.parse("[{\\"name\\":\\"initialAuctionEndTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"priceAt\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"initialPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_n\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumPriceInDailyAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"MULTIPLIER\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"currentTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"mintInitialSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_founders\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tentimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"restartAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initAuctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initialized\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"isInitialAuctionEnded\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"currentMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"isRunning\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"lastPurchaseTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"globalMetSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_AC_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"globalDailySupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hundredtimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"heartbeat\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"auctionAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"convertAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"tokenAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"minting\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"totalMET\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"proceedsBal\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currTick\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currAuction\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"nextAuctionGMT\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"genesisGMT\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currentAuctionPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_dailyMintable\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_lastPurchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"createTokenLocker\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_founder\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"genesisTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"stopEverything\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"currentAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"dailyAuctionStartTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"mintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minted\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tokensOnThisChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"proceeds\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_GLOBAL_DAILY_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"whatWouldPurchaseDo\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_wei\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_timestamp\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalMigratedIn\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumPrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"dailyMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"thousandtimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"currentPrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"priceAtInitialAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"numTicks\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initPricer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initialAuctionDuration\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"chain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"whichTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"t\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"DAILY_PURCHASE_LIMIT\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_FOUNDER_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"prepareAuctionForNonOGChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"founders\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"globalSupplyAfterPercentageLogic\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"skipInitBecauseIAmNotOg\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_genesisTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_initialAuctionEndTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalMigratedOut\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"AUCTION_WHEN_PERCENTAGE_LOGIC_STARTS\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"timeScale\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tokenLockers\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"whichAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tick\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"constructor\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"fallback\\",\\"payable\\":true,\\"inputs\\":null,\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogAuctionFundsIn\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"sender\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"purchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3NC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///74\n')},function(module){eval('module.exports = JSON.parse("[{\\"name\\":\\"init\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[{\\"name\\":\\"_reserveToken\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_smartToken\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"getMetBalance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getMetForQtumResult\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"convertQtumToMet\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"returnedMet\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"getQtumBalance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"handleFund\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"smartToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getQtumForMetResult\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"reserveToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"convertMetToQtum\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"returnedQtum\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogFundsIn\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"ConvertQtumToMet\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"qtum\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"met\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"ConvertMetToQtum\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"qtum\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"met\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3NS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///75\n')},function(module){eval('module.exports = JSON.parse("[{\\"name\\":\\"name\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getRoot\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"addr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approve\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initMETToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"transferFrom\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"decimals\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint8\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"transferAllowed\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mint\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"export\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approveMore\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"enableMETTransfers\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"autonomousConverter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getSubscription\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"leakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"importMET\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\",\\"indexed\\":false},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"balanceOf\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approveLess\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"subWithdraw\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"cancelSubscription\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"symbol\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destroy\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"roots\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"transfer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"subscribe\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_payPerWeek\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"multiTransfer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"bits\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"resetLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"multiSubWithdraw\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"subs\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"rootsMatch\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"a\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"b\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setRoot\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"data\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"allowance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"multiSubWithdrawFor\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\",\\"indexed\\":false},{\\"name\\":\\"_recipients\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogSubscription\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogCancelSubscription\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Mint\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Approval\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3Ni5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n')},function(module){eval('module.exports = JSON.parse("[{\\"name\\":\\"proposals\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"validator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"votingPeriod\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"closeProposal\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"setValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"validator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"voteForProposal\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_support\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"proposeNewValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"actions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"proposeRemoveValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"proposeNewThreshold\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateVotingPeriod\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_t\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"constructor\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogVoted\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"voter\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"support\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogProposalCreated\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"creator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogProposalClosed\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3Ny5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n')},function(module){eval('module.exports = JSON.parse("[{\\"name\\":\\"importSequence\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"chainHopStartTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"validator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"mintToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"recipientAddress\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"validators\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"claimables\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setExportFeePerTenThousand\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_exportFee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"removeDestinationChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"burnSequence\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"importMET\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\",\\"indexed\\":false},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"exportedBurns\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setMinimumExportFee\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_minimumExportFee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setChainHopStartTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mintHashes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumExportFee\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"burnHashes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"exportFee\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"addDestinationChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_contractAddress\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"burnAtTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destinationChains\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"export\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"tokenOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"claimReceivables\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"recipients\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"merkleRoots\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"LogExportReceipt\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"exporter\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogImportRequest\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amountToImport\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"exportTimeStamp\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogImport\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"ExportOnChainClaimedReceiptLog\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3OC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///78\n')},function(module){eval('module.exports = JSON.parse("[{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"setProposalContract\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_proposals\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"getValidatorsCount\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"validators\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"removeValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"threshold\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hashClaimed\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"addValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"proposals\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hashRefutation\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"attestHash\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes32[]\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"_globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_tokenPorterAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"hashAttestations\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"attestationCount\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"updateThreshold\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"refuteHash\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"isNewThresholdValid\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_valCount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"isValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"LogAttestation\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"hash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"recipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"isValid\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogValidatorAdded\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"validator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"caller\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogValidatorRemoved\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"validator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"caller\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3OS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n')},function(module){eval('module.exports = JSON.parse("{\\"contracts\\":{\\"Auctions\\":{\\"source\\":\\"Auctions:Auctions\\",\\"abi\\":[{\\"name\\":\\"initialAuctionEndTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"priceAt\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"initialPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_n\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumPriceInDailyAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"MULTIPLIER\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"currentTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"mintInitialSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_founders\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tentimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"restartAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initAuctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initialized\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"isInitialAuctionEnded\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"currentMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"isRunning\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"lastPurchaseTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"globalMetSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_AC_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"globalDailySupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hundredtimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"heartbeat\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"auctionAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"convertAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"tokenAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"minting\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"totalMET\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"proceedsBal\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currTick\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currAuction\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"nextAuctionGMT\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"genesisGMT\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currentAuctionPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_dailyMintable\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_lastPurchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"createTokenLocker\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_founder\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"genesisTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"stopEverything\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"currentAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"dailyAuctionStartTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"mintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minted\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tokensOnThisChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"proceeds\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_GLOBAL_DAILY_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"whatWouldPurchaseDo\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_wei\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_timestamp\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalMigratedIn\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumPrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"dailyMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"thousandtimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"currentPrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"priceAtInitialAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"numTicks\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initPricer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initialAuctionDuration\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"chain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"whichTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"t\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"DAILY_PURCHASE_LIMIT\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_FOUNDER_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"prepareAuctionForNonOGChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"founders\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"globalSupplyAfterPercentageLogic\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"skipInitBecauseIAmNotOg\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_genesisTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_initialAuctionEndTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalMigratedOut\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"AUCTION_WHEN_PERCENTAGE_LOGIC_STARTS\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"timeScale\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tokenLockers\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"whichAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tick\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"constructor\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"fallback\\",\\"payable\\":true,\\"inputs\\":null,\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogAuctionFundsIn\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"sender\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"purchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526503005753e800600090815560018080556a01a78429bce3279a9c0000600e55670de0b6b3a7640000600f5560108290556011919091556012556a084595161401484a00000060135562093a806014556a2b8213a156a49f0d000000601a55601b805467ffffffffffffffff1916675154554d00000000179055341561008957600080fd5b60058054600160a060020a03191633600160a060020a03161790556a069e10de76676d080000006013556135b3806100c26000396000f300606060405260043610620002d45763ffffffff60e060020a600035041662fca46f8114620007dc57806301dbdf441462000804578063053f74921462000820578063059f8b161462000836578063065e5360146200084c5780630a5f558e14620008625780630d2a25bb14620008e25780630dd93b5614620008f85780630eab31b1146200090e578063158ef93e14620009305780631d38bebd14620009465780631d3ce58d146200095c5780632014e5d1146200097257806321288400146200098857806322ce61b2146200099e5780632af4c31e14620009b45780632b193ac414620009d65780632b37921814620009ec5780632ff2e9dc1462000a025780633264a8441462000a185780633defb9621462000a2e57806340a3a9c71462000ae057806342c6498a1462000b0a5780634938649a1462000b20578063496a698d1462000b3657806349b11f241462000b4c5780634bf365df1462000b625780634f02c4201462000b78578063518c0f171462000b8e57806355b5ec641462000ba45780635d766d351462000bd65780637334a63f1462000bec57806379ba50971462000c2c5780637a8a5cf31462000c425780637f386b6c1462000c585780638207b07d1462000c6e578063843ad7b51462000c845780638da5cb5b1462000c9a5780639b8abe0b1462000cb05780639d1b464a1462000cc6578063a8afc5381462000cdc578063c1f7c5391462000cf8578063c50508de1462000d0e578063c763e5a11462000d24578063d282866a1462000d68578063d4ee1d901462000d81578063d511cc491462000d97578063d661d2061462000dad578063d7508a551462000dc3578063d8e75f621462000dd9578063d9db9d891462000df2578063df775a931462000e08578063e98c365b1462000e5d578063f17f3ca31462000e73578063f32b85e81462000e89578063f4285c3c1462000e9f578063fc0c546a1462000ec1578063fde9cded1462000ed7575b6000806000806000806000620002e962000ef0565b1515620002f557600080fd5b600034116200030357600080fd5b3496506200031062000f0d565b506200031b620010c2565b15620004d3576016544210156200033157600080fd5b6200033b6200114c565b600160a060020a0333166000908152601860205260409020541015620003cf5764174876e8008711156200038b57620003808764174876e80063ffffffff6200116216565b955064174876e80096505b600160a060020a0333166000908152601760205260409020349055620003b06200114c565b600160a060020a033316600090815260186020526040902055620004d3565b600160a060020a03331660009081526017602052604090205464174876e8009010620003fa57600080fd5b600160a060020a03331660009081526017602052604090205464174876e800906200042c908963ffffffff6200117a16565b11156200048e57600160a060020a033316600090815260176020526040902054620004779064174876e800906200046a908a63ffffffff6200117a16565b9063ffffffff6200116216565b95506200048b878763ffffffff6200116216565b96505b600160a060020a033316600090815260176020526040902054620004b9903463ffffffff6200117a16565b600160a060020a0333166000908152601760205260409020555b620004dd62001195565b9450620004eb8786620011a2565b91955093509150600083116200050057600080fd5b601554421080156200058957506007546a084595161401484a0000009062000586908590600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200056157600080fd5b5af115156200056f57600080fd5b505050604051805191905063ffffffff6200117a16565b10155b15620005a5574260158190556001620151809182900401026016555b600c859055600d849055601354831115620005bc57fe5b601354620005d1908463ffffffff6200116216565b60135586821115620005df57fe5b620005f1878363ffffffff6200116216565b600854909150600160a060020a0316637679a816826040518263ffffffff1660e060020a0281526004016000604051808303818588803b15156200063457600080fd5b5af115156200064257600080fd5b5050600754600160a060020a031691506340c10f199050338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200069f57600080fd5b5af11515620006ad57600080fd5b505050604051805190501515620006c357600080fd5b620006d5828763ffffffff6200117a16565b915060008211156200077857600160a060020a03331660009081526017602052604081205411156200074657600160a060020a0333166000908152601760205260409020546200072c908363ffffffff6200116216565b600160a060020a0333166000908152601760205260409020555b600160a060020a03331682156108fc0283604051600060405180830381858888f1935050505015156200077857600080fd5b33600160a060020a03167fa3d6792be56a61c872a8e6d733ef6efe5e391cece4d5e9d2f37208fdab7dddfd8285600d54866040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050005b3415620007e857600080fd5b620007f26200127c565b60405190815260200160405180910390f35b34156200081057600080fd5b620007f260043560243562001282565b34156200082c57600080fd5b620007f262001403565b34156200084257600080fd5b620007f262001409565b34156200085857600080fd5b620007f262001195565b34156200086e57600080fd5b620008ce600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965050600160a060020a0385358116956020810135821695506040013516925062001413915050565b604051901515815260200160405180910390f35b3415620008ee57600080fd5b620007f262001755565b34156200090457600080fd5b620008ce62000f0d565b34156200091a57600080fd5b620008ce6004356024356044356064356200175b565b34156200093c57600080fd5b620008ce6200191e565b34156200095257600080fd5b620008ce620010c2565b34156200096857600080fd5b620007f26200192c565b34156200097e57600080fd5b620008ce62000ef0565b34156200099457600080fd5b620007f2620019ff565b3415620009aa57600080fd5b620007f262001a05565b3415620009c057600080fd5b620008ce600160a060020a036004351662001a69565b3415620009e257600080fd5b620007f262001ad5565b3415620009f857600080fd5b620007f262001adb565b341562000a0e57600080fd5b620007f262001bc7565b341562000a2457600080fd5b620007f262001bd6565b341562000a3a57600080fd5b62000a4462001bdc565b60405177ffffffffffffffffffffffffffffffffffffffffffffffff19909e168e52600160a060020a039c8d1660208f01529a8c166040808f019190915299909b1660608d015260808c019790975260a08b019590955260c08a019390935260e08901919091526101008801526101208701526101408601526101608501526101808401929092526101a08301526101c0909101905180910390f35b341562000aec57600080fd5b62000b08600160a060020a036004358116906024351662001d52565b005b341562000b1657600080fd5b620007f262001ec0565b341562000b2c57600080fd5b62000b0862001ec6565b341562000b4257600080fd5b620007f26200114c565b341562000b5857600080fd5b620007f262001f0b565b341562000b6e57600080fd5b620007f262001f11565b341562000b8457600080fd5b620008ce62001f17565b341562000b9a57600080fd5b620007f262001f20565b341562000bb057600080fd5b62000bba62001fa6565b604051600160a060020a03909116815260200160405180910390f35b341562000be257600080fd5b620007f262001fb5565b341562000bf857600080fd5b62000c0860043560243562001fc2565b60405180848152602001838152602001828152602001935050505060405180910390f35b341562000c3857600080fd5b620008ce62002054565b341562000c4e57600080fd5b620007f2620020e7565b341562000c6457600080fd5b620007f2620020ed565b341562000c7a57600080fd5b620007f2620020f3565b341562000c9057600080fd5b620007f2620020f9565b341562000ca657600080fd5b62000bba62002107565b341562000cbc57600080fd5b620007f262002116565b341562000cd257600080fd5b620007f26200211c565b341562000ce857600080fd5b620007f26004356024356200212c565b341562000d0457600080fd5b62000b0862002190565b341562000d1a57600080fd5b620007f262002264565b341562000d3057600080fd5b62000d3a6200226a565b60405177ffffffffffffffffffffffffffffffffffffffffffffffff19909116815260200160405180910390f35b341562000d7457600080fd5b620007f260043562002276565b341562000d8d57600080fd5b62000bba62002298565b341562000da357600080fd5b620007f2620022a7565b341562000db957600080fd5b620007f2620022b0565b341562000dcf57600080fd5b62000b08620022b6565b341562000de557600080fd5b62000bba6004356200240b565b341562000dfe57600080fd5b620007f262002434565b341562000e1457600080fd5b620008ce600160a060020a036004358116906024351660443560643560843560a43577ffffffffffffffffffffffffffffffffffffffffffffffff1960c4351660e4356200243a565b341562000e6957600080fd5b620007f262002600565b341562000e7f57600080fd5b620007f262002606565b341562000e9557600080fd5b620007f26200260c565b341562000eab57600080fd5b62000bba600160a060020a036004351662002612565b341562000ecd57600080fd5b62000bba6200262d565b341562000ee357600080fd5b620007f26004356200263c565b6000600b54421015801562000f0757506000600b54115b90505b90565b600080600080600062000f1f6200114c565b935062000f2e600c546200263c565b841115620010b657600854600160a060020a031663378252f26040518163ffffffff1660e060020a028152600401600060405180830381600087803b151562000f7657600080fd5b5af1151562000f8457600080fd5b50505062000f9162002684565b600d8290559194509250905062000fa88362002276565b600c556007546200102b90600160a060020a0316635c9b2e926040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562000ff057600080fd5b5af1151562000ffe57600080fd5b50505060405180516013549091506200101e908463ffffffff6200117a16565b9063ffffffff6200117a16565b601355600754600160a060020a031663baaef4af6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156200106e57600080fd5b5af115156200107c57600080fd5b5050506139c7841115620010ac57620010a86200109862001adb565b601a549063ffffffff6200117a16565b601a555b60019450620010bb565b600094505b5050505090565b600060155460001415801562000f0757506015544210158062000f0757506007546a084595161401484a00000090600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200112d57600080fd5b5af115156200113b57600080fd5b505050604051805190501015905090565b600062000f076200115c62001195565b6200263c565b6000828211156200116f57fe5b508082035b92915050565b6000828201838110156200118a57fe5b8091505b5092915050565b600062000f074262002276565b600080600080600080600c548710151515620011bd57600080fd5b600c5487039250620011ce620010c2565b15620011ea57620011e2600d548462001282565b9550620011fb565b620011f8600d54846200212c565b95505b62001227866200121a670de0b6b3a76400008b63ffffffff6200279d16565b9063ffffffff620027cc16565b9150819450601354821115620012725760135494506200125b670de0b6b3a76400006200121a878963ffffffff6200279d16565b90506200126f888263ffffffff6200116216565b93505b5050509250925092565b60155481565b6000670de0b6b3a76400008183816103e882041115620012e757600091505b6103e88104821015620012e157600454620012d390670de0b6b3a7640000906200121a90869063ffffffff6200279d16565b9250600190910190620012a1565b6103e890065b60006064820411156200133d57600091505b6064810482101562001338576003546200132a90670de0b6b3a7640000906200121a90869063ffffffff6200279d16565b9250600190910190620012f9565b606490065b6000600a820411156200139357600091505b600a81048210156200138e576002546200138090670de0b6b3a7640000906200121a90869063ffffffff6200279d16565b92506001909101906200134f565b600a90065b600091505b80821015620013c857620013ba60646200121a85606363ffffffff6200279d16565b925060019091019062001398565b620013e7670de0b6b3a76400006200121a888663ffffffff6200279d16565b9350600154841015620013fa5760015493505b50505092915050565b60015481565b65b4791041f30081565b6005546000908190819081908190819033600160a060020a039081169116146200143c57600080fd5b60195460ff16156200144d57600080fd5b895115156200145b57600080fd5b600754600160a060020a03161580156200147d5750600160a060020a03891615155b15156200148957600080fd5b600854600160a060020a0316158015620014ab5750600160a060020a03881615155b1515620014b757600080fd5b600160a060020a0387161515620014cd57600080fd5b60078054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff199283161790925560088054928b1692909116919091179055600093505b8951841015620016a55760608a85815181106200152857fe5b9060200190602002015160029190910a90049250600160a060020a03831615156200155257600080fd5b8984815181106200155f57fe5b906020019060200201516bffffffffffffffffffffffff169150600082116200158757600080fd5b50600160a060020a038083166000908152600a602052604090819020546007549083169216906340c10f1990839085905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620015f957600080fd5b5af115156200160757600080fd5b5050506040518051905015156200161d57600080fd5b80600160a060020a03166347e7ef24848460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156200167257600080fd5b5af115156200168057600080fd5b506200169791508690508363ffffffff6200117a16565b94506001909301926200150f565b600e548514620016b457600080fd5b600754600f54600160a060020a03909116906340c10f1990899060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200171257600080fd5b5af115156200172057600080fd5b5050506040518051905015156200173657600080fd5b6019805460ff1916600190811790915595505050505050949350505050565b60025481565b6005546000908190819033600160a060020a039081169116146200177e57600080fd5b60195460ff1615156200179057600080fd5b601954610100900460ff1615620017a657600080fd5b831515620017b357600080fd5b620017bd62002190565b6000871115620017d857603c808804810201600b55620017e5565b603c42064203603c01600b555b601454600b54016015819055620151808082040214156200180c576015546016556200181f565b6015546001620151809182900401026016555b6000600c819055861115620018345760008690555b6012849055600085111562001853576305f5e1008502600d556200185c565b630bebc200600d555b600091505b6009548210156200190157600a60006009848154811015156200188057fe5b6000918252602080832090910154600160a060020a039081168452908301939093526040918201902054909116915081906327fe75ed90518163ffffffff1660e060020a028152600401600060405180830381600087803b1515620018e457600080fd5b5af11515620018f257600080fd5b50506001909201915062001861565b6019805461ff001916610100179055600192505050949350505050565b601954610100900460ff1681565b60135460009081806200193e6200114c565b91506200195f62001951600c546200263c565b839063ffffffff6200116216565b905060008111156200198d576200198a6200197a82620027e4565b6013549063ffffffff6200117a16565b92505b600754620019f790600160a060020a0316635c9b2e926040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515620019d257600080fd5b5af11515620019e057600080fd5b505050604051805185915063ffffffff6200117a16565b935050505090565b600c5481565b60008062001a126200114c565b90506139c781111562001a2a57601a54915062001a65565b62001a6262001a49689c2007651b250000008363ffffffff6200279d16565b6a084595161401484a0000009063ffffffff6200117a16565b91505b5090565b60055460009033600160a060020a0390811691161462001a8857600080fd5b600554600160a060020a038381169116141562001aa457600080fd5b506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905560015b919050565b600f5481565b6000689c2007651b25000000818080808062001af66200114c565b94506139c785111562001bbc5762001b10600c546200263c565b93506139c892508284111562001b24578392505b8285039150600182111562001b7b5760018203600202618ead01905062001b73634f8460e96200121a8362001b666002601a546200279d90919063ffffffff16565b9063ffffffff6200279d16565b955062001b9d565b62001b9a618ead6200121a6002601a546200279d90919063ffffffff16565b95505b689c2007651b2500000086101562001bbc57689c2007651b2500000095505b509395945050505050565b6a084595161401484a00000081565b60035481565b601b5460085460c060020a90910290600090819081908190819081908190819081908190819081908190600160a060020a03166350b48c5e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562001c4357600080fd5b5af1151562001c5157600080fd5b5050506040518051600754309f50909d50600160a060020a03169b508b90506318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562001ca457600080fd5b5af1151562001cb257600080fd5b5050506040518051600854909a50600160a060020a031631985062001cd8905062001195565b965062001ce46200114c565b955085151562001cf957601654945062001d14565b60165460125462015180880281151562001d0f57fe5b040194505b600b54935062001d236200211c565b925062001d2f620020f9565b915062001d3b6200192c565b9950600d549050909192939495969798999a9b9c9d565b60055460009033600160a060020a0390811691161462001d7157600080fd5b600160a060020a038216151562001d8757600080fd5b600160a060020a038316151562001d9d57600080fd5b600980546001810162001db1838262002b41565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055308262001def62002b6d565b600160a060020a0392831681529116602082015260409081019051809103906000f080151562001e1e57600080fd5b600160a060020a038481166000908152600a602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916928416928317905591925090632af4c31e9085905160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151562001ea357600080fd5b5af1151562001eb157600080fd5b50505060405180515050505050565b600b5481565b60055433600160a060020a0390811691161462001ee257600080fd5b42600b54101562001ef257600080fd5b600b8054640757b12c0001908190556015819055601655565b60165481565b60135481565b60195460ff1681565b60075460009081908190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562001f6757600080fd5b5af1151562001f7557600080fd5b50505060405180519050915062001f8b6200192c565b905062001f9f828263ffffffff6200117a16565b9250505090565b600854600160a060020a031681565b689c2007651b2500000081565b600080600080600062001fdf62001fd98762002276565b620029a1565b945062002000856200121a670de0b6b3a76400008a63ffffffff6200279d16565b91508193506013548211156200204b57601354935062002034670de0b6b3a76400006200121a868863ffffffff6200279d16565b905062002048878263ffffffff6200116216565b92505b50509250925092565b60065460009033600160a060020a039081169116146200207357600080fd5b600654600554600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a3506006546005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055600190565b60115481565b60005481565b600d5481565b600062000f076000620027e4565b600554600160a060020a031681565b60045481565b600062000f0762001fd962001195565b60006200214665b4791041f3008363ffffffff6200279d16565b8311156200217b57620021786200216a65b4791041f3008463ffffffff6200279d16565b849063ffffffff6200116216565b90505b60005481101562001174575060005492915050565b670de0b6b3a764000060005b600a811015620021ca57620021bf60646200121a84606363ffffffff6200279d16565b91506001016200219c565b50600255670de0b6b3a764000060005b600a81101562002214576002546200220990670de0b6b3a7640000906200121a90859063ffffffff6200279d16565b9150600101620021da565b50600355670de0b6b3a764000060005b600a8110156200225e576003546200225390670de0b6b3a7640000906200121a90859063ffffffff6200279d16565b915060010162002224565b50600455565b60145481565b601b5460c060020a0281565b600081600b5411156200228857600080fd5b50601254600b54603c9203020490565b600654600160a060020a031681565b64174876e80081565b600e5481565b600754600160a060020a0316634892f0af6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515620022f657600080fd5b5af115156200230457600080fd5b50505060405180519050600160a060020a031633600160a060020a031614806200233c575060075433600160a060020a039081169116145b15156200234857600080fd5b600754600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200238857600080fd5b5af115156200239657600080fd5b5050506040518051159050620023ab57600080fd5b601b5460c060020a0277ffffffffffffffffffffffffffffffffffffffffffffffff19167f45544800000000000000000000000000000000000000000000000000000000001415620023fc57600080fd5b6200240662001195565b600c55565b60098054829081106200241a57fe5b600091825260209091200154600160a060020a0316905081565b601a5481565b60055460009033600160a060020a039081169116146200245957600080fd5b60195460ff16156200246a57600080fd5b601954610100900460ff16156200248057600080fd5b8315156200248d57600080fd5b600754600160a060020a0316158015620024af5750600160a060020a03891615155b1515620024bb57600080fd5b600854600160a060020a0316158015620024dd5750600160a060020a03881615155b1515620024e957600080fd5b620024f362002190565b60078054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff199283161790925560088054928b16929091169190911790556000600e819055600f819055601355600b8790556015829055620151808204620151800260155414156200256a576015546016556200257d565b6015546001620151809182900401026016555b6000600c819055861115620025925760008690555b60128490556000851115620025b1576305f5e1008502600d55620025ba565b630bebc200600d555b50601b805460c060020a840467ffffffffffffffff199091161790556019805461ff001960ff199091166001908117919091166101001790915598975050505050505050565b60105481565b6139c781565b60125481565b600a60205260009081526040902054600160a060020a031681565b600754600160a060020a031681565b6000816200264c60165462002276565b11156200265c5750600062001ad0565b6105a06200266c60165462002276565b83038115156200267857fe5b04600101905062001ad0565b600080600080600080600080600b54421015620026b057600b549750600d549650601354955062002793565b620026bd600c546200263c565b9450620026c96200114c565b9350848403925060165497506001841115620026f657620026f3620026ed62001195565b62002ac8565b97505b6200270183620027e4565b955060018311156200271f57600d5460649004600101965062002793565b60135415806200272d575082155b156200274457600d54600202600101965062002793565b83600114156200275c57600054600202965062002793565b620027678862002276565b915060009050600c548211156200277f5750600c5481035b6200278d600d548262001282565b60020296505b5050505050909192565b600080831515620027b257600091506200118e565b50828202828482811515620027c357fe5b04146200118a57fe5b6000808284811515620027db57fe5b04949350505050565b6000806000806000620027f66200114c565b6007549094506200289f90600160a060020a0316635c9b2e926040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200283e57600080fd5b5af115156200284c57600080fd5b50505060405180516013546007549192506200101e91600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200056157600080fd5b689c2007651b25000000955092506139c78411156200293157620028c262001adb565b945060018611156200290f57620028ed618ead6200121a6002601a546200279d90919063ffffffff16565b91506200290c60026200121a8862001b66868a63ffffffff6200117a16565b94505b601a5462002929906200121a878663ffffffff6200279d16565b945062002998565b600186111562002950576200294d858763ffffffff6200279d16565b94505b6200297c62001a4962002965600c546200263c565b689c2007651b250000009063ffffffff6200279d16565b905062002995816200121a878663ffffffff6200279d16565b94505b50505050919050565b6000806000806000620029b6600c546200263c565b9350620029c8846200046a886200263c565b9250600090506013546000148015620029df575082155b15620029f057600d54945062002998565b600183111562002a1957600d5460649004600101915062002a118662002af7565b905062002a91565b826001141562002a8657601354151562002a3b57600d54600202915062002a7b565b62002a46866200263c565b6001141562002a5d57600054600202915062002a7b565b62002a75600d5462002a6f8862002b1b565b62001282565b60020291505b62002a118662002af7565b5050600d54600c5485035b600081101562002aa057600080fd5b62002aaa620010c2565b1562002abc5762002929828262001282565b6200299582826200212c565b60006201518060165460125462002adf856200263c565b620151800281151562002aee57fe5b04010392915050565b60008062002b058362002ac8565b905062002b128162002276565b90920392915050565b60008062002b298362002ac8565b9050600c5462002b398262002276565b039392505050565b81548183558181151162002b685760008381526020902062002b6891810190830162002b7e565b505050565b6040516109ec8062002b9c83390190565b62000f0a91905b8082111562001a65576000815560010162002b85560060606040526002805460a060020a60ff0219169055341561001f57600080fd5b6040516040806109ec833981016040528080519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925083161515905061006c57600080fd5b600160a060020a038116151561008157600080fd5b60018054600160a060020a03938416600160a060020a03199182161790915560028054929093169116179055610930806100bc6000396000f3006060604052600436106100955763ffffffff60e060020a60003504166327fe75ed811461009a5780632af4c31e146100af57806334d8521b146100e25780633ccfd60b1461010757806347e7ef241461011a57806385aa61031461013c5780638da5cb5b1461016b578063ab2315111461017e578063cf30901214610191578063eef49ee3146101a4578063fc0c546a146101b7575b600080fd5b34156100a557600080fd5b6100ad6101ca565b005b34156100ba57600080fd5b6100ce600160a060020a0360043516610335565b604051901515815260200160405180910390f35b34156100ed57600080fd5b6100f56103ef565b60405190815260200160405180910390f35b341561011257600080fd5b6100ad6103f5565b341561012557600080fd5b6100ad600160a060020a0360043516602435610714565b341561014757600080fd5b61014f61083c565b604051600160a060020a03909116815260200160405180910390f35b341561017657600080fd5b61014f61084b565b341561018957600080fd5b6100f561085a565b341561019c57600080fd5b6100ce610860565b34156101af57600080fd5b6100f5610881565b34156101c257600080fd5b61014f610887565b60015433600160a060020a039081169116146101e557600080fd5b600154600160a060020a031662fca46f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561022357600080fd5b5af1151561023057600080fd5b50505060405180511515905061024557600080fd5b600154600160a060020a03166342c6498a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561028457600080fd5b5af1151561029157600080fd5b5050506040518051600154909150600160a060020a031662fca46f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156102da57600080fd5b5af115156102e757600080fd5b50505060405180519050101515156102fe57600080fd5b6002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b6000805433600160a060020a0390811691161461035157600080fd5b600160a060020a038216151561036657600080fd5b600054600160a060020a038381169116141561038157600080fd5b600054600160a060020a0380841691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a35060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60055481565b6000805481908190819033600160a060020a0390811691161461041757600080fd5b60025474010000000000000000000000000000000000000000900460ff16151561044057600080fd5b6003546000901161045057600080fd5b60015460009450600160a060020a031662fca46f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561049257600080fd5b5af1151561049f57600080fd5b505050604051805190509250600454600014801561050f5750600154600160a060020a0316631d38bebd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156104f757600080fd5b5af1151561050457600080fd5b505050604051805190505b156105705761054b61053e6064610532601960035461089690919063ffffffff16565b9063ffffffff6108cc16565b859063ffffffff6108e316565b9350610567600c610532866003546108f290919063ffffffff16565b60055560048390555b600454151561057e57600080fd5b60045461059490627861f863ffffffff6108e316565b4210610644576004546105ae90429063ffffffff6108f216565b91506105c382627861f863ffffffff6108cc16565b9050600081116105d257600080fd5b6005546105e99061053e908363ffffffff61089616565b935061060f610602627861f8600c63ffffffff61089616565b849063ffffffff6108e316565b421061061b5760035493505b61064061063182627861f863ffffffff61089616565b6004549063ffffffff6108e316565b6004555b600084111561070e57600354610660908563ffffffff6108f216565b600355600254600160a060020a031663a9059cbb338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156106b957600080fd5b5af115156106c657600080fd5b50505060405180515050600160a060020a0333167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58560405190815260200160405180910390a25b50505050565b60015460009033600160a060020a0390811691161461073257600080fd5b60025474010000000000000000000000000000000000000000900460ff161561075a57600080fd5b600254600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156107aa57600080fd5b5af115156107b757600080fd5b505050604051805190509050816107d9600354836108f290919063ffffffff16565b10156107e457600080fd5b6003546107f7908363ffffffff6108e316565b600355600160a060020a0383167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48360405190815260200160405180910390a2505050565b600154600160a060020a031681565b600054600160a060020a031681565b60045481565b60025474010000000000000000000000000000000000000000900460ff1681565b60035481565b600254600160a060020a031681565b6000808315156108a957600091506108c5565b508282028284828115156108b957fe5b04146108c157fe5b8091505b5092915050565b60008082848115156108da57fe5b04949350505050565b6000828201838110156108c157fe5b6000828211156108fe57fe5b509003905600a165627a7a72305820d194a03a5355bdf89ce1adc4fe81c2c36b0cf4bd329ec218876f5245176307fb0029a165627a7a723058204376475fee6893c20fb2ac11b1238d88858bc878ba542f3a88a3c6dabbf5202a0029\\",\\"binhash\\":\\"7672998d8040b93559895ac68ad9fae9811c2f8af00e9d338fb15ba1d3dfd4f8\\",\\"name\\":\\"Auctions\\",\\"deployName\\":\\"Auctions\\",\\"address\\":\\"b3f2d768fb1f2e341f5fe72f1b207fada4e51fe3\\",\\"txid\\":\\"406bc99b27cfa1769203508899a58056e9dd844d9a79b304c2f5cd004a1102e5\\",\\"createdAt\\":\\"2019-08-02T11:20:50.8559204Z\\",\\"confirmed\\":true,\\"sender\\":\\"qY3Dc6fwnStAfW1gHKLjmD56uwizq58LHQ\\",\\"senderHex\\":\\"9ed56f7c8413238455406e94ce19184e3e9d1a24\\"},\\"AutonomousConverter\\":{\\"source\\":\\"AutonomousConverter:AutonomousConverter\\",\\"abi\\":[{\\"name\\":\\"init\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[{\\"name\\":\\"_reserveToken\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_smartToken\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"getMetBalance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getMetForQtumResult\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"convertQtumToMet\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"returnedMet\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"getQtumBalance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"handleFund\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"smartToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getQtumForMetResult\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"reserveToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"convertMetToQtum\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"returnedQtum\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogFundsIn\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"ConvertQtumToMet\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"qtum\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"met\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"ConvertMetToQtum\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"qtum\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"met\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526004805460a060020a60ff021916905560008054600160a060020a033316600160a060020a0319909116179055610e97806100406000396000f3006060604052600436106100c15763ffffffff60e060020a600035041663184b955981146100c65780632af4c31e146100e85780632eb969881461011b57806330662ff0146101405780633d1c18bf1461015657806375c21d66146101615780637679a8161461017457806379ba50971461017c57806385aa61031461018f5780638da5cb5b146101be578063c3e8fb40146101d1578063d4ee1d90146101e4578063eb73fda4146101f7578063f4325d671461020d578063fca20b0814610220575b600080fd5b6100e6600160a060020a0360043581169060243581169060443516610239565b005b34156100f357600080fd5b610107600160a060020a03600435166102f6565b604051901515815260200160405180910390f35b341561012657600080fd5b61012e61035c565b60405190815260200160405180910390f35b341561014b57600080fd5b61012e60043561036d565b61012e600435610380565b341561016c57600080fd5b61012e6103d9565b6100e66103e5565b341561018757600080fd5b610107610499565b341561019a57600080fd5b6101a261052a565b604051600160a060020a03909116815260200160405180910390f35b34156101c957600080fd5b6101a2610539565b34156101dc57600080fd5b6101a2610548565b34156101ef57600080fd5b6101a2610557565b341561020257600080fd5b61012e600435610566565b341561021857600080fd5b6101a2610573565b341561022b57600080fd5b61012e600435602435610582565b60005433600160a060020a0390811691161461025457600080fd5b60045474010000000000000000000000000000000000000000900460ff161561027c57600080fd5b600480546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a039788161790915560028054821695871695909517909455740100000000000000000000000000000000000000009316919093161774ff00000000000000000000000000000000000000001916179055565b6000805433600160a060020a0390811691161461031257600080fd5b600054600160a060020a038381169116141561032d57600080fd5b506001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161781555b919050565b600061036860016105dc565b905090565b600061037a600083610684565b92915050565b600061038e600083346107b0565b905033600160a060020a03167fd3df7f832b811a37403f56ed7d5866326fe5153072efff60aea4b71b1e1c3958348360405191825260208201526040908101905180910390a2919050565b600061036860006105dc565b600454600160a060020a03166355b5ec646040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561042457600080fd5b5af1151561043157600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561045a57600080fd5b33600160a060020a03167f7d6f066517cd2256fb0abf18362576d1a32243ec9e4424ca53ebe8440a56d4733460405190815260200160405180910390a2565b60015460009033600160a060020a039081169116146104b757600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600454600160a060020a031681565b600054600160a060020a031681565b600254600160a060020a031681565b600154600160a060020a031681565b600061037a600183610684565b600354600160a060020a031681565b6000610590600183856107b0565b905033600160a060020a03167f3f85ac303b8e81c8d3c98a9c8c4c8750745f063c9accff94d670eea196bc8402828560405191825260208201526040908101905180910390a292915050565b6000808260018111156105eb57fe5b14156106025750600160a060020a03301631610357565b600182600181111561061057fe5b14156100c157600354600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561066657600080fd5b5af1151561067357600080fd5b505050604051805190509050610357565b60006001818080808488600181111561069957fe5b14156106a457600094505b6106bd876106b18a6105dc565b9063ffffffff61087416565b60025490945061072190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561070357600080fd5b5af1151561071057600080fd5b50505060405180519050888661088e565b60025490935061078c908490600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561076957600080fd5b5af1151561077657600080fd5b505050604051805191905063ffffffff61087416565b9150610797856105dc565b90506107a48284836108fb565b98975050505050505050565b6000600181818660018111156107c257fe5b14156108515760035460009250600160a060020a03166323b872dd33308760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561082f57600080fd5b5af1151561083c57600080fd5b50505060405180519050151561085157600080fd5b61085b8685610931565b90506108688282876109c4565b92505b50509392505050565b60008282018381101561088357fe5b8091505b5092915050565b60008383836108f0670de0b6b3a76400006108e4816108d8876108d36108c56108c0856108bb8c8c610c0f565b610c34565b610c46565b670de0b6b3a7640000610ce8565b610cfa565b9063ffffffff610d1816565b9063ffffffff610d4316565b979650505050505050565b60008383836108f0670de0b6b3a76400006108e4816108d8856108d38361092761092c82828d8f610c0f565b610ce8565b610d5a565b600061093d8383610d66565b90506000811161094c57600080fd5b600254600160a060020a03166340c10f19338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156109a257600080fd5b5af115156109af57600080fd5b50505060405180519050151561037a57600080fd5b60025460009081908190600160a060020a03166370a082313360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610a1b57600080fd5b5af11515610a2857600080fd5b50505060405180518611159050610a3e57600080fd5b60008411610a4b57600080fd5b610a558686610de4565b925083831015610a6457600080fd5b610a6d866105dc565b915082821015610a7c57600080fd5b600254600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610abb57600080fd5b5af11515610ac857600080fd5b5050506040518051915050808510610adf57600080fd5b600254600160a060020a031663a24835d1338760405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b3557600080fd5b5af11515610b4257600080fd5b50505060405180515060009050866001811115610b5b57fe5b1415610b9757600160a060020a03331683156108fc0284604051600060405180830381858888f193505050501515610b9257600080fd5b61086b565b600354600160a060020a031663a9059cbb338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bed57600080fd5b5af11515610bfa57600080fd5b50505060405180519050151561086b57600080fd5b6000610c2d826108e485670de0b6b3a764000063ffffffff610d1816565b9392505050565b6000610c2d838363ffffffff61087416565b600080808080851515610c5c5760009450610cdf565b8586029350858685811515610c6d57fe5b0414610c7857600080fd5b610c8a86670de0b6b3a7640000610c34565b9250600091505b6001610c9d8484610ce8565b1115610cdb576002610caf8385610c34565b811515610cb857fe5b04905085610cc582610d5a565b11610cd257809150610cd6565b8092505b610c91565b8194505b50505050919050565b6000610c2d838363ffffffff610e5916565b6000610c2d670de0b6b3a76400006108e4858563ffffffff610d1816565b600080831515610d2b5760009150610887565b50828202828482811515610d3b57fe5b041461088357fe5b6000808284811515610d5157fe5b04949350505050565b600061037a8283610cfa565b60025460009081908190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610dac57600080fd5b5af11515610db957600080fd5b505050604051805190509150610dce856105dc565b9050610ddb82858361088e565b95945050505050565b60025460009081908190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e2a57600080fd5b5af11515610e3757600080fd5b505050604051805190509150610e4c856105dc565b9050610ddb8285836108fb565b600082821115610e6557fe5b509003905600a165627a7a72305820f2a07f5f04f3c1ec3991fd075d38f348f1aff0f4a735cd5e65d797f73141a9750029\\",\\"binhash\\":\\"0af288213dc65c157f2b3f52c0ae75118211d0676cba8da136fd711e457b2ed4\\",\\"name\\":\\"AutonomousConverter\\",\\"deployName\\":\\"AutonomousConverter\\",\\"address\\":\\"d27ed9a738d166a68d499b355995bebfbd7b3955\\",\\"txid\\":\\"cf7f0b238adfc2f6fb2bc7972b106c86f08842bc9fe2a7538f96a234b716a563\\",\\"createdAt\\":\\"2019-08-02T11:24:20.6248567Z\\",\\"confirmed\\":true,\\"sender\\":\\"qY3Dc6fwnStAfW1gHKLjmD56uwizq58LHQ\\",\\"senderHex\\":\\"9ed56f7c8413238455406e94ce19184e3e9d1a24\\"},\\"METToken\\":{\\"source\\":\\"METToken:METToken\\",\\"abi\\":[{\\"name\\":\\"name\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getRoot\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"addr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approve\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initMETToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"transferFrom\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"decimals\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint8\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"transferAllowed\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mint\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"export\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approveMore\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"enableMETTransfers\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"autonomousConverter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getSubscription\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"leakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"importMET\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\",\\"indexed\\":false},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"balanceOf\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approveLess\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"subWithdraw\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"cancelSubscription\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"symbol\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destroy\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"roots\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"transfer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"subscribe\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_payPerWeek\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"multiTransfer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"bits\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"resetLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"multiSubWithdraw\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"subs\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"rootsMatch\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"a\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"b\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setRoot\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"data\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"allowance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"multiSubWithdrawFor\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\",\\"indexed\\":false},{\\"name\\":\\"_recipients\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogSubscription\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogCancelSubscription\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Mint\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Approval\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260008054600160a060020a033316600160a060020a0319909116179055612226806100306000396000f3006060604052600436106101f55763ffffffff60e060020a60003504166306fdde0381146101fa5780630754617214610284578063079cf76e146102b3578063095ea7b3146102e457806318160ddd1461031a578063195629de1461032d5780631987b8871461035a57806323b872dd146103795780632af4c31e146103a1578063313ce567146103c057806334fec467146103e95780633bf11a6c146103fc57806340c10f191461042757806346be2310146104495780634892f0af146104d95780634cef0ff6146104ec5780634ee4d7311461050e57806350b48c5e146105215780635b75dd8d146105345780635c9b2e921461057d5780636ffbff9c1461059057806370a082311461074d5780637240eccf1461076c57806379ba50971461078e5780638da5cb5b146107a157806393b212bc146107b457806393d81d58146107d357806395d89b41146107f2578063a24835d114610805578063a454687614610827578063a9059cbb14610846578063aa4925d714610868578063b33fcc7a1461088d578063b625690d146108dc578063baaef4af146108f2578063bae1cc7414610905578063c3f51fca14610954578063cd755b411461097f578063d2d85cf2146109a4578063d4ee1d90146109c9578063dab5f340146109dc578063dd62ed3e146109f2578063e6f4761314610a17575b600080fd5b341561020557600080fd5b61020d610aa6565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610249578082015183820152602001610231565b50505050905090810190601f1680156102765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028f57600080fd5b610297610add565b604051600160a060020a03909116815260200160405180910390f35b34156102be57600080fd5b6102d2600160a060020a0360043516610aec565b60405190815260200160405180910390f35b34156102ef57600080fd5b610306600160a060020a0360043516602435610b07565b604051901515815260200160405180910390f35b341561032557600080fd5b6102d2610b93565b341561033857600080fd5b610358600160a060020a0360043581169060243516604435606435610b99565b005b341561036557600080fd5b610306600160a060020a0360043516610bc6565b341561038457600080fd5b610306600160a060020a0360043581169060243516604435610c29565b34156103ac57600080fd5b610306600160a060020a0360043516610c50565b34156103cb57600080fd5b6103d3610cb7565b60405160ff909116815260200160405180910390f35b34156103f457600080fd5b610306610cbc565b341561040757600080fd5b610358600160a060020a0360043581169060243516604435606435610cc5565b341561043257600080fd5b610306600160a060020a0360043516602435610cec565b341561045457600080fd5b6103066004803577ffffffffffffffffffffffffffffffffffffffffffffffff19169060248035600160a060020a039081169260443590911691606435916084359160c49060a43590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610df095505050505050565b34156104e457600080fd5b610297610f35565b34156104f757600080fd5b610306600160a060020a0360043516602435610f44565b341561051957600080fd5b610306610fed565b341561052c57600080fd5b610297611074565b341561053f57600080fd5b610559600160a060020a0360043581169060243516611083565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561058857600080fd5b6102d26110bb565b341561059b57600080fd5b61030677ffffffffffffffffffffffffffffffffffffffffffffffff1960048035821691602480359091169190606490604435908101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506110c195505050505050565b341561075857600080fd5b6102d2600160a060020a03600435166113a8565b341561077757600080fd5b610306600160a060020a03600435166024356113c3565b341561079957600080fd5b6103066113fc565b34156107ac57600080fd5b61029761148d565b34156107bf57600080fd5b610306600160a060020a036004351661149c565b34156107de57600080fd5b610306600160a060020a03600435166114cd565b34156107fd57600080fd5b61020d6115a1565b341561081057600080fd5b610306600160a060020a03600435166024356115d8565b341561083257600080fd5b6102d2600160a060020a03600435166116dc565b341561085157600080fd5b610306600160a060020a03600435166024356116ee565b341561087357600080fd5b610306600435602435600160a060020a0360443516611713565b341561089857600080fd5b61030660046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506117e595505050505050565b34156108e757600080fd5b610358600435611808565b34156108fd57600080fd5b6103586118cf565b341561091057600080fd5b6102d2600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061190c95505050505050565b341561095f57600080fd5b610358600160a060020a0360043581169060243516604435606435611954565b341561098a57600080fd5b610559600160a060020a0360043581169060243516611a3b565b34156109af57600080fd5b610306600160a060020a0360043581169060243516611a67565b34156109d457600080fd5b610297611a8e565b34156109e757600080fd5b610358600435611a9d565b34156109fd57600080fd5b6102d2600160a060020a0360043581169060243516611ab8565b3415610a2257600080fd5b6102d2600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611ae395505050505050565b60408051908101604052600981527f4d6574726f6e6f6d650000000000000000000000000000000000000000000000602082015281565b600654600160a060020a031681565b600160a060020a03166000908152600a602052604090205490565b600030600160a060020a031683600160a060020a031614151515610b2a57600080fd5b600160a060020a03338116600081815260086020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60025490565b60005433600160a060020a03908116911614610bb457600080fd5b610bc084848484610cc5565b50505050565b6000805433600160a060020a03908116911614610be257600080fd5b600160a060020a0382161515610bf757600080fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60095460009060ff161515610c3d57600080fd5b610c48848484611b56565b949350505050565b6000805433600160a060020a03908116911614610c6c57600080fd5b600054600160a060020a0383811691161415610c8757600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b601281565b60095460ff1681565b60005433600160a060020a03908116911614610ce057600080fd5b610bc084848484611954565b60065460009033600160a060020a0390811691161480610d1a575060075433600160a060020a039081169116145b1515610d2557600080fd5b600160a060020a038316600090815260046020526040902054610d4e908363ffffffff611dcc16565b600160a060020a038416600090815260046020526040902055600254610d7a908363ffffffff611dcc16565b600255600160a060020a0383167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405190815260200160405180910390a282600160a060020a031660006000805160206121db8339815191528460405190815260200160405180910390a350600192915050565b600754600090600160a060020a03161515610e0a57600080fd5b600754600160a060020a031663f29b20403389898989898960405160e060020a63ffffffff8a16028152600160a060020a038089166004830190815277ffffffffffffffffffffffffffffffffffffffffffffffff1989166024840152878216604484015290861660648301526084820185905260a4820184905260e060c48301908152909160e40183818151815260200191508051906020019080838360005b83811015610ec3578082015183820152602001610eab565b50505050905090810190601f168015610ef05780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1515610f1457600080fd5b5af11515610f2157600080fd5b505050604051805198975050505050505050565b600754600160a060020a031681565b600160a060020a03338116600090815260086020908152604080832093861683529290529081205481610f7d828563ffffffff611dcc16565b600160a060020a033381166000818152600860209081526040808320948b16808452949091529081902084905592935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a3506001949350505050565b60095460009060ff161580156110555750600654600160a060020a0316631d38bebd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561103d57600080fd5b5af1151561104a57600080fd5b505050604051805190505b151561106057600080fd5b506009805460ff1916600190811790915590565b600554600160a060020a031681565b600160a060020a039182166000908152600b602090815260408083209390941682529190915220805460018201546002909201549092565b60035481565b600754600090600160a060020a031615156110db57600080fd5b600754600160a060020a0316636ffbff9c8a8a8a8a8a8a8a8a6040518963ffffffff1660e060020a028152600401808977ffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020018877ffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b838110156111d25780820151838201526020016111ba565b5050505090500187810386528c818151815260200191508051906020019080838360005b8381101561120e5780820151838201526020016111f6565b50505050905090810190601f16801561123b5780820380516001836020036101000a031916815260200191505b5087810385528b818151815260200191508051906020019060200280838360005b8381101561127457808201518382015260200161125c565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b838110156112b357808201518382015260200161129b565b50505050905001878103835289818151815260200191508051906020019060200280838360005b838110156112f25780820151838201526020016112da565b50505050905001878103825288818151815260200191508051906020019080838360005b8381101561132e578082015183820152602001611316565b50505050905090810190601f16801561135b5780820380516001836020036101000a031916815260200191505b509e505050505050505050505050505050602060405180830381600087803b151561138557600080fd5b5af1151561139257600080fd5b50505060405180519a9950505050505050505050565b600160a060020a031660009081526004602052604090205490565b600160a060020a03338116600090815260086020908152604080832093861683529290529081205481610f7d828563ffffffff611ddb16565b60015460009033600160a060020a0390811691161461141a57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600054600160a060020a031681565b60095460009060ff1615156114b057600080fd5b6114ba8233611ded565b15156114c557600080fd5b506001919050565b600160a060020a033381166000908152600b60209081526040808320938516835292905290812054151561150057600080fd5b600160a060020a033381166000908152600b6020908152604080832093861683529290522060010154151561153457600080fd5b600160a060020a033381166000818152600b602090815260408083209487168084529490915280822082815560018101839055600201919091557f4bc04e574b4f2b061a663b3328263978d3adeab9e4ea9526441c159cdee4eca8905160405180910390a3506001919050565b60408051908101604052600381527f4d45540000000000000000000000000000000000000000000000000000000000602082015281565b60055460009033600160a060020a0390811691161480611606575060075433600160a060020a039081169116145b151561161157600080fd5b600160a060020a03831660009081526004602052604090205461163a908363ffffffff611ddb16565b600160a060020a038416600090815260046020526040902055600254611666908363ffffffff611ddb16565b600255600160a060020a0383167f81325e2a6c442af9d36e4ee9697f38d5f4bf0837ade0f6c411c6a40af7c057ee8360405190815260200160405180910390a2600083600160a060020a03166000805160206121db8339815191528460405190815260200160405180910390a350600192915050565b600a6020526000908152604090205481565b60095460009060ff16151561170257600080fd5b61170c8383611f8b565b9392505050565b60004284101561172257600080fd5b82151561172e57600080fd5b600160a060020a038216151561174357600080fd5b606060405190810160409081528582526020808301869052818301879052600160a060020a033381166000908152600b8352838120918716815291522081518155602082015181600101556040820151816002015590505081600160a060020a031633600160a060020a03167f5c632ccb5c42002836e0c49ef1f6d67e925c5e77c1048ddbb47a9bf6a0f2d01260405160405180910390a35060019392505050565b60095460009060ff1615156117f957600080fd5b61180282612118565b92915050565b60065433600160a060020a0390811691161480611833575060075433600160a060020a039081169116145b151561183e57600080fd5b600654600160a060020a03166322ce61b26040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561187d57600080fd5b5af1151561188a57600080fd5b505050604051805190506118ab600354600254611dcc90919063ffffffff16565b11156118b657600080fd5b6003546118c9908263ffffffff611dcc16565b60035550565b60065433600160a060020a03908116911614806118fa575060075433600160a060020a039081169116145b151561190557600080fd5b6000600355565b600080805b835181101561194d5761193984828151811061192957fe5b9060200190602002015133611ded565b15611945576001909101905b600101611911565b5092915050565b60005433600160a060020a0390811691161461196f57600080fd5b600554600160a060020a03161580156119905750600160a060020a03841615155b151561199b57600080fd5b600654600160a060020a03161580156119bc5750600160a060020a03831615155b15156119c757600080fd5b60058054600160a060020a0380871673ffffffffffffffffffffffffffffffffffffffff19928316179092556006805492861692909116919091179055611a14828263ffffffff61219816565b6002819055600160a060020a03909416600090815260046020526040902093909355505050565b600b60209081526000928352604080842090915290825290208054600182015460029092015490919083565b600160a060020a039081166000908152600a60205260408082205493909216815220541490565b600154600160a060020a031681565b600160a060020a0333166000908152600a6020526040902055565b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b60008060008351855114611af657600080fd5b5060009050805b8451811015611b4e57611b3a858281518110611b1557fe5b90602001906020020151858381518110611b2b57fe5b90602001906020020151611ded565b15611b46576001909101905b600101611afd565b509392505050565b600080600160a060020a0384161515611b6e57600080fd5b600654600160a060020a03858116911614801590611b9a5750600654600160a060020a03868116911614155b1515611ba557600080fd5b30600160a060020a031684600160a060020a031614158015611bd9575030600160a060020a031685600160a060020a031614155b1515611be457600080fd5b600654600160a060020a03166355b5ec646040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611c2357600080fd5b5af11515611c3057600080fd5b50505060405180519050905080600160a060020a031684600160a060020a031614158015611c70575080600160a060020a031685600160a060020a031614155b1515611c7b57600080fd5b600554600160a060020a0386811691161415611c9657600080fd5b600160a060020a038086166000908152600860209081526040808320339094168352929052205483901015611cca57600080fd5b600160a060020a038516600090815260046020526040902054611cf3908463ffffffff611ddb16565b600160a060020a038087166000908152600460205260408082209390935590861681522054611d28908463ffffffff611dcc16565b600160a060020a03808616600090815260046020908152604080832094909455888316825260088152838220339093168252919091522054611d70908463ffffffff611ddb16565b600160a060020a03808716600081815260086020908152604080832033861684529091529081902093909355908616916000805160206121db8339815191529086905190815260200160405180910390a3506001949350505050565b60008282018381101561170c57fe5b600082821115611de757fe5b50900390565b600160a060020a038083166000908152600b6020908152604080832093851683529290529081208054829081908190118015611e2a575082544290105b8015611e3a575060008360010154115b15611f7d57611e6962093a80611e5d856002015442611ddb90919063ffffffff16565b9063ffffffff6121c316565b9150611e8283600101548361219890919063ffffffff16565b9050600082118015611ead5750600160a060020a038616600090815260046020526040902054819010155b15611f7d57600160a060020a038087166000818152600b60209081526040808320948a1683529381528382204260029091015591815260049091522054611efa908263ffffffff611ddb16565b600160a060020a038088166000908152600460205260408082209390935590871681522054611f2f908263ffffffff611dcc16565b600160a060020a03808716600081815260046020526040908190209390935591908816906000805160206121db8339815191529084905190815260200160405180910390a360019350611f82565b600093505b50505092915050565b600080600160a060020a0384161515611fa357600080fd5b600654600160a060020a0385811691161415611fbe57600080fd5b30600160a060020a031684600160a060020a031614151515611fdf57600080fd5b600554600160a060020a0385811691161415611ffa57600080fd5b600654600160a060020a03166355b5ec646040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561203957600080fd5b5af1151561204657600080fd5b5050506040518051915050600160a060020a03848116908216141561206a57600080fd5b600160a060020a033316600090815260046020526040902054612093908463ffffffff611ddb16565b600160a060020a0333811660009081526004602052604080822093909355908616815220546120c8908463ffffffff611dcc16565b600160a060020a0380861660008181526004602052604090819020939093559133909116906000805160206121db8339815191529086905190815260200160405180910390a35060019392505050565b60008080805b845183101561218d57606085848151811061213557fe5b906020019060200201519060020a9004915084838151811061215357fe5b906020019060200201516bffffffffffffffffffffffff16905061217782826116ee565b151561218257600080fd5b60019092019161211e565b506001949350505050565b6000808315156121ab576000915061194d565b508282028284828115156121bb57fe5b041461170c57fe5b60008082848115156121d157fe5b049493505050505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820e771a652cbcf0ea8ce6ea34e4843db1aa33959d4bcb5058af27002aa731f83c50029\\",\\"binhash\\":\\"0e54e7a883c5a99cb6bfccde856bb50c5253f504d23b61d1767be3063ecffce0\\",\\"name\\":\\"METToken\\",\\"deployName\\":\\"METToken\\",\\"address\\":\\"16d74dac67ad7af791427a00e5c687c204b733ab\\",\\"txid\\":\\"e93676648b6d1f3a5241d1f3fbb48b650a266a6489b39b6665cb450c5869c11c\\",\\"createdAt\\":\\"2019-08-02T11:28:46.7837398Z\\",\\"confirmed\\":true,\\"sender\\":\\"qY3Dc6fwnStAfW1gHKLjmD56uwizq58LHQ\\",\\"senderHex\\":\\"9ed56f7c8413238455406e94ce19184e3e9d1a24\\"},\\"Proceeds\\":{\\"source\\":\\"Proceeds:Proceeds\\",\\"abi\\":[{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"closeAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"autonomousConverter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"handleFund\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initProceeds\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"LogProceedsIn\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogClosedAuction\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260008054600160a060020a033316600160a060020a0319909116179055610627806100306000396000f30060606040526004361061007f5763ffffffff60e060020a6000350416632af4c31e8114610084578063378252f2146100b757806350b48c5e146100cc5780637679a816146100fb57806379ba50971461010357806385aa6103146101165780638da5cb5b14610129578063ae71d5da1461013c578063d4ee1d9014610161575b600080fd5b341561008f57600080fd5b6100a3600160a060020a0360043516610174565b604051901515815260200160405180910390f35b34156100c257600080fd5b6100ca6101db565b005b34156100d757600080fd5b6100df6103d9565b604051600160a060020a03909116815260200160405180910390f35b6100ca6103e8565b341561010e57600080fd5b6100a3610442565b341561012157600080fd5b6100df6104d3565b341561013457600080fd5b6100df6104e2565b341561014757600080fd5b6100ca600160a060020a03600435811690602435166104f1565b341561016c57600080fd5b6100df61059f565b6000805433600160a060020a0390811691161461019057600080fd5b600054600160a060020a03838116911614156101ab57600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b60035460009081908190600160a060020a031663212884006040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561022157600080fd5b5af1151561022e57600080fd5b5050506040518051600354909450600160a060020a0316905063496a698d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561027a57600080fd5b5af1151561028757600080fd5b505050604051805192506102c090506127106102b4600160a060020a03301631601963ffffffff6105ae16565b9063ffffffff6105e416565b905060008111801561032f5750600354600160a060020a031663fde9cded8460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561031557600080fd5b5af1151561032257600080fd5b5050506040518051905082115b801561033c575081600454105b156103d4576004829055600254600160a060020a0316637679a816826040518263ffffffff1660e060020a0281526004016000604051808303818588803b151561038557600080fd5b5af1151561039257600080fd5b5050505033600160a060020a03167fce45c14a6c726f7154c3b98d500c578e3d8e91aeb29d5f9d12edb07b88f854828260405190815260200160405180910390a25b505050565b600254600160a060020a031681565b60035433600160a060020a0390811691161461040357600080fd5b33600160a060020a03167f6149d6fbfad1c173e29b8de83d7df1b09c0eaba8c3040a4c287f6f1333e60e273460405190815260200160405180910390a2565b60015460009033600160a060020a0390811691161461046057600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600354600160a060020a031681565b600054600160a060020a031681565b60005433600160a060020a0390811691161461050c57600080fd5b600354600160a060020a031615801561052d5750600160a060020a03811615155b151561053857600080fd5b600254600160a060020a03161580156105595750600160a060020a03821615155b151561056457600080fd5b60028054600160a060020a0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560038054929093169116179055565b600154600160a060020a031681565b6000808315156105c157600091506105dd565b508282028284828115156105d157fe5b04146105d957fe5b8091505b5092915050565b60008082848115156105f257fe5b049493505050505600a165627a7a7230582026f244ada8d4ac34f8743488e723dd11f31155bff4b093b29eda39d3c8486a500029\\",\\"binhash\\":\\"9dd1bbe7fa2e881774f4784e42c16d09dc6671aec6acd2a1b976cc2d59f5d0a5\\",\\"name\\":\\"Proceeds\\",\\"deployName\\":\\"Proceeds\\",\\"address\\":\\"4af5b504d02306dbf10ce76214944fb518d8af82\\",\\"txid\\":\\"9dfe467ab5c23a93752a4afb829b40c8ee67aee9ce9689cbbb340a6c511d0f38\\",\\"createdAt\\":\\"2019-08-02T11:19:09.1629309Z\\",\\"confirmed\\":true,\\"sender\\":\\"qY3Dc6fwnStAfW1gHKLjmD56uwizq58LHQ\\",\\"senderHex\\":\\"9ed56f7c8413238455406e94ce19184e3e9d1a24\\"},\\"Proposals\\":{\\"source\\":\\"Proposals:Proposals\\",\\"abi\\":[{\\"name\\":\\"proposals\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"validator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"votingPeriod\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"closeProposal\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"setValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"validator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"voteForProposal\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_support\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"proposeNewValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"actions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"proposeRemoveValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"proposeNewThreshold\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateVotingPeriod\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_t\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"constructor\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogVoted\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"voter\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"support\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogProposalCreated\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"creator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogProposalClosed\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526213c68060025534156200001757600080fd5b60008054600160a060020a03191633600160a060020a0316179055600480546001810162000046838262000101565b50600091825260209091207f61646476616c0000000000000000000000000000000000000000000000000000910155600480546001810162000089838262000101565b50600091825260209091207f72656d6f766576616c00000000000000000000000000000000000000000000009101556004805460018101620000cc838262000101565b50600091825260209091207f7570646174657468726573686f6c64000000000000000000000000000000000091015562000151565b8154818355818115116200012857600083815260209020620001289181019083016200012d565b505050565b6200014e91905b808211156200014a576000815560010162000134565b5090565b90565b61143d80620001616000396000f3006060604052600436106100c15763ffffffff60e060020a600035041663013cf08b81146100c657806302a251a3146101225780630386a016146101475780631327d3d81461015f5780632af4c31e146101925780633a5381b5146101b15780636505e8e8146101e057806379ba5097146101fb5780637afc7f131461020e57806383240f83146102305780638da5cb5b14610246578063a4ed7cda14610259578063d4ee1d901461027b578063e0e887d01461028e578063ef00ef43146102a4575b600080fd5b34156100d157600080fd5b6100dc6004356102ba565b6040519687526020870195909552604080870194909452600160a060020a039092166060860152608085015260a084015290151560c083015260e0909101905180910390f35b341561012d57600080fd5b610135610314565b60405190815260200160405180910390f35b341561015257600080fd5b61015d60043561031a565b005b341561016a57600080fd5b61017e600160a060020a0360043516610593565b604051901515815260200160405180910390f35b341561019d57600080fd5b61017e600160a060020a03600435166105f6565b34156101bc57600080fd5b6101c461065d565b604051600160a060020a03909116815260200160405180910390f35b34156101eb57600080fd5b61015d600435602435151561066c565b341561020657600080fd5b61017e61089d565b341561021957600080fd5b610135600160a060020a036004351660243561092f565b341561023b57600080fd5b610135600435610b30565b341561025157600080fd5b6101c4610b4f565b341561026457600080fd5b61015d600160a060020a0360043516602435610b5e565b341561028657600080fd5b6101c4610d5d565b341561029957600080fd5b61015d600435610d6c565b34156102af57600080fd5b61017e600435610ec0565b60058054829081106102c857fe5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460079096015494965092949193600160a060020a0390911692919060ff1687565b60025481565b60008060058381548110151561032c57fe5b90600052602060002090600902016002015460001415151561034d57600080fd5b600354600160a060020a03166342cde4e86040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561038c57600080fd5b5af1151561039957600080fd5b505050604051805190506005848154811015156103b257fe5b9060005260206000209060090201600501541015156103fa576103f5836005858154811015156103de57fe5b906000526020600020906009020160040154610ef1565b61058e565b600580548490811061040857fe5b90600052602060002090600902016002015442111561058e5760048054600190811061043057fe5b600091825260209091200154600580548590811061044a57fe5b906000526020600020906009020160010154600019161480156104ae5750600580548490811061047657fe5b90600052602060002090600902016005015460058481548110151561049757fe5b906000526020600020906009020160060180549050145b1561058e57600354600290600160a060020a031663274982406040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156104f557600080fd5b5af1151561050257600080fd5b5050506040518051905060010181151561051857fe5b6003549190049250600190600160a060020a03166342cde4e86040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561055f57600080fd5b5af1151561056c57600080fd5b50505060405180519050039050818110156105845750805b61058e8382610ef1565b505050565b6000805433600160a060020a039081169116146105af57600080fd5b600160a060020a03821615156105c457600080fd5b5060038054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b6000805433600160a060020a0390811691161461061257600080fd5b600054600160a060020a038381169116141561062d57600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b600354600160a060020a031681565b600354600160a060020a031663facd743b3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156106bc57600080fd5b5af115156106c957600080fd5b5050506040518051905015156106de57600080fd5b60058054839081106106ec57fe5b90600052602060002090600902016002015460001415151561070d57600080fd5b600580548390811061071b57fe5b9060005260206000209060090201600201544210151561073a57600080fd5b600580548390811061074857fe5b60009182526020808320600160a060020a03331684526008600990930201919091019052604090205460ff161561077e57600080fd5b600580548390811061078c57fe5b906000526020600020906009020160060180548060010182816107af9190611312565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03161790556005805460019190849081106107f357fe5b6000918252602080832033600160a060020a03168452600992909202909101600801905260409020805460ff1916911515919091179055801561085957600580548390811061083e57fe5b60009182526020909120600560099092020101805460010190555b33600160a060020a0316827f90bc9818c321b37fcc42e126e9f66c87cfb1ae4e5246999564448b0cfba3957683604051901515815260200160405180910390a35050565b60015460009033600160a060020a039081169116146108bb57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b90565b6003546000908190600160a060020a031663facd743b3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561098457600080fd5b5af1151561099157600080fd5b5050506040518051905015156109a657600080fd5b600160a060020a03841615156109bb57600080fd5b600354600160a060020a031663facd743b8560405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610a0b57600080fd5b5af11515610a1857600080fd5b5050506040518051159050610a2c57600080fd5b6000831115610b0157600354600160a060020a031663274982406040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a7457600080fd5b5af11515610a8157600080fd5b5050506040518051600354909250600160a060020a0316905063faa8fd7c600183018560405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610adf57600080fd5b5af11515610aec57600080fd5b505050604051805190501515610b0157600080fd5b610b28843360046000815481101515610b1657fe5b9060005260206000209001548661122d565b949350505050565b6004805482908110610b3e57fe5b600091825260209091200154905081565b600054600160a060020a031681565b600354600090600160a060020a031663facd743b3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610bb157600080fd5b5af11515610bbe57600080fd5b505050604051805190501515610bd357600080fd5b600160a060020a0383161515610be857600080fd5b600354600160a060020a031663facd743b8460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c3857600080fd5b5af11515610c4557600080fd5b505050604051805190501515610c5a57600080fd5b6000821115610d3057600354600160a060020a031663274982406040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ca257600080fd5b5af11515610caf57600080fd5b5050506040518051600354909250600160a060020a0316905063faa8fd7c60001983018460405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610d0e57600080fd5b5af11515610d1b57600080fd5b505050604051805190501515610d3057600080fd5b610d57833360046001815481101515610d4557fe5b9060005260206000209001548561122d565b50505050565b600154600160a060020a031681565b600354600090600160a060020a031663facd743b3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610dbf57600080fd5b5af11515610dcc57600080fd5b505050604051805190501515610de157600080fd5b600354600160a060020a031663274982406040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e2057600080fd5b5af11515610e2d57600080fd5b5050506040518051600354909250600160a060020a0316905063faa8fd7c828460405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610e8857600080fd5b5af11515610e9557600080fd5b505050604051805190501515610eaa57600080fd5b61058e60003360046002815481101515610d4557fe5b6000805433600160a060020a03908116911614610edc57600080fd5b811515610ee857600080fd5b50600255600190565b6001600583815481101515610f0257fe5b60009182526020822060099190910201600701805460ff191692151592909217909155600480549091908110610f3457fe5b6000918252602090912001546005805484908110610f4e57fe5b906000526020600020906009020160010154600019161415610ffe5760035460058054600160a060020a0390921691634d238c8e919085908110610f8e57fe5b6000918252602090912060036009909202010154600160a060020a031660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610fe957600080fd5b5af11515610ff657600080fd5b5050506110d3565b60048054600190811061100d57fe5b600091825260209091200154600580548490811061102757fe5b9060005260206000209060090201600101546000191614156110d35760035460058054600160a060020a03909216916340a141ff91908590811061106757fe5b6000918252602090912060036009909202010154600160a060020a031660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156110c257600080fd5b5af115156110cf57600080fd5b5050505b801561113957600354600160a060020a031663d7d7442f8260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561112157600080fd5b5af1151561112e57600080fd5b505050604051805150505b600580548390811061114757fe5b6000918252602090912060016009909202010154600580548490811061116957fe5b906000526020600020906009020160030160009054906101000a9004600160a060020a0316600160a060020a0316837f4cbe9f3cd2820adb379ba937ed862786a0fa5c6dba0ac85ed6b6d465acde524e846005878154811015156111c957fe5b9060005260206000209060090201600201546005888154811015156111ea57fe5b9060005260206000209060090201600501546001604051938452602084019290925260408084019190915290151560608301526080909101905180910390a45050565b6000806000600580548091906001016112469190611336565b92506002544201915060058381548110151561125e57fe5b60009182526020909120600990910201838155600181018690556002810183905560038101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038a16908117909155600482018690559091508590857fecf70ba9763aea0fd53cd214bdac13367d476976458426b06f31c992f3fcf8fe818a87604051928352600160a060020a0390911660208301526040808301919091526060909101905180910390a45050949350505050565b81548183558181151161058e5760008381526020902061058e918101908301611362565b81548183558181151161058e5760090281600902836000526020600020918201910161058e9190611380565b61092c91905b8082111561137c5760008155600101611368565b5090565b61092c91905b8082111561137c576000808255600182018190556002820181905560038201805473ffffffffffffffffffffffffffffffffffffffff1916905560048201819055600582018190556113db60068301826113f0565b5060078101805460ff19169055600901611386565b508054600082559060005260206000209081019061140e9190611362565b505600a165627a7a72305820755c3de433e090c98932961276271b7dab9808b37a0bc54dc828831e3992206a0029\\",\\"binhash\\":\\"28897be1e457b68ccdf287ac0ab2bfce7d795479d3cc05c594fc147dde8096cc\\",\\"name\\":\\"Proposals\\",\\"deployName\\":\\"Proposals\\",\\"address\\":\\"a6ca7ea28a78572ca06c8376555d8896f37ec6f8\\",\\"txid\\":\\"28c212a36ce856c221c07c0c199ec6b902bdf910110f031dbe74b07ec2388bac\\",\\"createdAt\\":\\"2019-08-02T11:17:16.6886602Z\\",\\"confirmed\\":true,\\"sender\\":\\"qY3Dc6fwnStAfW1gHKLjmD56uwizq58LHQ\\",\\"senderHex\\":\\"9ed56f7c8413238455406e94ce19184e3e9d1a24\\"},\\"SmartToken\\":{\\"source\\":\\"SmartToken:SmartToken\\",\\"abi\\":[{\\"name\\":\\"minter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initSmartToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mint\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"autonomousConverter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"leakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"balanceOf\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destroy\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"resetLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"Mint\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260008054600160a060020a033316600160a060020a03199091161790556109a2806100306000396000f3006060604052600436106100f05763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630754617281146100f55780630b0c8f1f1461012457806318160ddd1461014e5780631987b887146101735780632af4c31e146101a657806340c10f19146101c55780634892f0af146101e757806350b48c5e146101fa5780635c9b2e921461020d57806370a082311461022057806379ba50971461023f5780638da5cb5b14610252578063a24835d114610265578063b625690d14610287578063baaef4af1461029d578063c3f51fca146102b0578063d4ee1d90146102db575b600080fd5b341561010057600080fd5b6101086102ee565b604051600160a060020a03909116815260200160405180910390f35b341561012f57600080fd5b61014c600160a060020a03600435811690602435166044356102fd565b005b341561015957600080fd5b610161610331565b60405190815260200160405180910390f35b341561017e57600080fd5b610192600160a060020a0360043516610337565b604051901515815260200160405180910390f35b34156101b157600080fd5b610192600160a060020a036004351661039a565b34156101d057600080fd5b610192600160a060020a0360043516602435610401565b34156101f257600080fd5b610108610517565b341561020557600080fd5b610108610526565b341561021857600080fd5b610161610535565b341561022b57600080fd5b610161600160a060020a036004351661053b565b341561024a57600080fd5b610192610556565b341561025d57600080fd5b6101086105e7565b341561027057600080fd5b610192600160a060020a03600435166024356105f6565b341561029257600080fd5b61014c60043561070c565b34156102a857600080fd5b61014c6107ec565b34156102bb57600080fd5b61014c600160a060020a0360043581169060243516604435606435610829565b34156102e657600080fd5b610108610910565b600654600160a060020a031681565b60005433600160a060020a0390811691161461031857600080fd5b61032c838383670de0b6b3a7640000610829565b505050565b60025490565b6000805433600160a060020a0390811691161461035357600080fd5b600160a060020a038216151561036857600080fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b6000805433600160a060020a039081169116146103b657600080fd5b600054600160a060020a03838116911614156103d157600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b60065460009033600160a060020a039081169116148061042f575060075433600160a060020a039081169116145b151561043a57600080fd5b600160a060020a038316600090815260046020526040902054610463908363ffffffff61091f16565b600160a060020a03841660009081526004602052604090205560025461048f908363ffffffff61091f16565b600255600160a060020a0383167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b600754600160a060020a031681565b600554600160a060020a031681565b60035481565b600160a060020a031660009081526004602052604090205490565b60015460009033600160a060020a0390811691161461057457600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600054600160a060020a031681565b60055460009033600160a060020a0390811691161480610624575060075433600160a060020a039081169116145b151561062f57600080fd5b600160a060020a038316600090815260046020526040902054610658908363ffffffff61093916565b600160a060020a038416600090815260046020526040902055600254610684908363ffffffff61093916565b600255600160a060020a0383167f81325e2a6c442af9d36e4ee9697f38d5f4bf0837ade0f6c411c6a40af7c057ee8360405190815260200160405180910390a2600083600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60065433600160a060020a0390811691161480610737575060075433600160a060020a039081169116145b151561074257600080fd5b600654600160a060020a03166322ce61b26040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561079a57600080fd5b5af115156107a757600080fd5b505050604051805190506107c860035460025461091f90919063ffffffff16565b11156107d357600080fd5b6003546107e6908263ffffffff61091f16565b60035550565b60065433600160a060020a0390811691161480610817575060075433600160a060020a039081169116145b151561082257600080fd5b6000600355565b60005433600160a060020a0390811691161461084457600080fd5b600554600160a060020a03161580156108655750600160a060020a03841615155b151561087057600080fd5b600654600160a060020a03161580156108915750600160a060020a03831615155b151561089c57600080fd5b60058054600160a060020a0380871673ffffffffffffffffffffffffffffffffffffffff199283161790925560068054928616929091169190911790556108e9828263ffffffff61094b16565b6002819055600160a060020a03909416600090815260046020526040902093909355505050565b600154600160a060020a031681565b60008282018381101561092e57fe5b8091505b5092915050565b60008282111561094557fe5b50900390565b60008083151561095e5760009150610932565b5082820282848281151561096e57fe5b041461092e57fe00a165627a7a723058200ce0e8a7847dabf04ba64698744b86be9abbc72de50f4e749fba8e55a16f9db80029\\",\\"binhash\\":\\"431117d8de1843d50dea8bb431da682ef729a4595d2239c1a7702e85ef2b83d6\\",\\"name\\":\\"SmartToken\\",\\"deployName\\":\\"SmartToken\\",\\"address\\":\\"572087e3d14b56d913eecf64fac3758c1eee5c88\\",\\"txid\\":\\"c701f8bf6cc1e318be750406bfe14ac7daa13a9e3ca6e67d1270dd6becce38ef\\",\\"createdAt\\":\\"2019-08-02T11:25:39.9494208Z\\",\\"confirmed\\":true,\\"sender\\":\\"qY3Dc6fwnStAfW1gHKLjmD56uwizq58LHQ\\",\\"senderHex\\":\\"9ed56f7c8413238455406e94ce19184e3e9d1a24\\"},\\"TokenPorter\\":{\\"source\\":\\"TokenPorter:TokenPorter\\",\\"abi\\":[{\\"name\\":\\"importSequence\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"chainHopStartTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"validator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"mintToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"recipientAddress\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"validators\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"claimables\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setExportFeePerTenThousand\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_exportFee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"removeDestinationChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"burnSequence\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"importMET\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\",\\"indexed\\":false},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"exportedBurns\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setMinimumExportFee\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_minimumExportFee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setChainHopStartTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mintHashes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumExportFee\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"burnHashes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"exportFee\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"addDestinationChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_contractAddress\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"burnAtTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destinationChains\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"export\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"tokenOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"claimReceivables\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"recipients\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"merkleRoots\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"LogExportReceipt\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"exporter\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogImportRequest\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amountToImport\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"exportTimeStamp\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogImport\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"ExportOnChainClaimedReceiptLog\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260016005556001600655426202a3000160075564e8d4a5100060085560326009556006604051805910620000355750595b9080825280602002602001820160405250600b9080516200005b9291602001906200007d565b5060008054600160a060020a03191633600160a060020a0316179055620000ed565b828054828255906000526020600020908101928215620000bb579160200282015b82811115620000bb5782518255916020019190600101906200009e565b50620000c9929150620000cd565b5090565b620000ea91905b80821115620000c95760008155600101620000d4565b90565b6124da80620000fd6000396000f3006060604052600436106101715763ffffffff60e060020a6000350416630245c5c881146101765780631327d3d81461019b5780632af4c31e146101ce578063386c66b9146101ed5780633a5381b51461020057806341819f831461022f5780634f530565146102ef57806360ab77d514610314578063620160831461032a57806367602c591461034a5780636ffbff9c1461035d57806379ba5097146105095780637a6e38541461051c5780637e880f771461053257806385aa6103146105485780638da5cb5b1461055b5780638f43cc201461056e5780639097dc9014610584578063962f1f3e1461059a5780639da6772a146105ad578063a8c36bc6146105c3578063b27e7244146105d6578063c385eb0f14610602578063c554a60014610618578063d4ee1d901461063f578063d8b194a714610652578063da7220d014610668578063f29b204014610688578063fb8b01971461070d578063fc0c546a1461075c578063fe5a53771461076f575b600080fd5b341561018157600080fd5b610189610785565b60405190815260200160405180910390f35b34156101a657600080fd5b6101ba600160a060020a036004351661078b565b604051901515815260200160405180910390f35b34156101d957600080fd5b6101ba600160a060020a03600435166107ee565b34156101f857600080fd5b610189610855565b341561020b57600080fd5b61021361085b565b604051600160a060020a03909116815260200160405180910390f35b341561023a57600080fd5b6101ba60048035600160c060020a0319169060248035600160a060020a03169160443591606435919060a49060843590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496863596602080820135975091955060608101945060409081013586018083019450359250829182810201905190810160405280939291908181526020018383602002808284375094965061086a95505050505050565b34156102fa57600080fd5b610189600160a060020a0360043581169060243516610c36565b341561031f57600080fd5b6101ba600435610c53565b341561033557600080fd5b6101ba600160c060020a031960043516610c78565b341561035557600080fd5b610189610d11565b341561036857600080fd5b6101ba600160c060020a031960048035821691602480359091169190606490604435908101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650610d1795505050505050565b341561051457600080fd5b6101ba61123f565b341561052757600080fd5b6101896004356112d1565b341561053d57600080fd5b6101ba6004356112f0565b341561055357600080fd5b610213611322565b341561056657600080fd5b610213611331565b341561057957600080fd5b6101ba600435611340565b341561058f57600080fd5b610189600435611372565b34156105a557600080fd5b610189611384565b34156105b857600080fd5b61018960043561138a565b34156105ce57600080fd5b61018961139c565b34156105e157600080fd5b6101ba600160c060020a031960043516600160a060020a03602435166113a2565b341561060d57600080fd5b610189600435611434565b341561062357600080fd5b61063d600160a060020a0360043581169060243516611446565b005b341561064a57600080fd5b6102136114c9565b341561065d57600080fd5b6101896004356114d8565b341561067357600080fd5b610213600160c060020a0319600435166114e6565b341561069357600080fd5b6101ba600160a060020a0360048035821691600160c060020a031960248035919091169260443583169260643516916084359160a4359160e49060c43590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061150195505050505050565b341561071857600080fd5b6101896004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611d2c95505050505050565b341561076757600080fd5b610213611e23565b341561077a57600080fd5b610189600435611e32565b60065481565b6000805433600160a060020a039081169116146107a757600080fd5b600160a060020a03821615156107bc57600080fd5b5060048054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b6000805433600160a060020a0390811691161461080a57600080fd5b600054600160a060020a038381169116141561082557600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b60075481565b600454600160a060020a031681565b6004546000908190819033600160a060020a0390811691161461088c57600080fd5b600160c060020a03198b1615156108a257600080fd5b600160a060020a038a1615156108b757600080fd5b600089116108c457600080fd5b8515156108d057600080fd5b8a8a8a8a604051600160c060020a0319949094168452600160a060020a03929092166c01000000000000000000000000026008840152601c830152603c820152605c016040519081900390206000878152600d60205260409020541461093557600080fd5b610940898987611e44565b151561094b57600080fd5b60065460011480156109b05750600354600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561099757600080fd5b5af115156109a457600080fd5b50505060405180511590505b15610a0557600254600160a060020a031663d7508a556040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156109f457600080fd5b5af11515610a0157600080fd5b5050505b610a2c610a188a8a63ffffffff611f3616565b6000888152600e6020526040902054611f50565b600354600160a060020a03166340c10f198b8b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a8257600080fd5b5af11515610a8f57600080fd5b505050604051805190501515610aa457600080fd5b610ab68451899063ffffffff6121b516565b9150600090505b8351811015610b5057600354600160a060020a03166340c10f19858381518110610ae357fe5b906020019060200201518460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b3157600080fd5b5af11515610b3e57600080fd5b50505060405180515050600101610abd565b6006548690600160a060020a038c167febe5c0a5e91489624ca514a4e99cb8d9aefb44cde38892673e77e733b74017ab8e8d8d8d604051600160c060020a031985168152602081018490526040810183905260806060820181815290820183818151815260200191508051906020019080838360005b83811015610bde578082015183820152602001610bc6565b50505050905090810190601f168015610c0b5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a450506006805460019081019091559998505050505050505050565b601160209081526000928352604080842090915290825290205481565b6000805433600160a060020a03908116911614610c6f57600080fd5b50600955600190565b6000805433600160a060020a03908116911614610c9457600080fd5b600160c060020a031982161515610caa57600080fd5b600160c060020a03198216600090815260106020526040902054600160a060020a03161515610cd857600080fd5b50600160c060020a0319166000908152601060205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055600190565b60055481565b60035460009033600160a060020a03908116911614610d3557600080fd5b600754421015610d4457600080fd5b8251600814610d5257600080fd5b8651600214610d6057600080fd5b8451600214610d6e57600080fd5b600454600160a060020a0316634bf2500d86600181518110610d8c57fe5b9060200190602002015160405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dcc57600080fd5b5af11515610dd957600080fd5b5050506040518051159050610ded57600080fd5b610dfc898989898989896121cc565b1515610e0757600080fd5b600254600160a060020a031663c763e5a16040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e4657600080fd5b5af11515610e5357600080fd5b5050506040518051600160c060020a03198a81169116149050610e7557600080fd5b600354600160a060020a031687600081518110610e8e57fe5b90602001906020020151600160a060020a031614610eab57600080fd5b82600181518110610eb857fe5b906020019060200201511515610ecd57600080fd5b600254600090600160a060020a031663212884006040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f0f57600080fd5b5af11515610f1c57600080fd5b505050604051805190501115610f8357600254600160a060020a0316630dd93b566040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f6b57600080fd5b5af11515610f7857600080fd5b505050604051805150505b610f8c826123a9565b600c600087600181518110610f9d57fe5b90602001906020020151815260208101919091526040016000205582600381518110610fc557fe5b90602001906020020151600e600087600181518110610fe057fe5b906020019060200201518152602081019190915260400160002055888760018151811061100957fe5b906020019060200201518460018151811061102057fe5b906020019060200201518560028151811061103757fe5b90602001906020020151604051600160c060020a0319949094168452600160a060020a03929092166c01000000000000000000000000026008840152601c830152603c820152605c016040518091039020600d60008760018151811061109957fe5b906020019060200201518152602081019190915260400160002055866001815181106110c157fe5b90602001906020020151600160a060020a0316856001815181106110e157fe5b906020019060200201517fa2e4b883e7a23d1dccf7889ba3f5cbce46f39c7132a9dca1dc99609c2a73f7c18b8860008151811061111a57fe5b906020019060200201518760018151811061113157fe5b906020019060200201518860028151811061114857fe5b906020019060200201518960008151811061115f57fe5b906020019060200201518a60068151811061117657fe5b906020019060200201518e604051600160c060020a0319881681526020810187905260408101869052606081018590526080810184905260a0810183905260e060c0820181815290820183818151815260200191508051906020019080838360005b838110156111f05780820151838201526020016111d8565b50505050905090810190601f16801561121d5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a350600198975050505050505050565b60015460009033600160a060020a0390811691161461125d57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b90565b600a8054829081106112df57fe5b600091825260209091200154905081565b6000805433600160a060020a0390811691161461130c57600080fd5b6000821161131957600080fd5b50600855600190565b600254600160a060020a031681565b600054600160a060020a031681565b6000805433600160a060020a0390811691161461135c57600080fd5b4282101561136957600080fd5b50600755600190565b600d6020526000908152604090205481565b60085481565b600f6020526000908152604090205481565b60095481565b6000805433600160a060020a039081169116146113be57600080fd5b600160c060020a03198316158015906113df5750600160a060020a03821615155b15156113ea57600080fd5b50600160c060020a0319821660009081526010602052604090208054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116179055600192915050565b600e6020526000908152604090205481565b60005433600160a060020a0390811691161461146157600080fd5b600160a060020a038216151561147657600080fd5b600160a060020a038116151561148b57600080fd5b60028054600160a060020a0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560038054939092169216919091179055565b600154600160a060020a031681565b600b8054829081106112df57fe5b601060205260009081526040902054600160a060020a031681565b600354600090819081908190819033600160a060020a0390811691161461152757600080fd5b60075442101561153657600080fd5b600160c060020a03198b16158015906115575750600160a060020a038a1615155b801561156b5750600160a060020a03891615155b801561157657508715155b151561158157600080fd5b600160c060020a03198b16600090815260106020526040902054600160a060020a038b81169116146115b257600080fd5b6115c2888863ffffffff611f3616565b600354600160a060020a03166370a082318e60405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561161257600080fd5b5af1151561161f57600080fd5b505050604051805190501015151561163657600080fd5b600854871015801561166e575061166a61271061165e6009548b61242a90919063ffffffff16565b9063ffffffff6121b516565b8710155b151561167957600080fd5b600254600160a060020a0316630dd93b566040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116b857600080fd5b5af115156116c557600080fd5b50505060405180515050600354600160a060020a031663a24835d18d6116f18b8b63ffffffff611f3616565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561173457600080fd5b5af1151561174157600080fd5b50505060405180515050600254600160a060020a031663843ad7b56040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561178a57600080fd5b5af1151561179757600080fd5b5050506040518051600254909550600160a060020a0316905063065e53606040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156117e357600080fd5b5af115156117f057600080fd5b5050506040518051905092506005546001141561186657600a8054600181016118198382612467565b916000526020600020900160008060405160ff919091167f010000000000000000000000000000000000000000000000000000000000000002815260010160405190819003902090915550505b600254600160a060020a031663c763e5a16040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156118a557600080fd5b5af115156118b257600080fd5b5050506040518051600160c060020a03198d811691161415905061192d57600160a060020a03808b166000908152601160209081526040808320938d1683529290522054611906908963ffffffff611f3616565b600160a060020a03808c166000908152601160209081526040808320938e16835292905220555b6002544292508290600160a060020a031663c763e5a16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561197157600080fd5b5af1151561197e57600080fd5b50505060405180516002549091508d908d908d908d908d908a90600160a060020a03166342c6498a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156119d457600080fd5b5af115156119e157600080fd5b505050604051805190508c8f600a600160055403815481101515611a0157fe5b9060005260206000209001546040518c8152600160c060020a0319808d1660208301528b1660288201526c01000000000000000000000000600160a060020a03808c16820260308401528a1602604482015260588101889052607881018790526098810186905260b8810185905260d8810184905260f8810183805190602001908083835b60208310611aa55780518252601f199092019160209182019101611a86565b6001836020036101000a03801982511681845116179092525050509190910192835250506020019a50604099505050505050505050505180910390209050600a8054806001018281611af79190612467565b506000918252602080832091909101839055600554838352600f90915260409182902055600354600160a060020a0316906318160ddd90518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b5a57600080fd5b5af11515611b6757600080fd5b50505060405180519050600b6000815481101515611b8157fe5b9060005260206000209001819055508b600160a060020a031681600019168a600160a060020a03167fca44de332c14dded5f8ccbe1ff70f6b5848247af65567e31a815d3fb61be07928e8e8d8d8d8b600554600a600160055403815481101515611be757fe5b9060005260206000209001548f600b8f604051600160c060020a03198c168152600160a060020a038b166020820152604081018a90526060810189905260a0810187905260c0810186905260e0810185905261010081018490526101408101829052610160608082018181529061012083019083018a818151815260200191508051906020019080838360005b83811015611c8c578082015183820152602001611c74565b50505050905090810190601f168015611cb95780820380516001836020036101000a031916815260200191505b508381038252858181548152602001915080548015611cf757602002820191906000526020600020905b815481526020019060010190808311611ce3575b50509d505050505050505050505050505060405180910390a450506005805460019081019091559a9950505050505050505050565b600080600080600080865111611d4157600080fd5b600092505b8551831015611e1957858381518110611d5b57fe5b90602001906020020151600160a060020a033381166000908152601160209081526040808320938516835292905290812054919350909150811115611e0e57600160a060020a03338116600081815260116020908152604080832094871680845294909152808220919091557fdcc7a8e6641ae885efef96d6348800635daf98037d60462fe34e85013b3257139084905190815260200160405180910390a3611e0b84600163ffffffff611f3616565b93505b600190920191611d46565b5091949350505050565b600354600160a060020a031681565b600c6020526000908152604090205481565b60008080611e58868663ffffffff611f3616565b600354909250611ec190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611e9e57600080fd5b5af11515611eab57600080fd5b505050604051805186915063ffffffff611f3616565b600254909150600160a060020a03166322ce61b26040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611f0357600080fd5b5af11515611f1057600080fd5b50505060405180519050611f2a838363ffffffff611f3616565b11159695505050505050565b600082820183811015611f4557fe5b8091505b5092915050565b600254600090819081908190600160a060020a031663fde9cded8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611fa157600080fd5b5af11515611fae57600080fd5b5050506040518051600254909550600160a060020a0316905063496a698d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ffa57600080fd5b5af1151561200757600080fd5b50505060405180519350612033905086612027858763ffffffff61245516565b9063ffffffff61242a16565b600254909250612104906120a2908690600160a060020a0316635d766d356040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561207f57600080fd5b5af1151561208c57600080fd5b505050604051805191905063ffffffff61242a16565b600254600160a060020a0316632ff2e9dc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156120e157600080fd5b5af115156120ee57600080fd5b505050604051805191905063ffffffff611f3616565b60025490915061215290829061165e908590600160a060020a0316635d766d356040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561207f57600080fd5b600354909250600160a060020a031663b625690d8360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561219d57600080fd5b5af115156121aa57600080fd5b505050505050505050565b60008082848115156121c357fe5b04949350505050565b6000816000815181106121db57fe5b906020019060200201518888886000815181106121f457fe5b906020019060200201518960018151811061220b57fe5b906020019060200201518660018151811061222257fe5b906020019060200201518760028151811061223957fe5b906020019060200201518860038151811061225057fe5b906020019060200201518960048151811061226757fe5b906020019060200201518a60058151811061227e57fe5b906020019060200201518e8e60008151811061229657fe5b906020019060200201516040518c8152600160c060020a0319808d1660208301528b1660288201526c01000000000000000000000000600160a060020a03808c16820260308401528a1602604482015260588101889052607881018790526098810186905260b8810185905260d8810184905260f8810183805190602001908083835b602083106123385780518252601f199092019160209182019101612319565b6001836020036101000a03801982511681845116179092525050509190910192835250506020019a5060409950505050505050505050519081900390208460018151811061238257fe5b90602001906020020151141561239a5750600161239e565b5060005b979650505050505050565b600080805b6020811015611f4957806008028482815181106123c757fe5b016020015160029190910a7f0100000000000000000000000000000000000000000000000000000000000000918290049091027fff00000000000000000000000000000000000000000000000000000000000000160491909117906001016123ae565b60008083151561243d5760009150611f49565b5082820282848281151561244d57fe5b0414611f4557fe5b60008282111561246157fe5b50900390565b81548183558181151161248b5760008381526020902061248b918101908301612490565b505050565b6112ce91905b808211156124aa5760008155600101612496565b50905600a165627a7a72305820956bfbdce576c47163c5c4019cecea2d6c7cb48b61cde48885d7007f583799d90029\\",\\"binhash\\":\\"00493cb0ea351e565d8ae86d07f5644ed179e14097943a942d037ea1e37b4bc4\\",\\"name\\":\\"TokenPorter\\",\\"deployName\\":\\"TokenPorter\\",\\"address\\":\\"4aa625d067457b6e5df52275048e70e68ea1bff7\\",\\"txid\\":\\"a4bdf236928c88f33d7f317a5e00c2a4488b8741c34389c036795e145eceb199\\",\\"createdAt\\":\\"2019-08-02T11:30:08.640196Z\\",\\"confirmed\\":true,\\"sender\\":\\"qY3Dc6fwnStAfW1gHKLjmD56uwizq58LHQ\\",\\"senderHex\\":\\"9ed56f7c8413238455406e94ce19184e3e9d1a24\\"},\\"Validator\\":{\\"source\\":\\"Validator:Validator\\",\\"abi\\":[{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"setProposalContract\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_proposals\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"getValidatorsCount\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"validators\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"removeValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"threshold\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hashClaimed\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"addValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"proposals\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hashRefutation\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"attestHash\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes32[]\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"_globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_tokenPorterAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"hashAttestations\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"attestationCount\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"updateThreshold\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"refuteHash\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"isNewThresholdValid\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_valCount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"isValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"LogAttestation\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"hash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"recipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"isValid\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogValidatorAdded\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"validator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"caller\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogValidatorRemoved\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"validator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"caller\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526001600c5560008054600160a060020a033316600160a060020a03199091161790556110b1806100356000396000f30060606040526004361061012f5763ffffffff60e060020a6000350416631987b887811461013457806320f3f5d41461016757806327498240146101865780632af4c31e146101ab57806335aa2e44146101ca57806340a141ff146101fc57806342cde4e81461021d5780634892f0af146102305780634bf2500d146102435780634d238c8e1461025957806355ef20e61461027857806366d8de651461028b57806379ba5097146102ad57806385aa6103146102c05780638da5cb5b146102d3578063bceac891146102e6578063bf2699e7146103b3578063c69ba441146103de578063d4ee1d9014610400578063d65ddd5214610413578063d7d7442f14610429578063e8fd112a1461043f578063faa8fd7c14610461578063facd743b1461047a578063fc0c546a14610499575b600080fd5b341561013f57600080fd5b610153600160a060020a03600435166104ac565b604051901515815260200160405180910390f35b341561017257600080fd5b610153600160a060020a0360043516610502565b341561019157600080fd5b610199610558565b60405190815260200160405180910390f35b34156101b657600080fd5b610153600160a060020a036004351661055f565b34156101d557600080fd5b6101e06004356105b9565b604051600160a060020a03909116815260200160405180910390f35b341561020757600080fd5b61021b600160a060020a03600435166105e1565b005b341561022857600080fd5b610199610790565b341561023b57600080fd5b6101e0610796565b341561024e57600080fd5b6101536004356107a5565b341561026457600080fd5b61021b600160a060020a03600435166107ba565b341561028357600080fd5b6101e06108d2565b341561029657600080fd5b610153600435600160a060020a03602435166108e1565b34156102b857600080fd5b610153610901565b34156102cb57600080fd5b6101e0610985565b34156102de57600080fd5b6101e0610994565b34156102f157600080fd5b61021b60048035906024803577ffffffffffffffffffffffffffffffffffffffffffffffff191691604435600160a060020a031691606435916084359160c49060a435908101908301358060208082020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050933593506109a392505050565b34156103be57600080fd5b61021b600160a060020a0360043581169060243581169060443516610d06565b34156103e957600080fd5b610153600435600160a060020a0360243516610da0565b341561040b57600080fd5b6101e0610dc0565b341561041e57600080fd5b610199600435610dcf565b341561043457600080fd5b610153600435610de1565b341561044a57600080fd5b61021b600435600160a060020a0360243516610e39565b341561046c57600080fd5b610153600435602435610f2c565b341561048557600080fd5b610153600160a060020a0360043516610f80565b34156104a457600080fd5b6101e0610f95565b6000805433600160a060020a039081169116146104c857600080fd5b600160a060020a03821615156104dd57600080fd5b5060088054600160a060020a038316600160a060020a03199091161790556001919050565b6000805433600160a060020a0390811691161461051e57600080fd5b600160a060020a038216151561053357600080fd5b50600a8054600160a060020a038316600160a060020a03199091161790556001919050565b6006545b90565b6000805433600160a060020a0390811691161461057b57600080fd5b600054600160a060020a038381169116141561059657600080fd5b5060018054600160a060020a038316600160a060020a0319909116178155919050565b60068054829081106105c757fe5b600091825260209091200154600160a060020a0316905081565b6000805433600160a060020a039081169116148061060d5750600a5433600160a060020a039081169116145b151561061857600080fd5b6006546001901161062857600080fd5b50600160a060020a0381166000908152600560205260408120805460ff191690555b6006548110156107185781600160a060020a031660068281548110151561066d57fe5b600091825260209091200154600160a060020a03161415610710576006546000190181146106f7576006805460001981019081106106a757fe5b60009182526020909120015460068054600160a060020a0390921691839081106106cd57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790555b600680549061070a90600019830161103e565b50610718565b60010161064a565b600654600c54106107435760065460011415610738576001600c55610743565b60065460001901600c555b33600160a060020a031682600160a060020a03167f5627cd186a8bbe264dd973df5fc00b47503dd5eb8b800c374a79cd07976e3b91600c5460405190815260200160405180910390a35050565b600c5481565b600854600160a060020a031681565b600b6020526000908152604090205460ff1681565b6000805433600160a060020a03908116911614806107e65750600a5433600160a060020a039081169116145b15156107f157600080fd5b600160a060020a03821660009081526005602052604090205460ff161561081757600080fd5b6006805460018101610829838261103e565b5060009182526020808320919091018054600160a060020a031916600160a060020a03861690811790915582526005905260409020805460ff1916600117905560065460029004600101905080600c54101561088557600c8190555b33600160a060020a031682600160a060020a03167f46213623f0eccf79b262f17f4d40ff0bee40a6cc53bd88881667cd1409d7b0b2600c5460405190815260200160405180910390a35050565b600a54600160a060020a031681565b600360209081526000928352604080842090915290825290205460ff1681565b60015460009033600160a060020a0390811691161461091f57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a3506001805460008054600160a060020a031916600160a060020a0390921691909117905590565b600954600160a060020a031681565b600054600160a060020a031681565b600160a060020a03331660009081526005602052604090205460ff1615156109ca57600080fd5b8715156109d657600080fd5b6000888152600260209081526040808320600160a060020a033316845290915290205460ff1615610a0657600080fd5b6000888152600360209081526040808320600160a060020a033316845290915290205460ff1615610a3657600080fd5b600854610aa090600160a060020a031663fe5a53778a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a8257600080fd5b5af11515610a8f57600080fd5b505050604051805190508985610fa4565b1515610aab57600080fd5b6000888152600260209081526040808320600160a060020a033381168552908352818420805460ff191660019081179091558c8552600490935292819020805483019055918816918a917ffe764dcbebeb35937aa8a11cf0f1f95e60b25fe4574742ea6e89943e315eb98a9151901515815260200160405180910390a3600c5460008981526004602052604090205410801590610b5757506000888152600b602052604090205460ff16155b15610cfc576000888152600b602052604090819020805460ff19166001179055600854600160a060020a0316906341819f8390899089908990899088908f9089906006905160e060020a63ffffffff8b1602815277ffffffffffffffffffffffffffffffffffffffffffffffff19891660048201908152600160a060020a0389166024830152604482018890526064820187905260a4820185905260c4820184905261010060848301908152909160e48101906101040187818151815260200191508051906020019080838360005b83811015610c3e578082015183820152602001610c26565b50505050905090810190601f168015610c6b5780820380516001836020036101000a031916815260200191505b508381038252848181548152602001915080548015610cb357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610c95575b50509a5050505050505050505050602060405180830381600087803b1515610cda57600080fd5b5af11515610ce757600080fd5b505050604051805190501515610cfc57600080fd5b5050505050505050565b60005433600160a060020a03908116911614610d2157600080fd5b600160a060020a0383161515610d3657600080fd5b600160a060020a0382161515610d4b57600080fd5b600160a060020a0381161515610d6057600080fd5b60088054600160a060020a0319908116600160a060020a039384161790915560098054821693831693909317909255600780549092169216919091179055565b600260209081526000928352604080842090915290825290205460ff1681565b600154600160a060020a031681565b60046020526000908152604090205481565b6000805433600160a060020a0390811691161480610e0d5750600a5433600160a060020a039081169116145b1515610e1857600080fd5b600654610e259083610f2c565b1515610e3057600080fd5b50600c55600190565b600160a060020a03331660009081526005602052604090205460ff161515610e6057600080fd5b6000828152600260209081526040808320600160a060020a033316845290915290205460ff1615610e9057600080fd5b6000828152600360209081526040808320600160a060020a033316845290915290205460ff1615610ec057600080fd5b6000828152600360209081526040808320600160a060020a0333811685529252808320805460ff191660011790559083169184917ffe764dcbebeb35937aa8a11cf0f1f95e60b25fe4574742ea6e89943e315eb98a919051901515815260200160405180910390a35050565b6000816001148015610f3e5750826002145b15610f4b57506001610f7a565b60018210158015610f5b57508282105b8015610f6957506002830482115b15610f7657506001610f7a565b5060005b92915050565b60056020526000908152604090205460ff1681565b600754600160a060020a031681565b600080808515801590610fb657508415155b8015610fc25750835115155b1515610fcd57600080fd5b5083905060005b8351811015611032576002848281518110610feb57fe5b906020019060200201518360405191825260208083019190915260409182019151808303816000865af1151561102057600080fd5b50506040518051925050600101610fd4565b50939093149392505050565b81548183558181151161106257600083815260209020611062918101908301611067565b505050565b61055c91905b80821115611081576000815560010161106d565b50905600a165627a7a72305820d2fe8b1c1fdd565ba986f2e875b0d920711c80a23911a8297b049dac7a615cfe0029\\",\\"binhash\\":\\"f79185e878b78fb4918dfece9507fb6289fa8a693817991292ed4ceaf85753b0\\",\\"name\\":\\"Validator\\",\\"deployName\\":\\"Validator\\",\\"address\\":\\"39e910a1439cc806a3dcb5f253d8fa28a5b0c598\\",\\"txid\\":\\"df38ed9db6c93fb74f3ba94b9c685fc87cce097c5c7491742abed625a19b4f63\\",\\"createdAt\\":\\"2019-08-02T11:33:20.3281709Z\\",\\"confirmed\\":true,\\"sender\\":\\"qY3Dc6fwnStAfW1gHKLjmD56uwizq58LHQ\\",\\"senderHex\\":\\"9ed56f7c8413238455406e94ce19184e3e9d1a24\\"}},\\"libraries\\":{},\\"related\\":{\\"Auctions:Auctions\\":{\\"source\\":\\"Auctions:Auctions\\",\\"name\\":\\"Auctions\\",\\"abi\\":[{\\"name\\":\\"initialAuctionEndTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"priceAt\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"initialPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_n\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumPriceInDailyAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"MULTIPLIER\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"currentTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"mintInitialSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_founders\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tentimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"restartAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initAuctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initialized\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"isInitialAuctionEnded\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"currentMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"isRunning\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"lastPurchaseTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"globalMetSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_AC_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"globalDailySupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hundredtimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"heartbeat\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"auctionAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"convertAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"tokenAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"minting\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"totalMET\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"proceedsBal\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currTick\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currAuction\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"nextAuctionGMT\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"genesisGMT\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currentAuctionPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_dailyMintable\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_lastPurchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"createTokenLocker\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_founder\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"genesisTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"stopEverything\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"currentAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"dailyAuctionStartTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"mintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minted\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tokensOnThisChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"proceeds\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_GLOBAL_DAILY_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"whatWouldPurchaseDo\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_wei\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_timestamp\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalMigratedIn\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumPrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"dailyMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"thousandtimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"currentPrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"priceAtInitialAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"numTicks\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initPricer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initialAuctionDuration\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"chain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"whichTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"t\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"DAILY_PURCHASE_LIMIT\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"INITIAL_FOUNDER_SUPPLY\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"prepareAuctionForNonOGChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"founders\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"globalSupplyAfterPercentageLogic\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"skipInitBecauseIAmNotOg\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_genesisTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_initialAuctionEndTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalMigratedOut\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"AUCTION_WHEN_PERCENTAGE_LOGIC_STARTS\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"timeScale\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tokenLockers\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"whichAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tick\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"constructor\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"fallback\\",\\"payable\\":true,\\"inputs\\":null,\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogAuctionFundsIn\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"sender\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"purchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526503005753e800600090815560018080556a01a78429bce3279a9c0000600e55670de0b6b3a7640000600f5560108290556011919091556012556a084595161401484a00000060135562093a806014556a2b8213a156a49f0d000000601a55601b805467ffffffffffffffff1916675154554d00000000179055341561008957600080fd5b60058054600160a060020a03191633600160a060020a03161790556a069e10de76676d080000006013556135b3806100c26000396000f300606060405260043610620002d45763ffffffff60e060020a600035041662fca46f8114620007dc57806301dbdf441462000804578063053f74921462000820578063059f8b161462000836578063065e5360146200084c5780630a5f558e14620008625780630d2a25bb14620008e25780630dd93b5614620008f85780630eab31b1146200090e578063158ef93e14620009305780631d38bebd14620009465780631d3ce58d146200095c5780632014e5d1146200097257806321288400146200098857806322ce61b2146200099e5780632af4c31e14620009b45780632b193ac414620009d65780632b37921814620009ec5780632ff2e9dc1462000a025780633264a8441462000a185780633defb9621462000a2e57806340a3a9c71462000ae057806342c6498a1462000b0a5780634938649a1462000b20578063496a698d1462000b3657806349b11f241462000b4c5780634bf365df1462000b625780634f02c4201462000b78578063518c0f171462000b8e57806355b5ec641462000ba45780635d766d351462000bd65780637334a63f1462000bec57806379ba50971462000c2c5780637a8a5cf31462000c425780637f386b6c1462000c585780638207b07d1462000c6e578063843ad7b51462000c845780638da5cb5b1462000c9a5780639b8abe0b1462000cb05780639d1b464a1462000cc6578063a8afc5381462000cdc578063c1f7c5391462000cf8578063c50508de1462000d0e578063c763e5a11462000d24578063d282866a1462000d68578063d4ee1d901462000d81578063d511cc491462000d97578063d661d2061462000dad578063d7508a551462000dc3578063d8e75f621462000dd9578063d9db9d891462000df2578063df775a931462000e08578063e98c365b1462000e5d578063f17f3ca31462000e73578063f32b85e81462000e89578063f4285c3c1462000e9f578063fc0c546a1462000ec1578063fde9cded1462000ed7575b6000806000806000806000620002e962000ef0565b1515620002f557600080fd5b600034116200030357600080fd5b3496506200031062000f0d565b506200031b620010c2565b15620004d3576016544210156200033157600080fd5b6200033b6200114c565b600160a060020a0333166000908152601860205260409020541015620003cf5764174876e8008711156200038b57620003808764174876e80063ffffffff6200116216565b955064174876e80096505b600160a060020a0333166000908152601760205260409020349055620003b06200114c565b600160a060020a033316600090815260186020526040902055620004d3565b600160a060020a03331660009081526017602052604090205464174876e8009010620003fa57600080fd5b600160a060020a03331660009081526017602052604090205464174876e800906200042c908963ffffffff6200117a16565b11156200048e57600160a060020a033316600090815260176020526040902054620004779064174876e800906200046a908a63ffffffff6200117a16565b9063ffffffff6200116216565b95506200048b878763ffffffff6200116216565b96505b600160a060020a033316600090815260176020526040902054620004b9903463ffffffff6200117a16565b600160a060020a0333166000908152601760205260409020555b620004dd62001195565b9450620004eb8786620011a2565b91955093509150600083116200050057600080fd5b601554421080156200058957506007546a084595161401484a0000009062000586908590600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200056157600080fd5b5af115156200056f57600080fd5b505050604051805191905063ffffffff6200117a16565b10155b15620005a5574260158190556001620151809182900401026016555b600c859055600d849055601354831115620005bc57fe5b601354620005d1908463ffffffff6200116216565b60135586821115620005df57fe5b620005f1878363ffffffff6200116216565b600854909150600160a060020a0316637679a816826040518263ffffffff1660e060020a0281526004016000604051808303818588803b15156200063457600080fd5b5af115156200064257600080fd5b5050600754600160a060020a031691506340c10f199050338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200069f57600080fd5b5af11515620006ad57600080fd5b505050604051805190501515620006c357600080fd5b620006d5828763ffffffff6200117a16565b915060008211156200077857600160a060020a03331660009081526017602052604081205411156200074657600160a060020a0333166000908152601760205260409020546200072c908363ffffffff6200116216565b600160a060020a0333166000908152601760205260409020555b600160a060020a03331682156108fc0283604051600060405180830381858888f1935050505015156200077857600080fd5b33600160a060020a03167fa3d6792be56a61c872a8e6d733ef6efe5e391cece4d5e9d2f37208fdab7dddfd8285600d54866040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050005b3415620007e857600080fd5b620007f26200127c565b60405190815260200160405180910390f35b34156200081057600080fd5b620007f260043560243562001282565b34156200082c57600080fd5b620007f262001403565b34156200084257600080fd5b620007f262001409565b34156200085857600080fd5b620007f262001195565b34156200086e57600080fd5b620008ce600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965050600160a060020a0385358116956020810135821695506040013516925062001413915050565b604051901515815260200160405180910390f35b3415620008ee57600080fd5b620007f262001755565b34156200090457600080fd5b620008ce62000f0d565b34156200091a57600080fd5b620008ce6004356024356044356064356200175b565b34156200093c57600080fd5b620008ce6200191e565b34156200095257600080fd5b620008ce620010c2565b34156200096857600080fd5b620007f26200192c565b34156200097e57600080fd5b620008ce62000ef0565b34156200099457600080fd5b620007f2620019ff565b3415620009aa57600080fd5b620007f262001a05565b3415620009c057600080fd5b620008ce600160a060020a036004351662001a69565b3415620009e257600080fd5b620007f262001ad5565b3415620009f857600080fd5b620007f262001adb565b341562000a0e57600080fd5b620007f262001bc7565b341562000a2457600080fd5b620007f262001bd6565b341562000a3a57600080fd5b62000a4462001bdc565b60405177ffffffffffffffffffffffffffffffffffffffffffffffff19909e168e52600160a060020a039c8d1660208f01529a8c166040808f019190915299909b1660608d015260808c019790975260a08b019590955260c08a019390935260e08901919091526101008801526101208701526101408601526101608501526101808401929092526101a08301526101c0909101905180910390f35b341562000aec57600080fd5b62000b08600160a060020a036004358116906024351662001d52565b005b341562000b1657600080fd5b620007f262001ec0565b341562000b2c57600080fd5b62000b0862001ec6565b341562000b4257600080fd5b620007f26200114c565b341562000b5857600080fd5b620007f262001f0b565b341562000b6e57600080fd5b620007f262001f11565b341562000b8457600080fd5b620008ce62001f17565b341562000b9a57600080fd5b620007f262001f20565b341562000bb057600080fd5b62000bba62001fa6565b604051600160a060020a03909116815260200160405180910390f35b341562000be257600080fd5b620007f262001fb5565b341562000bf857600080fd5b62000c0860043560243562001fc2565b60405180848152602001838152602001828152602001935050505060405180910390f35b341562000c3857600080fd5b620008ce62002054565b341562000c4e57600080fd5b620007f2620020e7565b341562000c6457600080fd5b620007f2620020ed565b341562000c7a57600080fd5b620007f2620020f3565b341562000c9057600080fd5b620007f2620020f9565b341562000ca657600080fd5b62000bba62002107565b341562000cbc57600080fd5b620007f262002116565b341562000cd257600080fd5b620007f26200211c565b341562000ce857600080fd5b620007f26004356024356200212c565b341562000d0457600080fd5b62000b0862002190565b341562000d1a57600080fd5b620007f262002264565b341562000d3057600080fd5b62000d3a6200226a565b60405177ffffffffffffffffffffffffffffffffffffffffffffffff19909116815260200160405180910390f35b341562000d7457600080fd5b620007f260043562002276565b341562000d8d57600080fd5b62000bba62002298565b341562000da357600080fd5b620007f2620022a7565b341562000db957600080fd5b620007f2620022b0565b341562000dcf57600080fd5b62000b08620022b6565b341562000de557600080fd5b62000bba6004356200240b565b341562000dfe57600080fd5b620007f262002434565b341562000e1457600080fd5b620008ce600160a060020a036004358116906024351660443560643560843560a43577ffffffffffffffffffffffffffffffffffffffffffffffff1960c4351660e4356200243a565b341562000e6957600080fd5b620007f262002600565b341562000e7f57600080fd5b620007f262002606565b341562000e9557600080fd5b620007f26200260c565b341562000eab57600080fd5b62000bba600160a060020a036004351662002612565b341562000ecd57600080fd5b62000bba6200262d565b341562000ee357600080fd5b620007f26004356200263c565b6000600b54421015801562000f0757506000600b54115b90505b90565b600080600080600062000f1f6200114c565b935062000f2e600c546200263c565b841115620010b657600854600160a060020a031663378252f26040518163ffffffff1660e060020a028152600401600060405180830381600087803b151562000f7657600080fd5b5af1151562000f8457600080fd5b50505062000f9162002684565b600d8290559194509250905062000fa88362002276565b600c556007546200102b90600160a060020a0316635c9b2e926040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562000ff057600080fd5b5af1151562000ffe57600080fd5b50505060405180516013549091506200101e908463ffffffff6200117a16565b9063ffffffff6200117a16565b601355600754600160a060020a031663baaef4af6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156200106e57600080fd5b5af115156200107c57600080fd5b5050506139c7841115620010ac57620010a86200109862001adb565b601a549063ffffffff6200117a16565b601a555b60019450620010bb565b600094505b5050505090565b600060155460001415801562000f0757506015544210158062000f0757506007546a084595161401484a00000090600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200112d57600080fd5b5af115156200113b57600080fd5b505050604051805190501015905090565b600062000f076200115c62001195565b6200263c565b6000828211156200116f57fe5b508082035b92915050565b6000828201838110156200118a57fe5b8091505b5092915050565b600062000f074262002276565b600080600080600080600c548710151515620011bd57600080fd5b600c5487039250620011ce620010c2565b15620011ea57620011e2600d548462001282565b9550620011fb565b620011f8600d54846200212c565b95505b62001227866200121a670de0b6b3a76400008b63ffffffff6200279d16565b9063ffffffff620027cc16565b9150819450601354821115620012725760135494506200125b670de0b6b3a76400006200121a878963ffffffff6200279d16565b90506200126f888263ffffffff6200116216565b93505b5050509250925092565b60155481565b6000670de0b6b3a76400008183816103e882041115620012e757600091505b6103e88104821015620012e157600454620012d390670de0b6b3a7640000906200121a90869063ffffffff6200279d16565b9250600190910190620012a1565b6103e890065b60006064820411156200133d57600091505b6064810482101562001338576003546200132a90670de0b6b3a7640000906200121a90869063ffffffff6200279d16565b9250600190910190620012f9565b606490065b6000600a820411156200139357600091505b600a81048210156200138e576002546200138090670de0b6b3a7640000906200121a90869063ffffffff6200279d16565b92506001909101906200134f565b600a90065b600091505b80821015620013c857620013ba60646200121a85606363ffffffff6200279d16565b925060019091019062001398565b620013e7670de0b6b3a76400006200121a888663ffffffff6200279d16565b9350600154841015620013fa5760015493505b50505092915050565b60015481565b65b4791041f30081565b6005546000908190819081908190819033600160a060020a039081169116146200143c57600080fd5b60195460ff16156200144d57600080fd5b895115156200145b57600080fd5b600754600160a060020a03161580156200147d5750600160a060020a03891615155b15156200148957600080fd5b600854600160a060020a0316158015620014ab5750600160a060020a03881615155b1515620014b757600080fd5b600160a060020a0387161515620014cd57600080fd5b60078054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff199283161790925560088054928b1692909116919091179055600093505b8951841015620016a55760608a85815181106200152857fe5b9060200190602002015160029190910a90049250600160a060020a03831615156200155257600080fd5b8984815181106200155f57fe5b906020019060200201516bffffffffffffffffffffffff169150600082116200158757600080fd5b50600160a060020a038083166000908152600a602052604090819020546007549083169216906340c10f1990839085905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620015f957600080fd5b5af115156200160757600080fd5b5050506040518051905015156200161d57600080fd5b80600160a060020a03166347e7ef24848460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156200167257600080fd5b5af115156200168057600080fd5b506200169791508690508363ffffffff6200117a16565b94506001909301926200150f565b600e548514620016b457600080fd5b600754600f54600160a060020a03909116906340c10f1990899060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200171257600080fd5b5af115156200172057600080fd5b5050506040518051905015156200173657600080fd5b6019805460ff1916600190811790915595505050505050949350505050565b60025481565b6005546000908190819033600160a060020a039081169116146200177e57600080fd5b60195460ff1615156200179057600080fd5b601954610100900460ff1615620017a657600080fd5b831515620017b357600080fd5b620017bd62002190565b6000871115620017d857603c808804810201600b55620017e5565b603c42064203603c01600b555b601454600b54016015819055620151808082040214156200180c576015546016556200181f565b6015546001620151809182900401026016555b6000600c819055861115620018345760008690555b6012849055600085111562001853576305f5e1008502600d556200185c565b630bebc200600d555b600091505b6009548210156200190157600a60006009848154811015156200188057fe5b6000918252602080832090910154600160a060020a039081168452908301939093526040918201902054909116915081906327fe75ed90518163ffffffff1660e060020a028152600401600060405180830381600087803b1515620018e457600080fd5b5af11515620018f257600080fd5b50506001909201915062001861565b6019805461ff001916610100179055600192505050949350505050565b601954610100900460ff1681565b60135460009081806200193e6200114c565b91506200195f62001951600c546200263c565b839063ffffffff6200116216565b905060008111156200198d576200198a6200197a82620027e4565b6013549063ffffffff6200117a16565b92505b600754620019f790600160a060020a0316635c9b2e926040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515620019d257600080fd5b5af11515620019e057600080fd5b505050604051805185915063ffffffff6200117a16565b935050505090565b600c5481565b60008062001a126200114c565b90506139c781111562001a2a57601a54915062001a65565b62001a6262001a49689c2007651b250000008363ffffffff6200279d16565b6a084595161401484a0000009063ffffffff6200117a16565b91505b5090565b60055460009033600160a060020a0390811691161462001a8857600080fd5b600554600160a060020a038381169116141562001aa457600080fd5b506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905560015b919050565b600f5481565b6000689c2007651b25000000818080808062001af66200114c565b94506139c785111562001bbc5762001b10600c546200263c565b93506139c892508284111562001b24578392505b8285039150600182111562001b7b5760018203600202618ead01905062001b73634f8460e96200121a8362001b666002601a546200279d90919063ffffffff16565b9063ffffffff6200279d16565b955062001b9d565b62001b9a618ead6200121a6002601a546200279d90919063ffffffff16565b95505b689c2007651b2500000086101562001bbc57689c2007651b2500000095505b509395945050505050565b6a084595161401484a00000081565b60035481565b601b5460085460c060020a90910290600090819081908190819081908190819081908190819081908190600160a060020a03166350b48c5e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562001c4357600080fd5b5af1151562001c5157600080fd5b5050506040518051600754309f50909d50600160a060020a03169b508b90506318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562001ca457600080fd5b5af1151562001cb257600080fd5b5050506040518051600854909a50600160a060020a031631985062001cd8905062001195565b965062001ce46200114c565b955085151562001cf957601654945062001d14565b60165460125462015180880281151562001d0f57fe5b040194505b600b54935062001d236200211c565b925062001d2f620020f9565b915062001d3b6200192c565b9950600d549050909192939495969798999a9b9c9d565b60055460009033600160a060020a0390811691161462001d7157600080fd5b600160a060020a038216151562001d8757600080fd5b600160a060020a038316151562001d9d57600080fd5b600980546001810162001db1838262002b41565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055308262001def62002b6d565b600160a060020a0392831681529116602082015260409081019051809103906000f080151562001e1e57600080fd5b600160a060020a038481166000908152600a602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916928416928317905591925090632af4c31e9085905160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151562001ea357600080fd5b5af1151562001eb157600080fd5b50505060405180515050505050565b600b5481565b60055433600160a060020a0390811691161462001ee257600080fd5b42600b54101562001ef257600080fd5b600b8054640757b12c0001908190556015819055601655565b60165481565b60135481565b60195460ff1681565b60075460009081908190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562001f6757600080fd5b5af1151562001f7557600080fd5b50505060405180519050915062001f8b6200192c565b905062001f9f828263ffffffff6200117a16565b9250505090565b600854600160a060020a031681565b689c2007651b2500000081565b600080600080600062001fdf62001fd98762002276565b620029a1565b945062002000856200121a670de0b6b3a76400008a63ffffffff6200279d16565b91508193506013548211156200204b57601354935062002034670de0b6b3a76400006200121a868863ffffffff6200279d16565b905062002048878263ffffffff6200116216565b92505b50509250925092565b60065460009033600160a060020a039081169116146200207357600080fd5b600654600554600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a3506006546005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055600190565b60115481565b60005481565b600d5481565b600062000f076000620027e4565b600554600160a060020a031681565b60045481565b600062000f0762001fd962001195565b60006200214665b4791041f3008363ffffffff6200279d16565b8311156200217b57620021786200216a65b4791041f3008463ffffffff6200279d16565b849063ffffffff6200116216565b90505b60005481101562001174575060005492915050565b670de0b6b3a764000060005b600a811015620021ca57620021bf60646200121a84606363ffffffff6200279d16565b91506001016200219c565b50600255670de0b6b3a764000060005b600a81101562002214576002546200220990670de0b6b3a7640000906200121a90859063ffffffff6200279d16565b9150600101620021da565b50600355670de0b6b3a764000060005b600a8110156200225e576003546200225390670de0b6b3a7640000906200121a90859063ffffffff6200279d16565b915060010162002224565b50600455565b60145481565b601b5460c060020a0281565b600081600b5411156200228857600080fd5b50601254600b54603c9203020490565b600654600160a060020a031681565b64174876e80081565b600e5481565b600754600160a060020a0316634892f0af6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515620022f657600080fd5b5af115156200230457600080fd5b50505060405180519050600160a060020a031633600160a060020a031614806200233c575060075433600160a060020a039081169116145b15156200234857600080fd5b600754600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200238857600080fd5b5af115156200239657600080fd5b5050506040518051159050620023ab57600080fd5b601b5460c060020a0277ffffffffffffffffffffffffffffffffffffffffffffffff19167f45544800000000000000000000000000000000000000000000000000000000001415620023fc57600080fd5b6200240662001195565b600c55565b60098054829081106200241a57fe5b600091825260209091200154600160a060020a0316905081565b601a5481565b60055460009033600160a060020a039081169116146200245957600080fd5b60195460ff16156200246a57600080fd5b601954610100900460ff16156200248057600080fd5b8315156200248d57600080fd5b600754600160a060020a0316158015620024af5750600160a060020a03891615155b1515620024bb57600080fd5b600854600160a060020a0316158015620024dd5750600160a060020a03881615155b1515620024e957600080fd5b620024f362002190565b60078054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff199283161790925560088054928b16929091169190911790556000600e819055600f819055601355600b8790556015829055620151808204620151800260155414156200256a576015546016556200257d565b6015546001620151809182900401026016555b6000600c819055861115620025925760008690555b60128490556000851115620025b1576305f5e1008502600d55620025ba565b630bebc200600d555b50601b805460c060020a840467ffffffffffffffff199091161790556019805461ff001960ff199091166001908117919091166101001790915598975050505050505050565b60105481565b6139c781565b60125481565b600a60205260009081526040902054600160a060020a031681565b600754600160a060020a031681565b6000816200264c60165462002276565b11156200265c5750600062001ad0565b6105a06200266c60165462002276565b83038115156200267857fe5b04600101905062001ad0565b600080600080600080600080600b54421015620026b057600b549750600d549650601354955062002793565b620026bd600c546200263c565b9450620026c96200114c565b9350848403925060165497506001841115620026f657620026f3620026ed62001195565b62002ac8565b97505b6200270183620027e4565b955060018311156200271f57600d5460649004600101965062002793565b60135415806200272d575082155b156200274457600d54600202600101965062002793565b83600114156200275c57600054600202965062002793565b620027678862002276565b915060009050600c548211156200277f5750600c5481035b6200278d600d548262001282565b60020296505b5050505050909192565b600080831515620027b257600091506200118e565b50828202828482811515620027c357fe5b04146200118a57fe5b6000808284811515620027db57fe5b04949350505050565b6000806000806000620027f66200114c565b6007549094506200289f90600160a060020a0316635c9b2e926040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200283e57600080fd5b5af115156200284c57600080fd5b50505060405180516013546007549192506200101e91600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200056157600080fd5b689c2007651b25000000955092506139c78411156200293157620028c262001adb565b945060018611156200290f57620028ed618ead6200121a6002601a546200279d90919063ffffffff16565b91506200290c60026200121a8862001b66868a63ffffffff6200117a16565b94505b601a5462002929906200121a878663ffffffff6200279d16565b945062002998565b600186111562002950576200294d858763ffffffff6200279d16565b94505b6200297c62001a4962002965600c546200263c565b689c2007651b250000009063ffffffff6200279d16565b905062002995816200121a878663ffffffff6200279d16565b94505b50505050919050565b6000806000806000620029b6600c546200263c565b9350620029c8846200046a886200263c565b9250600090506013546000148015620029df575082155b15620029f057600d54945062002998565b600183111562002a1957600d5460649004600101915062002a118662002af7565b905062002a91565b826001141562002a8657601354151562002a3b57600d54600202915062002a7b565b62002a46866200263c565b6001141562002a5d57600054600202915062002a7b565b62002a75600d5462002a6f8862002b1b565b62001282565b60020291505b62002a118662002af7565b5050600d54600c5485035b600081101562002aa057600080fd5b62002aaa620010c2565b1562002abc5762002929828262001282565b6200299582826200212c565b60006201518060165460125462002adf856200263c565b620151800281151562002aee57fe5b04010392915050565b60008062002b058362002ac8565b905062002b128162002276565b90920392915050565b60008062002b298362002ac8565b9050600c5462002b398262002276565b039392505050565b81548183558181151162002b685760008381526020902062002b6891810190830162002b7e565b505050565b6040516109ec8062002b9c83390190565b62000f0a91905b8082111562001a65576000815560010162002b85560060606040526002805460a060020a60ff0219169055341561001f57600080fd5b6040516040806109ec833981016040528080519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925083161515905061006c57600080fd5b600160a060020a038116151561008157600080fd5b60018054600160a060020a03938416600160a060020a03199182161790915560028054929093169116179055610930806100bc6000396000f3006060604052600436106100955763ffffffff60e060020a60003504166327fe75ed811461009a5780632af4c31e146100af57806334d8521b146100e25780633ccfd60b1461010757806347e7ef241461011a57806385aa61031461013c5780638da5cb5b1461016b578063ab2315111461017e578063cf30901214610191578063eef49ee3146101a4578063fc0c546a146101b7575b600080fd5b34156100a557600080fd5b6100ad6101ca565b005b34156100ba57600080fd5b6100ce600160a060020a0360043516610335565b604051901515815260200160405180910390f35b34156100ed57600080fd5b6100f56103ef565b60405190815260200160405180910390f35b341561011257600080fd5b6100ad6103f5565b341561012557600080fd5b6100ad600160a060020a0360043516602435610714565b341561014757600080fd5b61014f61083c565b604051600160a060020a03909116815260200160405180910390f35b341561017657600080fd5b61014f61084b565b341561018957600080fd5b6100f561085a565b341561019c57600080fd5b6100ce610860565b34156101af57600080fd5b6100f5610881565b34156101c257600080fd5b61014f610887565b60015433600160a060020a039081169116146101e557600080fd5b600154600160a060020a031662fca46f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561022357600080fd5b5af1151561023057600080fd5b50505060405180511515905061024557600080fd5b600154600160a060020a03166342c6498a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561028457600080fd5b5af1151561029157600080fd5b5050506040518051600154909150600160a060020a031662fca46f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156102da57600080fd5b5af115156102e757600080fd5b50505060405180519050101515156102fe57600080fd5b6002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b6000805433600160a060020a0390811691161461035157600080fd5b600160a060020a038216151561036657600080fd5b600054600160a060020a038381169116141561038157600080fd5b600054600160a060020a0380841691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a35060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60055481565b6000805481908190819033600160a060020a0390811691161461041757600080fd5b60025474010000000000000000000000000000000000000000900460ff16151561044057600080fd5b6003546000901161045057600080fd5b60015460009450600160a060020a031662fca46f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561049257600080fd5b5af1151561049f57600080fd5b505050604051805190509250600454600014801561050f5750600154600160a060020a0316631d38bebd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156104f757600080fd5b5af1151561050457600080fd5b505050604051805190505b156105705761054b61053e6064610532601960035461089690919063ffffffff16565b9063ffffffff6108cc16565b859063ffffffff6108e316565b9350610567600c610532866003546108f290919063ffffffff16565b60055560048390555b600454151561057e57600080fd5b60045461059490627861f863ffffffff6108e316565b4210610644576004546105ae90429063ffffffff6108f216565b91506105c382627861f863ffffffff6108cc16565b9050600081116105d257600080fd5b6005546105e99061053e908363ffffffff61089616565b935061060f610602627861f8600c63ffffffff61089616565b849063ffffffff6108e316565b421061061b5760035493505b61064061063182627861f863ffffffff61089616565b6004549063ffffffff6108e316565b6004555b600084111561070e57600354610660908563ffffffff6108f216565b600355600254600160a060020a031663a9059cbb338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156106b957600080fd5b5af115156106c657600080fd5b50505060405180515050600160a060020a0333167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58560405190815260200160405180910390a25b50505050565b60015460009033600160a060020a0390811691161461073257600080fd5b60025474010000000000000000000000000000000000000000900460ff161561075a57600080fd5b600254600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156107aa57600080fd5b5af115156107b757600080fd5b505050604051805190509050816107d9600354836108f290919063ffffffff16565b10156107e457600080fd5b6003546107f7908363ffffffff6108e316565b600355600160a060020a0383167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48360405190815260200160405180910390a2505050565b600154600160a060020a031681565b600054600160a060020a031681565b60045481565b60025474010000000000000000000000000000000000000000900460ff1681565b60035481565b600254600160a060020a031681565b6000808315156108a957600091506108c5565b508282028284828115156108b957fe5b04146108c157fe5b8091505b5092915050565b60008082848115156108da57fe5b04949350505050565b6000828201838110156108c157fe5b6000828211156108fe57fe5b509003905600a165627a7a72305820d194a03a5355bdf89ce1adc4fe81c2c36b0cf4bd329ec218876f5245176307fb0029a165627a7a723058204376475fee6893c20fb2ac11b1238d88858bc878ba542f3a88a3c6dabbf5202a0029\\",\\"binhash\\":\\"7672998d8040b93559895ac68ad9fae9811c2f8af00e9d338fb15ba1d3dfd4f8\\"},\\"AutonomousConverter:AutonomousConverter\\":{\\"source\\":\\"AutonomousConverter:AutonomousConverter\\",\\"name\\":\\"AutonomousConverter\\",\\"abi\\":[{\\"name\\":\\"init\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[{\\"name\\":\\"_reserveToken\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_smartToken\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"getMetBalance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getMetForQtumResult\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"convertQtumToMet\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"returnedMet\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"getQtumBalance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"handleFund\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"smartToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getQtumForMetResult\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"reserveToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"convertMetToQtum\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"returnedQtum\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogFundsIn\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"ConvertQtumToMet\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"qtum\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"met\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"ConvertMetToQtum\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"qtum\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"met\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526004805460a060020a60ff021916905560008054600160a060020a033316600160a060020a0319909116179055610e97806100406000396000f3006060604052600436106100c15763ffffffff60e060020a600035041663184b955981146100c65780632af4c31e146100e85780632eb969881461011b57806330662ff0146101405780633d1c18bf1461015657806375c21d66146101615780637679a8161461017457806379ba50971461017c57806385aa61031461018f5780638da5cb5b146101be578063c3e8fb40146101d1578063d4ee1d90146101e4578063eb73fda4146101f7578063f4325d671461020d578063fca20b0814610220575b600080fd5b6100e6600160a060020a0360043581169060243581169060443516610239565b005b34156100f357600080fd5b610107600160a060020a03600435166102f6565b604051901515815260200160405180910390f35b341561012657600080fd5b61012e61035c565b60405190815260200160405180910390f35b341561014b57600080fd5b61012e60043561036d565b61012e600435610380565b341561016c57600080fd5b61012e6103d9565b6100e66103e5565b341561018757600080fd5b610107610499565b341561019a57600080fd5b6101a261052a565b604051600160a060020a03909116815260200160405180910390f35b34156101c957600080fd5b6101a2610539565b34156101dc57600080fd5b6101a2610548565b34156101ef57600080fd5b6101a2610557565b341561020257600080fd5b61012e600435610566565b341561021857600080fd5b6101a2610573565b341561022b57600080fd5b61012e600435602435610582565b60005433600160a060020a0390811691161461025457600080fd5b60045474010000000000000000000000000000000000000000900460ff161561027c57600080fd5b600480546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a039788161790915560028054821695871695909517909455740100000000000000000000000000000000000000009316919093161774ff00000000000000000000000000000000000000001916179055565b6000805433600160a060020a0390811691161461031257600080fd5b600054600160a060020a038381169116141561032d57600080fd5b506001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161781555b919050565b600061036860016105dc565b905090565b600061037a600083610684565b92915050565b600061038e600083346107b0565b905033600160a060020a03167fd3df7f832b811a37403f56ed7d5866326fe5153072efff60aea4b71b1e1c3958348360405191825260208201526040908101905180910390a2919050565b600061036860006105dc565b600454600160a060020a03166355b5ec646040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561042457600080fd5b5af1151561043157600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561045a57600080fd5b33600160a060020a03167f7d6f066517cd2256fb0abf18362576d1a32243ec9e4424ca53ebe8440a56d4733460405190815260200160405180910390a2565b60015460009033600160a060020a039081169116146104b757600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600454600160a060020a031681565b600054600160a060020a031681565b600254600160a060020a031681565b600154600160a060020a031681565b600061037a600183610684565b600354600160a060020a031681565b6000610590600183856107b0565b905033600160a060020a03167f3f85ac303b8e81c8d3c98a9c8c4c8750745f063c9accff94d670eea196bc8402828560405191825260208201526040908101905180910390a292915050565b6000808260018111156105eb57fe5b14156106025750600160a060020a03301631610357565b600182600181111561061057fe5b14156100c157600354600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561066657600080fd5b5af1151561067357600080fd5b505050604051805190509050610357565b60006001818080808488600181111561069957fe5b14156106a457600094505b6106bd876106b18a6105dc565b9063ffffffff61087416565b60025490945061072190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561070357600080fd5b5af1151561071057600080fd5b50505060405180519050888661088e565b60025490935061078c908490600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561076957600080fd5b5af1151561077657600080fd5b505050604051805191905063ffffffff61087416565b9150610797856105dc565b90506107a48284836108fb565b98975050505050505050565b6000600181818660018111156107c257fe5b14156108515760035460009250600160a060020a03166323b872dd33308760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561082f57600080fd5b5af1151561083c57600080fd5b50505060405180519050151561085157600080fd5b61085b8685610931565b90506108688282876109c4565b92505b50509392505050565b60008282018381101561088357fe5b8091505b5092915050565b60008383836108f0670de0b6b3a76400006108e4816108d8876108d36108c56108c0856108bb8c8c610c0f565b610c34565b610c46565b670de0b6b3a7640000610ce8565b610cfa565b9063ffffffff610d1816565b9063ffffffff610d4316565b979650505050505050565b60008383836108f0670de0b6b3a76400006108e4816108d8856108d38361092761092c82828d8f610c0f565b610ce8565b610d5a565b600061093d8383610d66565b90506000811161094c57600080fd5b600254600160a060020a03166340c10f19338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156109a257600080fd5b5af115156109af57600080fd5b50505060405180519050151561037a57600080fd5b60025460009081908190600160a060020a03166370a082313360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610a1b57600080fd5b5af11515610a2857600080fd5b50505060405180518611159050610a3e57600080fd5b60008411610a4b57600080fd5b610a558686610de4565b925083831015610a6457600080fd5b610a6d866105dc565b915082821015610a7c57600080fd5b600254600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610abb57600080fd5b5af11515610ac857600080fd5b5050506040518051915050808510610adf57600080fd5b600254600160a060020a031663a24835d1338760405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b3557600080fd5b5af11515610b4257600080fd5b50505060405180515060009050866001811115610b5b57fe5b1415610b9757600160a060020a03331683156108fc0284604051600060405180830381858888f193505050501515610b9257600080fd5b61086b565b600354600160a060020a031663a9059cbb338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bed57600080fd5b5af11515610bfa57600080fd5b50505060405180519050151561086b57600080fd5b6000610c2d826108e485670de0b6b3a764000063ffffffff610d1816565b9392505050565b6000610c2d838363ffffffff61087416565b600080808080851515610c5c5760009450610cdf565b8586029350858685811515610c6d57fe5b0414610c7857600080fd5b610c8a86670de0b6b3a7640000610c34565b9250600091505b6001610c9d8484610ce8565b1115610cdb576002610caf8385610c34565b811515610cb857fe5b04905085610cc582610d5a565b11610cd257809150610cd6565b8092505b610c91565b8194505b50505050919050565b6000610c2d838363ffffffff610e5916565b6000610c2d670de0b6b3a76400006108e4858563ffffffff610d1816565b600080831515610d2b5760009150610887565b50828202828482811515610d3b57fe5b041461088357fe5b6000808284811515610d5157fe5b04949350505050565b600061037a8283610cfa565b60025460009081908190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610dac57600080fd5b5af11515610db957600080fd5b505050604051805190509150610dce856105dc565b9050610ddb82858361088e565b95945050505050565b60025460009081908190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e2a57600080fd5b5af11515610e3757600080fd5b505050604051805190509150610e4c856105dc565b9050610ddb8285836108fb565b600082821115610e6557fe5b509003905600a165627a7a72305820f2a07f5f04f3c1ec3991fd075d38f348f1aff0f4a735cd5e65d797f73141a9750029\\",\\"binhash\\":\\"0af288213dc65c157f2b3f52c0ae75118211d0676cba8da136fd711e457b2ed4\\"},\\"./contracts/FixedMath.sol:FixedMath\\":{\\"source\\":\\"./contracts/FixedMath.sol:FixedMath\\",\\"name\\":\\"FixedMath\\",\\"abi\\":[],\\"bin\\":\\"60606040523415600e57600080fd5b603580601b6000396000f3006060604052600080fd00a165627a7a72305820cc31be260cfb9d20dff89f02475c04aed3ac31998df5d8b35ff3765463c9ba4e0029\\",\\"binhash\\":\\"4c9b2094dc1ba4e77816493aa9aa668d4e8145dc9f1a5a56017cd302c8603cd4\\"},\\"./contracts/Formula.sol:Formula\\":{\\"source\\":\\"./contracts/Formula.sol:Formula\\",\\"name\\":\\"Formula\\",\\"abi\\":[],\\"bin\\":\\"60606040523415600e57600080fd5b603580601b6000396000f3006060604052600080fd00a165627a7a723058204d6d6736d3ee339f9cd138a6d0641a1d004332ef93d999770dafd62bc900c8c40029\\",\\"binhash\\":\\"4c9b2094dc1ba4e77816493aa9aa668d4e8145dc9f1a5a56017cd302c8603cd4\\"},\\"METToken:METToken\\":{\\"source\\":\\"METToken:METToken\\",\\"name\\":\\"METToken\\",\\"abi\\":[{\\"name\\":\\"name\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getRoot\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"addr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approve\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initMETToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"transferFrom\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"decimals\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint8\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"transferAllowed\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mint\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"export\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approveMore\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"enableMETTransfers\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"autonomousConverter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"getSubscription\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"leakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"importMET\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\",\\"indexed\\":false},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"balanceOf\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approveLess\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"subWithdraw\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"cancelSubscription\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"symbol\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destroy\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"roots\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"transfer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"subscribe\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_payPerWeek\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"multiTransfer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"bits\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"resetLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"multiSubWithdraw\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"subs\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"rootsMatch\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"a\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"b\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setRoot\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"data\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"allowance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"multiSubWithdrawFor\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\",\\"indexed\\":false},{\\"name\\":\\"_recipients\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogSubscription\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogCancelSubscription\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Mint\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Approval\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260008054600160a060020a033316600160a060020a0319909116179055612226806100306000396000f3006060604052600436106101f55763ffffffff60e060020a60003504166306fdde0381146101fa5780630754617214610284578063079cf76e146102b3578063095ea7b3146102e457806318160ddd1461031a578063195629de1461032d5780631987b8871461035a57806323b872dd146103795780632af4c31e146103a1578063313ce567146103c057806334fec467146103e95780633bf11a6c146103fc57806340c10f191461042757806346be2310146104495780634892f0af146104d95780634cef0ff6146104ec5780634ee4d7311461050e57806350b48c5e146105215780635b75dd8d146105345780635c9b2e921461057d5780636ffbff9c1461059057806370a082311461074d5780637240eccf1461076c57806379ba50971461078e5780638da5cb5b146107a157806393b212bc146107b457806393d81d58146107d357806395d89b41146107f2578063a24835d114610805578063a454687614610827578063a9059cbb14610846578063aa4925d714610868578063b33fcc7a1461088d578063b625690d146108dc578063baaef4af146108f2578063bae1cc7414610905578063c3f51fca14610954578063cd755b411461097f578063d2d85cf2146109a4578063d4ee1d90146109c9578063dab5f340146109dc578063dd62ed3e146109f2578063e6f4761314610a17575b600080fd5b341561020557600080fd5b61020d610aa6565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610249578082015183820152602001610231565b50505050905090810190601f1680156102765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028f57600080fd5b610297610add565b604051600160a060020a03909116815260200160405180910390f35b34156102be57600080fd5b6102d2600160a060020a0360043516610aec565b60405190815260200160405180910390f35b34156102ef57600080fd5b610306600160a060020a0360043516602435610b07565b604051901515815260200160405180910390f35b341561032557600080fd5b6102d2610b93565b341561033857600080fd5b610358600160a060020a0360043581169060243516604435606435610b99565b005b341561036557600080fd5b610306600160a060020a0360043516610bc6565b341561038457600080fd5b610306600160a060020a0360043581169060243516604435610c29565b34156103ac57600080fd5b610306600160a060020a0360043516610c50565b34156103cb57600080fd5b6103d3610cb7565b60405160ff909116815260200160405180910390f35b34156103f457600080fd5b610306610cbc565b341561040757600080fd5b610358600160a060020a0360043581169060243516604435606435610cc5565b341561043257600080fd5b610306600160a060020a0360043516602435610cec565b341561045457600080fd5b6103066004803577ffffffffffffffffffffffffffffffffffffffffffffffff19169060248035600160a060020a039081169260443590911691606435916084359160c49060a43590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610df095505050505050565b34156104e457600080fd5b610297610f35565b34156104f757600080fd5b610306600160a060020a0360043516602435610f44565b341561051957600080fd5b610306610fed565b341561052c57600080fd5b610297611074565b341561053f57600080fd5b610559600160a060020a0360043581169060243516611083565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561058857600080fd5b6102d26110bb565b341561059b57600080fd5b61030677ffffffffffffffffffffffffffffffffffffffffffffffff1960048035821691602480359091169190606490604435908101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506110c195505050505050565b341561075857600080fd5b6102d2600160a060020a03600435166113a8565b341561077757600080fd5b610306600160a060020a03600435166024356113c3565b341561079957600080fd5b6103066113fc565b34156107ac57600080fd5b61029761148d565b34156107bf57600080fd5b610306600160a060020a036004351661149c565b34156107de57600080fd5b610306600160a060020a03600435166114cd565b34156107fd57600080fd5b61020d6115a1565b341561081057600080fd5b610306600160a060020a03600435166024356115d8565b341561083257600080fd5b6102d2600160a060020a03600435166116dc565b341561085157600080fd5b610306600160a060020a03600435166024356116ee565b341561087357600080fd5b610306600435602435600160a060020a0360443516611713565b341561089857600080fd5b61030660046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506117e595505050505050565b34156108e757600080fd5b610358600435611808565b34156108fd57600080fd5b6103586118cf565b341561091057600080fd5b6102d2600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061190c95505050505050565b341561095f57600080fd5b610358600160a060020a0360043581169060243516604435606435611954565b341561098a57600080fd5b610559600160a060020a0360043581169060243516611a3b565b34156109af57600080fd5b610306600160a060020a0360043581169060243516611a67565b34156109d457600080fd5b610297611a8e565b34156109e757600080fd5b610358600435611a9d565b34156109fd57600080fd5b6102d2600160a060020a0360043581169060243516611ab8565b3415610a2257600080fd5b6102d2600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611ae395505050505050565b60408051908101604052600981527f4d6574726f6e6f6d650000000000000000000000000000000000000000000000602082015281565b600654600160a060020a031681565b600160a060020a03166000908152600a602052604090205490565b600030600160a060020a031683600160a060020a031614151515610b2a57600080fd5b600160a060020a03338116600081815260086020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60025490565b60005433600160a060020a03908116911614610bb457600080fd5b610bc084848484610cc5565b50505050565b6000805433600160a060020a03908116911614610be257600080fd5b600160a060020a0382161515610bf757600080fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60095460009060ff161515610c3d57600080fd5b610c48848484611b56565b949350505050565b6000805433600160a060020a03908116911614610c6c57600080fd5b600054600160a060020a0383811691161415610c8757600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b601281565b60095460ff1681565b60005433600160a060020a03908116911614610ce057600080fd5b610bc084848484611954565b60065460009033600160a060020a0390811691161480610d1a575060075433600160a060020a039081169116145b1515610d2557600080fd5b600160a060020a038316600090815260046020526040902054610d4e908363ffffffff611dcc16565b600160a060020a038416600090815260046020526040902055600254610d7a908363ffffffff611dcc16565b600255600160a060020a0383167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405190815260200160405180910390a282600160a060020a031660006000805160206121db8339815191528460405190815260200160405180910390a350600192915050565b600754600090600160a060020a03161515610e0a57600080fd5b600754600160a060020a031663f29b20403389898989898960405160e060020a63ffffffff8a16028152600160a060020a038089166004830190815277ffffffffffffffffffffffffffffffffffffffffffffffff1989166024840152878216604484015290861660648301526084820185905260a4820184905260e060c48301908152909160e40183818151815260200191508051906020019080838360005b83811015610ec3578082015183820152602001610eab565b50505050905090810190601f168015610ef05780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1515610f1457600080fd5b5af11515610f2157600080fd5b505050604051805198975050505050505050565b600754600160a060020a031681565b600160a060020a03338116600090815260086020908152604080832093861683529290529081205481610f7d828563ffffffff611dcc16565b600160a060020a033381166000818152600860209081526040808320948b16808452949091529081902084905592935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a3506001949350505050565b60095460009060ff161580156110555750600654600160a060020a0316631d38bebd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561103d57600080fd5b5af1151561104a57600080fd5b505050604051805190505b151561106057600080fd5b506009805460ff1916600190811790915590565b600554600160a060020a031681565b600160a060020a039182166000908152600b602090815260408083209390941682529190915220805460018201546002909201549092565b60035481565b600754600090600160a060020a031615156110db57600080fd5b600754600160a060020a0316636ffbff9c8a8a8a8a8a8a8a8a6040518963ffffffff1660e060020a028152600401808977ffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020018877ffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b838110156111d25780820151838201526020016111ba565b5050505090500187810386528c818151815260200191508051906020019080838360005b8381101561120e5780820151838201526020016111f6565b50505050905090810190601f16801561123b5780820380516001836020036101000a031916815260200191505b5087810385528b818151815260200191508051906020019060200280838360005b8381101561127457808201518382015260200161125c565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b838110156112b357808201518382015260200161129b565b50505050905001878103835289818151815260200191508051906020019060200280838360005b838110156112f25780820151838201526020016112da565b50505050905001878103825288818151815260200191508051906020019080838360005b8381101561132e578082015183820152602001611316565b50505050905090810190601f16801561135b5780820380516001836020036101000a031916815260200191505b509e505050505050505050505050505050602060405180830381600087803b151561138557600080fd5b5af1151561139257600080fd5b50505060405180519a9950505050505050505050565b600160a060020a031660009081526004602052604090205490565b600160a060020a03338116600090815260086020908152604080832093861683529290529081205481610f7d828563ffffffff611ddb16565b60015460009033600160a060020a0390811691161461141a57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600054600160a060020a031681565b60095460009060ff1615156114b057600080fd5b6114ba8233611ded565b15156114c557600080fd5b506001919050565b600160a060020a033381166000908152600b60209081526040808320938516835292905290812054151561150057600080fd5b600160a060020a033381166000908152600b6020908152604080832093861683529290522060010154151561153457600080fd5b600160a060020a033381166000818152600b602090815260408083209487168084529490915280822082815560018101839055600201919091557f4bc04e574b4f2b061a663b3328263978d3adeab9e4ea9526441c159cdee4eca8905160405180910390a3506001919050565b60408051908101604052600381527f4d45540000000000000000000000000000000000000000000000000000000000602082015281565b60055460009033600160a060020a0390811691161480611606575060075433600160a060020a039081169116145b151561161157600080fd5b600160a060020a03831660009081526004602052604090205461163a908363ffffffff611ddb16565b600160a060020a038416600090815260046020526040902055600254611666908363ffffffff611ddb16565b600255600160a060020a0383167f81325e2a6c442af9d36e4ee9697f38d5f4bf0837ade0f6c411c6a40af7c057ee8360405190815260200160405180910390a2600083600160a060020a03166000805160206121db8339815191528460405190815260200160405180910390a350600192915050565b600a6020526000908152604090205481565b60095460009060ff16151561170257600080fd5b61170c8383611f8b565b9392505050565b60004284101561172257600080fd5b82151561172e57600080fd5b600160a060020a038216151561174357600080fd5b606060405190810160409081528582526020808301869052818301879052600160a060020a033381166000908152600b8352838120918716815291522081518155602082015181600101556040820151816002015590505081600160a060020a031633600160a060020a03167f5c632ccb5c42002836e0c49ef1f6d67e925c5e77c1048ddbb47a9bf6a0f2d01260405160405180910390a35060019392505050565b60095460009060ff1615156117f957600080fd5b61180282612118565b92915050565b60065433600160a060020a0390811691161480611833575060075433600160a060020a039081169116145b151561183e57600080fd5b600654600160a060020a03166322ce61b26040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561187d57600080fd5b5af1151561188a57600080fd5b505050604051805190506118ab600354600254611dcc90919063ffffffff16565b11156118b657600080fd5b6003546118c9908263ffffffff611dcc16565b60035550565b60065433600160a060020a03908116911614806118fa575060075433600160a060020a039081169116145b151561190557600080fd5b6000600355565b600080805b835181101561194d5761193984828151811061192957fe5b9060200190602002015133611ded565b15611945576001909101905b600101611911565b5092915050565b60005433600160a060020a0390811691161461196f57600080fd5b600554600160a060020a03161580156119905750600160a060020a03841615155b151561199b57600080fd5b600654600160a060020a03161580156119bc5750600160a060020a03831615155b15156119c757600080fd5b60058054600160a060020a0380871673ffffffffffffffffffffffffffffffffffffffff19928316179092556006805492861692909116919091179055611a14828263ffffffff61219816565b6002819055600160a060020a03909416600090815260046020526040902093909355505050565b600b60209081526000928352604080842090915290825290208054600182015460029092015490919083565b600160a060020a039081166000908152600a60205260408082205493909216815220541490565b600154600160a060020a031681565b600160a060020a0333166000908152600a6020526040902055565b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b60008060008351855114611af657600080fd5b5060009050805b8451811015611b4e57611b3a858281518110611b1557fe5b90602001906020020151858381518110611b2b57fe5b90602001906020020151611ded565b15611b46576001909101905b600101611afd565b509392505050565b600080600160a060020a0384161515611b6e57600080fd5b600654600160a060020a03858116911614801590611b9a5750600654600160a060020a03868116911614155b1515611ba557600080fd5b30600160a060020a031684600160a060020a031614158015611bd9575030600160a060020a031685600160a060020a031614155b1515611be457600080fd5b600654600160a060020a03166355b5ec646040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611c2357600080fd5b5af11515611c3057600080fd5b50505060405180519050905080600160a060020a031684600160a060020a031614158015611c70575080600160a060020a031685600160a060020a031614155b1515611c7b57600080fd5b600554600160a060020a0386811691161415611c9657600080fd5b600160a060020a038086166000908152600860209081526040808320339094168352929052205483901015611cca57600080fd5b600160a060020a038516600090815260046020526040902054611cf3908463ffffffff611ddb16565b600160a060020a038087166000908152600460205260408082209390935590861681522054611d28908463ffffffff611dcc16565b600160a060020a03808616600090815260046020908152604080832094909455888316825260088152838220339093168252919091522054611d70908463ffffffff611ddb16565b600160a060020a03808716600081815260086020908152604080832033861684529091529081902093909355908616916000805160206121db8339815191529086905190815260200160405180910390a3506001949350505050565b60008282018381101561170c57fe5b600082821115611de757fe5b50900390565b600160a060020a038083166000908152600b6020908152604080832093851683529290529081208054829081908190118015611e2a575082544290105b8015611e3a575060008360010154115b15611f7d57611e6962093a80611e5d856002015442611ddb90919063ffffffff16565b9063ffffffff6121c316565b9150611e8283600101548361219890919063ffffffff16565b9050600082118015611ead5750600160a060020a038616600090815260046020526040902054819010155b15611f7d57600160a060020a038087166000818152600b60209081526040808320948a1683529381528382204260029091015591815260049091522054611efa908263ffffffff611ddb16565b600160a060020a038088166000908152600460205260408082209390935590871681522054611f2f908263ffffffff611dcc16565b600160a060020a03808716600081815260046020526040908190209390935591908816906000805160206121db8339815191529084905190815260200160405180910390a360019350611f82565b600093505b50505092915050565b600080600160a060020a0384161515611fa357600080fd5b600654600160a060020a0385811691161415611fbe57600080fd5b30600160a060020a031684600160a060020a031614151515611fdf57600080fd5b600554600160a060020a0385811691161415611ffa57600080fd5b600654600160a060020a03166355b5ec646040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561203957600080fd5b5af1151561204657600080fd5b5050506040518051915050600160a060020a03848116908216141561206a57600080fd5b600160a060020a033316600090815260046020526040902054612093908463ffffffff611ddb16565b600160a060020a0333811660009081526004602052604080822093909355908616815220546120c8908463ffffffff611dcc16565b600160a060020a0380861660008181526004602052604090819020939093559133909116906000805160206121db8339815191529086905190815260200160405180910390a35060019392505050565b60008080805b845183101561218d57606085848151811061213557fe5b906020019060200201519060020a9004915084838151811061215357fe5b906020019060200201516bffffffffffffffffffffffff16905061217782826116ee565b151561218257600080fd5b60019092019161211e565b506001949350505050565b6000808315156121ab576000915061194d565b508282028284828115156121bb57fe5b041461170c57fe5b60008082848115156121d157fe5b049493505050505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820e771a652cbcf0ea8ce6ea34e4843db1aa33959d4bcb5058af27002aa731f83c50029\\",\\"binhash\\":\\"0e54e7a883c5a99cb6bfccde856bb50c5253f504d23b61d1767be3063ecffce0\\"},\\"./contracts/Mintable.sol:Mintable\\":{\\"source\\":\\"./contracts/Mintable.sol:Mintable\\",\\"name\\":\\"Mintable\\",\\"abi\\":[{\\"name\\":\\"minter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"totalSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mint\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"autonomousConverter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"leakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"balanceOf\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destroy\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"resetLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"Mint\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260008054600160a060020a033316600160a060020a031990911617905561093b806100306000396000f3006060604052600436106100e55763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630754617281146100ea57806318160ddd146101195780631987b8871461013e5780632af4c31e1461017157806340c10f19146101905780634892f0af146101b257806350b48c5e146101c55780635c9b2e92146101d857806370a08231146101eb57806379ba50971461020a5780638da5cb5b1461021d578063a24835d114610230578063b625690d14610252578063baaef4af1461026a578063c3f51fca1461027d578063d4ee1d90146102a8575b600080fd5b34156100f557600080fd5b6100fd6102bb565b604051600160a060020a03909116815260200160405180910390f35b341561012457600080fd5b61012c6102ca565b60405190815260200160405180910390f35b341561014957600080fd5b61015d600160a060020a03600435166102d0565b604051901515815260200160405180910390f35b341561017c57600080fd5b61015d600160a060020a0360043516610333565b341561019b57600080fd5b61015d600160a060020a036004351660243561039a565b34156101bd57600080fd5b6100fd6104b0565b34156101d057600080fd5b6100fd6104bf565b34156101e357600080fd5b61012c6104ce565b34156101f657600080fd5b61012c600160a060020a03600435166104d4565b341561021557600080fd5b61015d6104ef565b341561022857600080fd5b6100fd610580565b341561023b57600080fd5b61015d600160a060020a036004351660243561058f565b341561025d57600080fd5b6102686004356106a5565b005b341561027557600080fd5b610268610785565b341561028857600080fd5b610268600160a060020a03600435811690602435166044356064356107c2565b34156102b357600080fd5b6100fd6108a9565b600654600160a060020a031681565b60025490565b6000805433600160a060020a039081169116146102ec57600080fd5b600160a060020a038216151561030157600080fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b6000805433600160a060020a0390811691161461034f57600080fd5b600054600160a060020a038381169116141561036a57600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b60065460009033600160a060020a03908116911614806103c8575060075433600160a060020a039081169116145b15156103d357600080fd5b600160a060020a0383166000908152600460205260409020546103fc908363ffffffff6108b816565b600160a060020a038416600090815260046020526040902055600254610428908363ffffffff6108b816565b600255600160a060020a0383167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b600754600160a060020a031681565b600554600160a060020a031681565b60035481565b600160a060020a031660009081526004602052604090205490565b60015460009033600160a060020a0390811691161461050d57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600054600160a060020a031681565b60055460009033600160a060020a03908116911614806105bd575060075433600160a060020a039081169116145b15156105c857600080fd5b600160a060020a0383166000908152600460205260409020546105f1908363ffffffff6108d216565b600160a060020a03841660009081526004602052604090205560025461061d908363ffffffff6108d216565b600255600160a060020a0383167f81325e2a6c442af9d36e4ee9697f38d5f4bf0837ade0f6c411c6a40af7c057ee8360405190815260200160405180910390a2600083600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60065433600160a060020a03908116911614806106d0575060075433600160a060020a039081169116145b15156106db57600080fd5b600654600160a060020a03166322ce61b26040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561073357600080fd5b5af1151561074057600080fd5b505050604051805190506107616003546002546108b890919063ffffffff16565b111561076c57600080fd5b60035461077f908263ffffffff6108b816565b60035550565b60065433600160a060020a03908116911614806107b0575060075433600160a060020a039081169116145b15156107bb57600080fd5b6000600355565b60005433600160a060020a039081169116146107dd57600080fd5b600554600160a060020a03161580156107fe5750600160a060020a03841615155b151561080957600080fd5b600654600160a060020a031615801561082a5750600160a060020a03831615155b151561083557600080fd5b60058054600160a060020a0380871673ffffffffffffffffffffffffffffffffffffffff19928316179092556006805492861692909116919091179055610882828263ffffffff6108e416565b6002819055600160a060020a03909416600090815260046020526040902093909355505050565b600154600160a060020a031681565b6000828201838110156108c757fe5b8091505b5092915050565b6000828211156108de57fe5b50900390565b6000808315156108f757600091506108cb565b5082820282848281151561090757fe5b04146108c757fe00a165627a7a72305820dec072d841bb982259ee7390686107b82f80eb9f7770f592f704d957340bfc090029\\",\\"binhash\\":\\"04d49b2dc671da370e7a9e06786a79f3279dec5aedb11ab140e5d79eb8c1fb0d\\"},\\"./contracts/Ownable.sol:Ownable\\":{\\"source\\":\\"./contracts/Ownable.sol:Ownable\\",\\"name\\":\\"Ownable\\",\\"abi\\":[{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"constructor\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a03199091161790556101a78061003b6000396000f30060606040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632af4c31e81146100505780638da5cb5b14610083575b600080fd5b341561005b57600080fd5b61006f600160a060020a03600435166100b2565b604051901515815260200160405180910390f35b341561008e57600080fd5b61009661016c565b604051600160a060020a03909116815260200160405180910390f35b6000805433600160a060020a039081169116146100ce57600080fd5b600160a060020a03821615156100e357600080fd5b600054600160a060020a03838116911614156100fe57600080fd5b600054600160a060020a0380841691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a35060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600054600160a060020a0316815600a165627a7a72305820170e6a7ec7de34ba37a809cfe96464aa1af17e7de76b9d7d8b7afe37b49c7ca10029\\",\\"binhash\\":\\"6a952554c7b78dabd315c883acb2d76f2d2d060ab1756ffcf72ad62b589a85db\\"},\\"./contracts/Owned.sol:Owned\\":{\\"source\\":\\"./contracts/Owned.sol:Owned\\",\\"name\\":\\"Owned\\",\\"abi\\":[{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260008054600160a060020a033316600160a060020a0319909116179055610230806100306000396000f3006060604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632af4c31e811461006657806379ba5097146100995780638da5cb5b146100ac578063d4ee1d90146100db575b600080fd5b341561007157600080fd5b610085600160a060020a03600435166100ee565b604051901515815260200160405180910390f35b34156100a457600080fd5b610085610155565b34156100b757600080fd5b6100bf6101e6565b604051600160a060020a03909116815260200160405180910390f35b34156100e657600080fd5b6100bf6101f5565b6000805433600160a060020a0390811691161461010a57600080fd5b600054600160a060020a038381169116141561012557600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b60015460009033600160a060020a0390811691161461017357600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600054600160a060020a031681565b600154600160a060020a0316815600a165627a7a72305820fc10b91e43b4b863a376b33fdcbc42f98178fd60074cf1bfa4f56bbfb53e12af0029\\",\\"binhash\\":\\"3d5f6a24086804e752e224b2d6884dd8eaf9d73563079e6909358ab6a256686c\\"},\\"./contracts/Pricer.sol:Pricer\\":{\\"source\\":\\"./contracts/Pricer.sol:Pricer\\",\\"name\\":\\"Pricer\\",\\"abi\\":[{\\"name\\":\\"priceAt\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"initialPrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_n\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumPriceInDailyAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"MULTIPLIER\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tentimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hundredtimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumPrice\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"thousandtimes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"priceAtInitialAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"numTicks\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initPricer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526503005753e80060005560018055341561001d57600080fd5b6104af8061002c6000396000f3006060604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301dbdf44811461009d578063053f7492146100c8578063059f8b16146100db5780630d2a25bb146100ee5780633264a844146101015780637f386b6c146101145780639b8abe0b14610127578063a8afc5381461013a578063c1f7c53914610153575b600080fd5b34156100a857600080fd5b6100b6600435602435610168565b60405190815260200160405180910390f35b34156100d357600080fd5b6100b66102da565b34156100e657600080fd5b6100b66102e0565b34156100f957600080fd5b6100b66102ea565b341561010c57600080fd5b6100b66102f0565b341561011f57600080fd5b6100b66102f6565b341561013257600080fd5b6100b66102fc565b341561014557600080fd5b6100b6600435602435610302565b341561015e57600080fd5b61016661035f565b005b6000670de0b6b3a76400008183816103e8820411156101d357600091505b6103e881048210156101cd576004546101c090670de0b6b3a7640000906101b490869063ffffffff61042416565b9063ffffffff61045a16565b9250600190910190610186565b6103e890065b600060648204111561022357600091505b6064810482101561021e5760035461021190670de0b6b3a7640000906101b490869063ffffffff61042416565b92506001909101906101e4565b606490065b6000600a8204111561027357600091505b600a810482101561026e5760025461026190670de0b6b3a7640000906101b490869063ffffffff61042416565b9250600190910190610234565b600a90065b600091505b808210156102a35761029660646101b485606363ffffffff61042416565b9250600190910190610278565b6102bf670de0b6b3a76400006101b4888663ffffffff61042416565b93506001548410156102d15760015493505b50505092915050565b60015481565b65b4791041f30081565b60025481565b60035481565b60005481565b60045481565b600061031a65b4791041f3008363ffffffff61042416565b83111561034a5761034761033a65b4791041f3008463ffffffff61042416565b849063ffffffff61047116565b90505b60005481101561035957506000545b92915050565b670de0b6b3a764000060005b600a8110156103945761038a60646101b484606363ffffffff61042416565b915060010161036b565b50600255670de0b6b3a764000060005b600a8110156103d9576002546103cf90670de0b6b3a7640000906101b490859063ffffffff61042416565b91506001016103a4565b50600355670de0b6b3a764000060005b600a81101561041e5760035461041490670de0b6b3a7640000906101b490859063ffffffff61042416565b91506001016103e9565b50600455565b6000808315156104375760009150610453565b5082820282848281151561044757fe5b041461044f57fe5b8091505b5092915050565b600080828481151561046857fe5b04949350505050565b60008282111561047d57fe5b509003905600a165627a7a72305820893e7914f07d1928c6909c4435eac17da3f2c6e78bf3aa679114b51a42eee5b90029\\",\\"binhash\\":\\"b83b8e0f6e45faaa74376c4eab4515cfb8452d39071d98b718252b544d330119\\"},\\"Proceeds:Proceeds\\":{\\"source\\":\\"Proceeds:Proceeds\\",\\"name\\":\\"Proceeds\\",\\"abi\\":[{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"closeAuction\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"autonomousConverter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"handleFund\\",\\"type\\":\\"function\\",\\"payable\\":true,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initProceeds\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"LogProceedsIn\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogClosedAuction\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260008054600160a060020a033316600160a060020a0319909116179055610627806100306000396000f30060606040526004361061007f5763ffffffff60e060020a6000350416632af4c31e8114610084578063378252f2146100b757806350b48c5e146100cc5780637679a816146100fb57806379ba50971461010357806385aa6103146101165780638da5cb5b14610129578063ae71d5da1461013c578063d4ee1d9014610161575b600080fd5b341561008f57600080fd5b6100a3600160a060020a0360043516610174565b604051901515815260200160405180910390f35b34156100c257600080fd5b6100ca6101db565b005b34156100d757600080fd5b6100df6103d9565b604051600160a060020a03909116815260200160405180910390f35b6100ca6103e8565b341561010e57600080fd5b6100a3610442565b341561012157600080fd5b6100df6104d3565b341561013457600080fd5b6100df6104e2565b341561014757600080fd5b6100ca600160a060020a03600435811690602435166104f1565b341561016c57600080fd5b6100df61059f565b6000805433600160a060020a0390811691161461019057600080fd5b600054600160a060020a03838116911614156101ab57600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b60035460009081908190600160a060020a031663212884006040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561022157600080fd5b5af1151561022e57600080fd5b5050506040518051600354909450600160a060020a0316905063496a698d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561027a57600080fd5b5af1151561028757600080fd5b505050604051805192506102c090506127106102b4600160a060020a03301631601963ffffffff6105ae16565b9063ffffffff6105e416565b905060008111801561032f5750600354600160a060020a031663fde9cded8460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561031557600080fd5b5af1151561032257600080fd5b5050506040518051905082115b801561033c575081600454105b156103d4576004829055600254600160a060020a0316637679a816826040518263ffffffff1660e060020a0281526004016000604051808303818588803b151561038557600080fd5b5af1151561039257600080fd5b5050505033600160a060020a03167fce45c14a6c726f7154c3b98d500c578e3d8e91aeb29d5f9d12edb07b88f854828260405190815260200160405180910390a25b505050565b600254600160a060020a031681565b60035433600160a060020a0390811691161461040357600080fd5b33600160a060020a03167f6149d6fbfad1c173e29b8de83d7df1b09c0eaba8c3040a4c287f6f1333e60e273460405190815260200160405180910390a2565b60015460009033600160a060020a0390811691161461046057600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600354600160a060020a031681565b600054600160a060020a031681565b60005433600160a060020a0390811691161461050c57600080fd5b600354600160a060020a031615801561052d5750600160a060020a03811615155b151561053857600080fd5b600254600160a060020a03161580156105595750600160a060020a03821615155b151561056457600080fd5b60028054600160a060020a0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560038054929093169116179055565b600154600160a060020a031681565b6000808315156105c157600091506105dd565b508282028284828115156105d157fe5b04146105d957fe5b8091505b5092915050565b60008082848115156105f257fe5b049493505050505600a165627a7a7230582026f244ada8d4ac34f8743488e723dd11f31155bff4b093b29eda39d3c8486a500029\\",\\"binhash\\":\\"9dd1bbe7fa2e881774f4784e42c16d09dc6671aec6acd2a1b976cc2d59f5d0a5\\"},\\"Proposals:Proposals\\":{\\"source\\":\\"Proposals:Proposals\\",\\"name\\":\\"Proposals\\",\\"abi\\":[{\\"name\\":\\"proposals\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"validator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"votingPeriod\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"closeProposal\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"setValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"validator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"voteForProposal\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_support\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"proposeNewValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"actions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"proposeRemoveValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"proposeNewThreshold\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateVotingPeriod\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_t\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"constructor\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogVoted\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"voter\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"support\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogProposalCreated\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"creator\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogProposalClosed\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526213c68060025534156200001757600080fd5b60008054600160a060020a03191633600160a060020a0316179055600480546001810162000046838262000101565b50600091825260209091207f61646476616c0000000000000000000000000000000000000000000000000000910155600480546001810162000089838262000101565b50600091825260209091207f72656d6f766576616c00000000000000000000000000000000000000000000009101556004805460018101620000cc838262000101565b50600091825260209091207f7570646174657468726573686f6c64000000000000000000000000000000000091015562000151565b8154818355818115116200012857600083815260209020620001289181019083016200012d565b505050565b6200014e91905b808211156200014a576000815560010162000134565b5090565b90565b61143d80620001616000396000f3006060604052600436106100c15763ffffffff60e060020a600035041663013cf08b81146100c657806302a251a3146101225780630386a016146101475780631327d3d81461015f5780632af4c31e146101925780633a5381b5146101b15780636505e8e8146101e057806379ba5097146101fb5780637afc7f131461020e57806383240f83146102305780638da5cb5b14610246578063a4ed7cda14610259578063d4ee1d901461027b578063e0e887d01461028e578063ef00ef43146102a4575b600080fd5b34156100d157600080fd5b6100dc6004356102ba565b6040519687526020870195909552604080870194909452600160a060020a039092166060860152608085015260a084015290151560c083015260e0909101905180910390f35b341561012d57600080fd5b610135610314565b60405190815260200160405180910390f35b341561015257600080fd5b61015d60043561031a565b005b341561016a57600080fd5b61017e600160a060020a0360043516610593565b604051901515815260200160405180910390f35b341561019d57600080fd5b61017e600160a060020a03600435166105f6565b34156101bc57600080fd5b6101c461065d565b604051600160a060020a03909116815260200160405180910390f35b34156101eb57600080fd5b61015d600435602435151561066c565b341561020657600080fd5b61017e61089d565b341561021957600080fd5b610135600160a060020a036004351660243561092f565b341561023b57600080fd5b610135600435610b30565b341561025157600080fd5b6101c4610b4f565b341561026457600080fd5b61015d600160a060020a0360043516602435610b5e565b341561028657600080fd5b6101c4610d5d565b341561029957600080fd5b61015d600435610d6c565b34156102af57600080fd5b61017e600435610ec0565b60058054829081106102c857fe5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460079096015494965092949193600160a060020a0390911692919060ff1687565b60025481565b60008060058381548110151561032c57fe5b90600052602060002090600902016002015460001415151561034d57600080fd5b600354600160a060020a03166342cde4e86040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561038c57600080fd5b5af1151561039957600080fd5b505050604051805190506005848154811015156103b257fe5b9060005260206000209060090201600501541015156103fa576103f5836005858154811015156103de57fe5b906000526020600020906009020160040154610ef1565b61058e565b600580548490811061040857fe5b90600052602060002090600902016002015442111561058e5760048054600190811061043057fe5b600091825260209091200154600580548590811061044a57fe5b906000526020600020906009020160010154600019161480156104ae5750600580548490811061047657fe5b90600052602060002090600902016005015460058481548110151561049757fe5b906000526020600020906009020160060180549050145b1561058e57600354600290600160a060020a031663274982406040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156104f557600080fd5b5af1151561050257600080fd5b5050506040518051905060010181151561051857fe5b6003549190049250600190600160a060020a03166342cde4e86040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561055f57600080fd5b5af1151561056c57600080fd5b50505060405180519050039050818110156105845750805b61058e8382610ef1565b505050565b6000805433600160a060020a039081169116146105af57600080fd5b600160a060020a03821615156105c457600080fd5b5060038054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b6000805433600160a060020a0390811691161461061257600080fd5b600054600160a060020a038381169116141561062d57600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b600354600160a060020a031681565b600354600160a060020a031663facd743b3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156106bc57600080fd5b5af115156106c957600080fd5b5050506040518051905015156106de57600080fd5b60058054839081106106ec57fe5b90600052602060002090600902016002015460001415151561070d57600080fd5b600580548390811061071b57fe5b9060005260206000209060090201600201544210151561073a57600080fd5b600580548390811061074857fe5b60009182526020808320600160a060020a03331684526008600990930201919091019052604090205460ff161561077e57600080fd5b600580548390811061078c57fe5b906000526020600020906009020160060180548060010182816107af9190611312565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03161790556005805460019190849081106107f357fe5b6000918252602080832033600160a060020a03168452600992909202909101600801905260409020805460ff1916911515919091179055801561085957600580548390811061083e57fe5b60009182526020909120600560099092020101805460010190555b33600160a060020a0316827f90bc9818c321b37fcc42e126e9f66c87cfb1ae4e5246999564448b0cfba3957683604051901515815260200160405180910390a35050565b60015460009033600160a060020a039081169116146108bb57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b90565b6003546000908190600160a060020a031663facd743b3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561098457600080fd5b5af1151561099157600080fd5b5050506040518051905015156109a657600080fd5b600160a060020a03841615156109bb57600080fd5b600354600160a060020a031663facd743b8560405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610a0b57600080fd5b5af11515610a1857600080fd5b5050506040518051159050610a2c57600080fd5b6000831115610b0157600354600160a060020a031663274982406040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a7457600080fd5b5af11515610a8157600080fd5b5050506040518051600354909250600160a060020a0316905063faa8fd7c600183018560405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610adf57600080fd5b5af11515610aec57600080fd5b505050604051805190501515610b0157600080fd5b610b28843360046000815481101515610b1657fe5b9060005260206000209001548661122d565b949350505050565b6004805482908110610b3e57fe5b600091825260209091200154905081565b600054600160a060020a031681565b600354600090600160a060020a031663facd743b3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610bb157600080fd5b5af11515610bbe57600080fd5b505050604051805190501515610bd357600080fd5b600160a060020a0383161515610be857600080fd5b600354600160a060020a031663facd743b8460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c3857600080fd5b5af11515610c4557600080fd5b505050604051805190501515610c5a57600080fd5b6000821115610d3057600354600160a060020a031663274982406040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ca257600080fd5b5af11515610caf57600080fd5b5050506040518051600354909250600160a060020a0316905063faa8fd7c60001983018460405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610d0e57600080fd5b5af11515610d1b57600080fd5b505050604051805190501515610d3057600080fd5b610d57833360046001815481101515610d4557fe5b9060005260206000209001548561122d565b50505050565b600154600160a060020a031681565b600354600090600160a060020a031663facd743b3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610dbf57600080fd5b5af11515610dcc57600080fd5b505050604051805190501515610de157600080fd5b600354600160a060020a031663274982406040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e2057600080fd5b5af11515610e2d57600080fd5b5050506040518051600354909250600160a060020a0316905063faa8fd7c828460405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610e8857600080fd5b5af11515610e9557600080fd5b505050604051805190501515610eaa57600080fd5b61058e60003360046002815481101515610d4557fe5b6000805433600160a060020a03908116911614610edc57600080fd5b811515610ee857600080fd5b50600255600190565b6001600583815481101515610f0257fe5b60009182526020822060099190910201600701805460ff191692151592909217909155600480549091908110610f3457fe5b6000918252602090912001546005805484908110610f4e57fe5b906000526020600020906009020160010154600019161415610ffe5760035460058054600160a060020a0390921691634d238c8e919085908110610f8e57fe5b6000918252602090912060036009909202010154600160a060020a031660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610fe957600080fd5b5af11515610ff657600080fd5b5050506110d3565b60048054600190811061100d57fe5b600091825260209091200154600580548490811061102757fe5b9060005260206000209060090201600101546000191614156110d35760035460058054600160a060020a03909216916340a141ff91908590811061106757fe5b6000918252602090912060036009909202010154600160a060020a031660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156110c257600080fd5b5af115156110cf57600080fd5b5050505b801561113957600354600160a060020a031663d7d7442f8260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561112157600080fd5b5af1151561112e57600080fd5b505050604051805150505b600580548390811061114757fe5b6000918252602090912060016009909202010154600580548490811061116957fe5b906000526020600020906009020160030160009054906101000a9004600160a060020a0316600160a060020a0316837f4cbe9f3cd2820adb379ba937ed862786a0fa5c6dba0ac85ed6b6d465acde524e846005878154811015156111c957fe5b9060005260206000209060090201600201546005888154811015156111ea57fe5b9060005260206000209060090201600501546001604051938452602084019290925260408084019190915290151560608301526080909101905180910390a45050565b6000806000600580548091906001016112469190611336565b92506002544201915060058381548110151561125e57fe5b60009182526020909120600990910201838155600181018690556002810183905560038101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038a16908117909155600482018690559091508590857fecf70ba9763aea0fd53cd214bdac13367d476976458426b06f31c992f3fcf8fe818a87604051928352600160a060020a0390911660208301526040808301919091526060909101905180910390a45050949350505050565b81548183558181151161058e5760008381526020902061058e918101908301611362565b81548183558181151161058e5760090281600902836000526020600020918201910161058e9190611380565b61092c91905b8082111561137c5760008155600101611368565b5090565b61092c91905b8082111561137c576000808255600182018190556002820181905560038201805473ffffffffffffffffffffffffffffffffffffffff1916905560048201819055600582018190556113db60068301826113f0565b5060078101805460ff19169055600901611386565b508054600082559060005260206000209081019061140e9190611362565b505600a165627a7a72305820755c3de433e090c98932961276271b7dab9808b37a0bc54dc828831e3992206a0029\\",\\"binhash\\":\\"28897be1e457b68ccdf287ac0ab2bfce7d795479d3cc05c594fc147dde8096cc\\"},\\"./contracts/SafeMath.sol:SafeMath\\":{\\"source\\":\\"./contracts/SafeMath.sol:SafeMath\\",\\"name\\":\\"SafeMath\\",\\"abi\\":[],\\"bin\\":\\"604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146060604052600080fd00a165627a7a7230582028ba4f1e168ae9945684ed57de9639a1c77cd49ec761daa75e5b01447a0b07cd0029\\",\\"binhash\\":\\"1f22c35458b74a4a578fb62af152edee7078622a3f0360e0c94c2a00500df933\\"},\\"SmartToken:SmartToken\\":{\\"source\\":\\"SmartToken:SmartToken\\",\\"name\\":\\"SmartToken\\",\\"abi\\":[{\\"name\\":\\"minter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initSmartToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mint\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"autonomousConverter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"leakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"balanceOf\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destroy\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"resetLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"Mint\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260008054600160a060020a033316600160a060020a03199091161790556109a2806100306000396000f3006060604052600436106100f05763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630754617281146100f55780630b0c8f1f1461012457806318160ddd1461014e5780631987b887146101735780632af4c31e146101a657806340c10f19146101c55780634892f0af146101e757806350b48c5e146101fa5780635c9b2e921461020d57806370a082311461022057806379ba50971461023f5780638da5cb5b14610252578063a24835d114610265578063b625690d14610287578063baaef4af1461029d578063c3f51fca146102b0578063d4ee1d90146102db575b600080fd5b341561010057600080fd5b6101086102ee565b604051600160a060020a03909116815260200160405180910390f35b341561012f57600080fd5b61014c600160a060020a03600435811690602435166044356102fd565b005b341561015957600080fd5b610161610331565b60405190815260200160405180910390f35b341561017e57600080fd5b610192600160a060020a0360043516610337565b604051901515815260200160405180910390f35b34156101b157600080fd5b610192600160a060020a036004351661039a565b34156101d057600080fd5b610192600160a060020a0360043516602435610401565b34156101f257600080fd5b610108610517565b341561020557600080fd5b610108610526565b341561021857600080fd5b610161610535565b341561022b57600080fd5b610161600160a060020a036004351661053b565b341561024a57600080fd5b610192610556565b341561025d57600080fd5b6101086105e7565b341561027057600080fd5b610192600160a060020a03600435166024356105f6565b341561029257600080fd5b61014c60043561070c565b34156102a857600080fd5b61014c6107ec565b34156102bb57600080fd5b61014c600160a060020a0360043581169060243516604435606435610829565b34156102e657600080fd5b610108610910565b600654600160a060020a031681565b60005433600160a060020a0390811691161461031857600080fd5b61032c838383670de0b6b3a7640000610829565b505050565b60025490565b6000805433600160a060020a0390811691161461035357600080fd5b600160a060020a038216151561036857600080fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b6000805433600160a060020a039081169116146103b657600080fd5b600054600160a060020a03838116911614156103d157600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b60065460009033600160a060020a039081169116148061042f575060075433600160a060020a039081169116145b151561043a57600080fd5b600160a060020a038316600090815260046020526040902054610463908363ffffffff61091f16565b600160a060020a03841660009081526004602052604090205560025461048f908363ffffffff61091f16565b600255600160a060020a0383167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b600754600160a060020a031681565b600554600160a060020a031681565b60035481565b600160a060020a031660009081526004602052604090205490565b60015460009033600160a060020a0390811691161461057457600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600054600160a060020a031681565b60055460009033600160a060020a0390811691161480610624575060075433600160a060020a039081169116145b151561062f57600080fd5b600160a060020a038316600090815260046020526040902054610658908363ffffffff61093916565b600160a060020a038416600090815260046020526040902055600254610684908363ffffffff61093916565b600255600160a060020a0383167f81325e2a6c442af9d36e4ee9697f38d5f4bf0837ade0f6c411c6a40af7c057ee8360405190815260200160405180910390a2600083600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60065433600160a060020a0390811691161480610737575060075433600160a060020a039081169116145b151561074257600080fd5b600654600160a060020a03166322ce61b26040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561079a57600080fd5b5af115156107a757600080fd5b505050604051805190506107c860035460025461091f90919063ffffffff16565b11156107d357600080fd5b6003546107e6908263ffffffff61091f16565b60035550565b60065433600160a060020a0390811691161480610817575060075433600160a060020a039081169116145b151561082257600080fd5b6000600355565b60005433600160a060020a0390811691161461084457600080fd5b600554600160a060020a03161580156108655750600160a060020a03841615155b151561087057600080fd5b600654600160a060020a03161580156108915750600160a060020a03831615155b151561089c57600080fd5b60058054600160a060020a0380871673ffffffffffffffffffffffffffffffffffffffff199283161790925560068054928616929091169190911790556108e9828263ffffffff61094b16565b6002819055600160a060020a03909416600090815260046020526040902093909355505050565b600154600160a060020a031681565b60008282018381101561092e57fe5b8091505b5092915050565b60008282111561094557fe5b50900390565b60008083151561095e5760009150610932565b5082820282848281151561096e57fe5b041461092e57fe00a165627a7a723058200ce0e8a7847dabf04ba64698744b86be9abbc72de50f4e749fba8e55a16f9db80029\\",\\"binhash\\":\\"431117d8de1843d50dea8bb431da682ef729a4595d2239c1a7702e85ef2b83d6\\"},\\"./contracts/Token.sol:Token\\":{\\"source\\":\\"./contracts/Token.sol:Token\\",\\"name\\":\\"Token\\",\\"abi\\":[{\\"name\\":\\"minter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approve\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"totalSupply\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"transferFrom\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mint\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approveMore\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"autonomousConverter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"leakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"balanceOf\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"approveLess\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destroy\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"transfer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"multiTransfer\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"bits\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"updateLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"resetLeakage\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initMintable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"allowance\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"Mint\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Approval\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260008054600160a060020a033316600160a060020a03199091161790556110f3806100306000396000f3006060604052600436106101245763ffffffff60e060020a600035041663075461728114610129578063095ea7b31461015857806318160ddd1461018e5780631987b887146101b357806323b872dd146101d25780632af4c31e146101fa5780633bf11a6c1461021957806340c10f19146102465780634892f0af146102685780634cef0ff61461027b57806350b48c5e1461029d5780635c9b2e92146102b057806370a08231146102c35780637240eccf146102e257806379ba5097146103045780638da5cb5b14610317578063a24835d11461032a578063a9059cbb1461034c578063b33fcc7a1461036e578063b625690d146103bd578063baaef4af146103d3578063c3f51fca146103e6578063d4ee1d9014610411578063dd62ed3e14610424575b600080fd5b341561013457600080fd5b61013c610449565b604051600160a060020a03909116815260200160405180910390f35b341561016357600080fd5b61017a600160a060020a0360043516602435610458565b604051901515815260200160405180910390f35b341561019957600080fd5b6101a16104e4565b60405190815260200160405180910390f35b34156101be57600080fd5b61017a600160a060020a03600435166104ea565b34156101dd57600080fd5b61017a600160a060020a036004358116906024351660443561054d565b341561020557600080fd5b61017a600160a060020a03600435166107c3565b341561022457600080fd5b610244600160a060020a036004358116906024351660443560643561082a565b005b341561025157600080fd5b61017a600160a060020a0360043516602435610857565b341561027357600080fd5b61013c61095b565b341561028657600080fd5b61017a600160a060020a036004351660243561096a565b34156102a857600080fd5b61013c610a13565b34156102bb57600080fd5b6101a1610a22565b34156102ce57600080fd5b6101a1600160a060020a0360043516610a28565b34156102ed57600080fd5b61017a600160a060020a0360043516602435610a43565b341561030f57600080fd5b61017a610a7c565b341561032257600080fd5b61013c610b0d565b341561033557600080fd5b61017a600160a060020a0360043516602435610b1c565b341561035757600080fd5b61017a600160a060020a0360043516602435610c20565b341561037957600080fd5b61017a6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610daf95505050505050565b34156103c857600080fd5b610244600435610e2f565b34156103de57600080fd5b610244610ef6565b34156103f157600080fd5b610244600160a060020a0360043581169060243516604435606435610f33565b341561041c57600080fd5b61013c61101a565b341561042f57600080fd5b6101a1600160a060020a0360043581169060243516611029565b600654600160a060020a031681565b600030600160a060020a031683600160a060020a03161415151561047b57600080fd5b600160a060020a03338116600081815260086020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60025490565b6000805433600160a060020a0390811691161461050657600080fd5b600160a060020a038216151561051b57600080fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600080600160a060020a038416151561056557600080fd5b600654600160a060020a038581169116148015906105915750600654600160a060020a03868116911614155b151561059c57600080fd5b30600160a060020a031684600160a060020a0316141580156105d0575030600160a060020a031685600160a060020a031614155b15156105db57600080fd5b600654600160a060020a03166355b5ec646040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561061a57600080fd5b5af1151561062757600080fd5b50505060405180519050905080600160a060020a031684600160a060020a031614158015610667575080600160a060020a031685600160a060020a031614155b151561067257600080fd5b600554600160a060020a038681169116141561068d57600080fd5b600160a060020a0380861660009081526008602090815260408083203390941683529290522054839010156106c157600080fd5b600160a060020a0385166000908152600460205260409020546106ea908463ffffffff61105416565b600160a060020a03808716600090815260046020526040808220939093559086168152205461071f908463ffffffff61106616565b600160a060020a03808616600090815260046020908152604080832094909455888316825260088152838220339093168252919091522054610767908463ffffffff61105416565b600160a060020a03808716600081815260086020908152604080832033861684529091529081902093909355908616916000805160206110a88339815191529086905190815260200160405180910390a3506001949350505050565b6000805433600160a060020a039081169116146107df57600080fd5b600054600160a060020a03838116911614156107fa57600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b60005433600160a060020a0390811691161461084557600080fd5b61085184848484610f33565b50505050565b60065460009033600160a060020a0390811691161480610885575060075433600160a060020a039081169116145b151561089057600080fd5b600160a060020a0383166000908152600460205260409020546108b9908363ffffffff61106616565b600160a060020a0384166000908152600460205260409020556002546108e5908363ffffffff61106616565b600255600160a060020a0383167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405190815260200160405180910390a282600160a060020a031660006000805160206110a88339815191528460405190815260200160405180910390a350600192915050565b600754600160a060020a031681565b600160a060020a033381166000908152600860209081526040808320938616835292905290812054816109a3828563ffffffff61106616565b600160a060020a033381166000818152600860209081526040808320948b16808452949091529081902084905592935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a3506001949350505050565b600554600160a060020a031681565b60035481565b600160a060020a031660009081526004602052604090205490565b600160a060020a033381166000908152600860209081526040808320938616835292905290812054816109a3828563ffffffff61105416565b60015460009033600160a060020a03908116911614610a9a57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905590565b600054600160a060020a031681565b60055460009033600160a060020a0390811691161480610b4a575060075433600160a060020a039081169116145b1515610b5557600080fd5b600160a060020a038316600090815260046020526040902054610b7e908363ffffffff61105416565b600160a060020a038416600090815260046020526040902055600254610baa908363ffffffff61105416565b600255600160a060020a0383167f81325e2a6c442af9d36e4ee9697f38d5f4bf0837ade0f6c411c6a40af7c057ee8360405190815260200160405180910390a2600083600160a060020a03166000805160206110a88339815191528460405190815260200160405180910390a350600192915050565b600080600160a060020a0384161515610c3857600080fd5b600654600160a060020a0385811691161415610c5357600080fd5b30600160a060020a031684600160a060020a031614151515610c7457600080fd5b600554600160a060020a0385811691161415610c8f57600080fd5b600654600160a060020a03166355b5ec646040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610cce57600080fd5b5af11515610cdb57600080fd5b5050506040518051915050600160a060020a038481169082161415610cff57600080fd5b600160a060020a033316600090815260046020526040902054610d28908463ffffffff61105416565b600160a060020a033381166000908152600460205260408082209390935590861681522054610d5d908463ffffffff61106616565b600160a060020a0380861660008181526004602052604090819020939093559133909116906000805160206110a88339815191529086905190815260200160405180910390a3600191505b5092915050565b60008080805b8451831015610e24576060858481518110610dcc57fe5b906020019060200201519060020a90049150848381518110610dea57fe5b906020019060200201516bffffffffffffffffffffffff169050610e0e8282610c20565b1515610e1957600080fd5b600190920191610db5565b506001949350505050565b60065433600160a060020a0390811691161480610e5a575060075433600160a060020a039081169116145b1515610e6557600080fd5b600654600160a060020a03166322ce61b26040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ea457600080fd5b5af11515610eb157600080fd5b50505060405180519050610ed260035460025461106690919063ffffffff16565b1115610edd57600080fd5b600354610ef0908263ffffffff61106616565b60035550565b60065433600160a060020a0390811691161480610f21575060075433600160a060020a039081169116145b1515610f2c57600080fd5b6000600355565b60005433600160a060020a03908116911614610f4e57600080fd5b600554600160a060020a0316158015610f6f5750600160a060020a03841615155b1515610f7a57600080fd5b600654600160a060020a0316158015610f9b5750600160a060020a03831615155b1515610fa657600080fd5b60058054600160a060020a0380871673ffffffffffffffffffffffffffffffffffffffff19928316179092556006805492861692909116919091179055610ff3828263ffffffff61107c16565b6002819055600160a060020a03909416600090815260046020526040902093909355505050565b600154600160a060020a031681565b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b60008282111561106057fe5b50900390565b60008282018381101561107557fe5b9392505050565b60008083151561108f5760009150610da8565b5082820282848281151561109f57fe5b041461107557fe00ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d32d3667ab6fd3501935dd6338b6381d5fa4a6b2df5bc85aeafb5fc7ac3845110029\\",\\"binhash\\":\\"6b0d6fbcb4a43b2a3d365c60dccb32a1ee01dbd1790a57eab6c8685969bcc37b\\"},\\"./contracts/TokenLocker.sol:TokenLocker\\":{\\"source\\":\\"./contracts/TokenLocker.sol:TokenLocker\\",\\"name\\":\\"TokenLocker\\",\\"abi\\":[{\\"name\\":\\"lockTokenLocker\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"quarterlyWithdrawable\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"withdraw\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"deposit\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"beneficiary\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"locked\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"deposited\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"\\",\\"type\\":\\"constructor\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_token\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Withdrawn\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"who\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"Deposited\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"who\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526002805460a060020a60ff0219169055341561001f57600080fd5b6040516040806109ec833981016040528080519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925083161515905061006c57600080fd5b600160a060020a038116151561008157600080fd5b60018054600160a060020a03938416600160a060020a03199182161790915560028054929093169116179055610930806100bc6000396000f3006060604052600436106100955763ffffffff60e060020a60003504166327fe75ed811461009a5780632af4c31e146100af57806334d8521b146100e25780633ccfd60b1461010757806347e7ef241461011a57806385aa61031461013c5780638da5cb5b1461016b578063ab2315111461017e578063cf30901214610191578063eef49ee3146101a4578063fc0c546a146101b7575b600080fd5b34156100a557600080fd5b6100ad6101ca565b005b34156100ba57600080fd5b6100ce600160a060020a0360043516610335565b604051901515815260200160405180910390f35b34156100ed57600080fd5b6100f56103ef565b60405190815260200160405180910390f35b341561011257600080fd5b6100ad6103f5565b341561012557600080fd5b6100ad600160a060020a0360043516602435610714565b341561014757600080fd5b61014f61083c565b604051600160a060020a03909116815260200160405180910390f35b341561017657600080fd5b61014f61084b565b341561018957600080fd5b6100f561085a565b341561019c57600080fd5b6100ce610860565b34156101af57600080fd5b6100f5610881565b34156101c257600080fd5b61014f610887565b60015433600160a060020a039081169116146101e557600080fd5b600154600160a060020a031662fca46f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561022357600080fd5b5af1151561023057600080fd5b50505060405180511515905061024557600080fd5b600154600160a060020a03166342c6498a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561028457600080fd5b5af1151561029157600080fd5b5050506040518051600154909150600160a060020a031662fca46f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156102da57600080fd5b5af115156102e757600080fd5b50505060405180519050101515156102fe57600080fd5b6002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b6000805433600160a060020a0390811691161461035157600080fd5b600160a060020a038216151561036657600080fd5b600054600160a060020a038381169116141561038157600080fd5b600054600160a060020a0380841691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a35060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60055481565b6000805481908190819033600160a060020a0390811691161461041757600080fd5b60025474010000000000000000000000000000000000000000900460ff16151561044057600080fd5b6003546000901161045057600080fd5b60015460009450600160a060020a031662fca46f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561049257600080fd5b5af1151561049f57600080fd5b505050604051805190509250600454600014801561050f5750600154600160a060020a0316631d38bebd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156104f757600080fd5b5af1151561050457600080fd5b505050604051805190505b156105705761054b61053e6064610532601960035461089690919063ffffffff16565b9063ffffffff6108cc16565b859063ffffffff6108e316565b9350610567600c610532866003546108f290919063ffffffff16565b60055560048390555b600454151561057e57600080fd5b60045461059490627861f863ffffffff6108e316565b4210610644576004546105ae90429063ffffffff6108f216565b91506105c382627861f863ffffffff6108cc16565b9050600081116105d257600080fd5b6005546105e99061053e908363ffffffff61089616565b935061060f610602627861f8600c63ffffffff61089616565b849063ffffffff6108e316565b421061061b5760035493505b61064061063182627861f863ffffffff61089616565b6004549063ffffffff6108e316565b6004555b600084111561070e57600354610660908563ffffffff6108f216565b600355600254600160a060020a031663a9059cbb338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156106b957600080fd5b5af115156106c657600080fd5b50505060405180515050600160a060020a0333167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58560405190815260200160405180910390a25b50505050565b60015460009033600160a060020a0390811691161461073257600080fd5b60025474010000000000000000000000000000000000000000900460ff161561075a57600080fd5b600254600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156107aa57600080fd5b5af115156107b757600080fd5b505050604051805190509050816107d9600354836108f290919063ffffffff16565b10156107e457600080fd5b6003546107f7908363ffffffff6108e316565b600355600160a060020a0383167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48360405190815260200160405180910390a2505050565b600154600160a060020a031681565b600054600160a060020a031681565b60045481565b60025474010000000000000000000000000000000000000000900460ff1681565b60035481565b600254600160a060020a031681565b6000808315156108a957600091506108c5565b508282028284828115156108b957fe5b04146108c157fe5b8091505b5092915050565b60008082848115156108da57fe5b04949350505050565b6000828201838110156108c157fe5b6000828211156108fe57fe5b509003905600a165627a7a72305820d194a03a5355bdf89ce1adc4fe81c2c36b0cf4bd329ec218876f5245176307fb0029\\",\\"binhash\\":\\"b2ccd0cb7a78b32226fd9ca7fedbd616eead0cd34b9a99877c8ae048061828b3\\"},\\"TokenPorter:TokenPorter\\":{\\"source\\":\\"TokenPorter:TokenPorter\\",\\"name\\":\\"TokenPorter\\",\\"abi\\":[{\\"name\\":\\"importSequence\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"chainHopStartTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"validator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"mintToken\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"recipientAddress\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"validators\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"claimables\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setExportFeePerTenThousand\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_exportFee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"removeDestinationChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"burnSequence\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"importMET\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\",\\"indexed\\":false},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"exportedBurns\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setMinimumExportFee\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_minimumExportFee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"setChainHopStartTime\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"mintHashes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"minimumExportFee\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"burnHashes\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"exportFee\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"addDestinationChain\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_contractAddress\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"burnAtTick\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"initTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"destinationChains\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"export\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"tokenOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"claimReceivables\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"recipients\\",\\"type\\":\\"address[]\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"merkleRoots\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"LogExportReceipt\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\",\\"indexed\\":false},{\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"exporter\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogImportRequest\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amountToImport\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"exportTimeStamp\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogImport\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\",\\"indexed\\":true},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"ExportOnChainClaimedReceiptLog\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"606060405260016005556001600655426202a3000160075564e8d4a5100060085560326009556006604051805910620000355750595b9080825280602002602001820160405250600b9080516200005b9291602001906200007d565b5060008054600160a060020a03191633600160a060020a0316179055620000ed565b828054828255906000526020600020908101928215620000bb579160200282015b82811115620000bb5782518255916020019190600101906200009e565b50620000c9929150620000cd565b5090565b620000ea91905b80821115620000c95760008155600101620000d4565b90565b6124da80620000fd6000396000f3006060604052600436106101715763ffffffff60e060020a6000350416630245c5c881146101765780631327d3d81461019b5780632af4c31e146101ce578063386c66b9146101ed5780633a5381b51461020057806341819f831461022f5780634f530565146102ef57806360ab77d514610314578063620160831461032a57806367602c591461034a5780636ffbff9c1461035d57806379ba5097146105095780637a6e38541461051c5780637e880f771461053257806385aa6103146105485780638da5cb5b1461055b5780638f43cc201461056e5780639097dc9014610584578063962f1f3e1461059a5780639da6772a146105ad578063a8c36bc6146105c3578063b27e7244146105d6578063c385eb0f14610602578063c554a60014610618578063d4ee1d901461063f578063d8b194a714610652578063da7220d014610668578063f29b204014610688578063fb8b01971461070d578063fc0c546a1461075c578063fe5a53771461076f575b600080fd5b341561018157600080fd5b610189610785565b60405190815260200160405180910390f35b34156101a657600080fd5b6101ba600160a060020a036004351661078b565b604051901515815260200160405180910390f35b34156101d957600080fd5b6101ba600160a060020a03600435166107ee565b34156101f857600080fd5b610189610855565b341561020b57600080fd5b61021361085b565b604051600160a060020a03909116815260200160405180910390f35b341561023a57600080fd5b6101ba60048035600160c060020a0319169060248035600160a060020a03169160443591606435919060a49060843590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496863596602080820135975091955060608101945060409081013586018083019450359250829182810201905190810160405280939291908181526020018383602002808284375094965061086a95505050505050565b34156102fa57600080fd5b610189600160a060020a0360043581169060243516610c36565b341561031f57600080fd5b6101ba600435610c53565b341561033557600080fd5b6101ba600160c060020a031960043516610c78565b341561035557600080fd5b610189610d11565b341561036857600080fd5b6101ba600160c060020a031960048035821691602480359091169190606490604435908101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650610d1795505050505050565b341561051457600080fd5b6101ba61123f565b341561052757600080fd5b6101896004356112d1565b341561053d57600080fd5b6101ba6004356112f0565b341561055357600080fd5b610213611322565b341561056657600080fd5b610213611331565b341561057957600080fd5b6101ba600435611340565b341561058f57600080fd5b610189600435611372565b34156105a557600080fd5b610189611384565b34156105b857600080fd5b61018960043561138a565b34156105ce57600080fd5b61018961139c565b34156105e157600080fd5b6101ba600160c060020a031960043516600160a060020a03602435166113a2565b341561060d57600080fd5b610189600435611434565b341561062357600080fd5b61063d600160a060020a0360043581169060243516611446565b005b341561064a57600080fd5b6102136114c9565b341561065d57600080fd5b6101896004356114d8565b341561067357600080fd5b610213600160c060020a0319600435166114e6565b341561069357600080fd5b6101ba600160a060020a0360048035821691600160c060020a031960248035919091169260443583169260643516916084359160a4359160e49060c43590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061150195505050505050565b341561071857600080fd5b6101896004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611d2c95505050505050565b341561076757600080fd5b610213611e23565b341561077a57600080fd5b610189600435611e32565b60065481565b6000805433600160a060020a039081169116146107a757600080fd5b600160a060020a03821615156107bc57600080fd5b5060048054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b6000805433600160a060020a0390811691161461080a57600080fd5b600054600160a060020a038381169116141561082557600080fd5b5060018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116178155919050565b60075481565b600454600160a060020a031681565b6004546000908190819033600160a060020a0390811691161461088c57600080fd5b600160c060020a03198b1615156108a257600080fd5b600160a060020a038a1615156108b757600080fd5b600089116108c457600080fd5b8515156108d057600080fd5b8a8a8a8a604051600160c060020a0319949094168452600160a060020a03929092166c01000000000000000000000000026008840152601c830152603c820152605c016040519081900390206000878152600d60205260409020541461093557600080fd5b610940898987611e44565b151561094b57600080fd5b60065460011480156109b05750600354600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561099757600080fd5b5af115156109a457600080fd5b50505060405180511590505b15610a0557600254600160a060020a031663d7508a556040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156109f457600080fd5b5af11515610a0157600080fd5b5050505b610a2c610a188a8a63ffffffff611f3616565b6000888152600e6020526040902054611f50565b600354600160a060020a03166340c10f198b8b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a8257600080fd5b5af11515610a8f57600080fd5b505050604051805190501515610aa457600080fd5b610ab68451899063ffffffff6121b516565b9150600090505b8351811015610b5057600354600160a060020a03166340c10f19858381518110610ae357fe5b906020019060200201518460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b3157600080fd5b5af11515610b3e57600080fd5b50505060405180515050600101610abd565b6006548690600160a060020a038c167febe5c0a5e91489624ca514a4e99cb8d9aefb44cde38892673e77e733b74017ab8e8d8d8d604051600160c060020a031985168152602081018490526040810183905260806060820181815290820183818151815260200191508051906020019080838360005b83811015610bde578082015183820152602001610bc6565b50505050905090810190601f168015610c0b5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a450506006805460019081019091559998505050505050505050565b601160209081526000928352604080842090915290825290205481565b6000805433600160a060020a03908116911614610c6f57600080fd5b50600955600190565b6000805433600160a060020a03908116911614610c9457600080fd5b600160c060020a031982161515610caa57600080fd5b600160c060020a03198216600090815260106020526040902054600160a060020a03161515610cd857600080fd5b50600160c060020a0319166000908152601060205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055600190565b60055481565b60035460009033600160a060020a03908116911614610d3557600080fd5b600754421015610d4457600080fd5b8251600814610d5257600080fd5b8651600214610d6057600080fd5b8451600214610d6e57600080fd5b600454600160a060020a0316634bf2500d86600181518110610d8c57fe5b9060200190602002015160405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dcc57600080fd5b5af11515610dd957600080fd5b5050506040518051159050610ded57600080fd5b610dfc898989898989896121cc565b1515610e0757600080fd5b600254600160a060020a031663c763e5a16040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e4657600080fd5b5af11515610e5357600080fd5b5050506040518051600160c060020a03198a81169116149050610e7557600080fd5b600354600160a060020a031687600081518110610e8e57fe5b90602001906020020151600160a060020a031614610eab57600080fd5b82600181518110610eb857fe5b906020019060200201511515610ecd57600080fd5b600254600090600160a060020a031663212884006040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f0f57600080fd5b5af11515610f1c57600080fd5b505050604051805190501115610f8357600254600160a060020a0316630dd93b566040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f6b57600080fd5b5af11515610f7857600080fd5b505050604051805150505b610f8c826123a9565b600c600087600181518110610f9d57fe5b90602001906020020151815260208101919091526040016000205582600381518110610fc557fe5b90602001906020020151600e600087600181518110610fe057fe5b906020019060200201518152602081019190915260400160002055888760018151811061100957fe5b906020019060200201518460018151811061102057fe5b906020019060200201518560028151811061103757fe5b90602001906020020151604051600160c060020a0319949094168452600160a060020a03929092166c01000000000000000000000000026008840152601c830152603c820152605c016040518091039020600d60008760018151811061109957fe5b906020019060200201518152602081019190915260400160002055866001815181106110c157fe5b90602001906020020151600160a060020a0316856001815181106110e157fe5b906020019060200201517fa2e4b883e7a23d1dccf7889ba3f5cbce46f39c7132a9dca1dc99609c2a73f7c18b8860008151811061111a57fe5b906020019060200201518760018151811061113157fe5b906020019060200201518860028151811061114857fe5b906020019060200201518960008151811061115f57fe5b906020019060200201518a60068151811061117657fe5b906020019060200201518e604051600160c060020a0319881681526020810187905260408101869052606081018590526080810184905260a0810183905260e060c0820181815290820183818151815260200191508051906020019080838360005b838110156111f05780820151838201526020016111d8565b50505050905090810190601f16801561121d5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a350600198975050505050505050565b60015460009033600160a060020a0390811691161461125d57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a350600180546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b90565b600a8054829081106112df57fe5b600091825260209091200154905081565b6000805433600160a060020a0390811691161461130c57600080fd5b6000821161131957600080fd5b50600855600190565b600254600160a060020a031681565b600054600160a060020a031681565b6000805433600160a060020a0390811691161461135c57600080fd5b4282101561136957600080fd5b50600755600190565b600d6020526000908152604090205481565b60085481565b600f6020526000908152604090205481565b60095481565b6000805433600160a060020a039081169116146113be57600080fd5b600160c060020a03198316158015906113df5750600160a060020a03821615155b15156113ea57600080fd5b50600160c060020a0319821660009081526010602052604090208054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116179055600192915050565b600e6020526000908152604090205481565b60005433600160a060020a0390811691161461146157600080fd5b600160a060020a038216151561147657600080fd5b600160a060020a038116151561148b57600080fd5b60028054600160a060020a0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560038054939092169216919091179055565b600154600160a060020a031681565b600b8054829081106112df57fe5b601060205260009081526040902054600160a060020a031681565b600354600090819081908190819033600160a060020a0390811691161461152757600080fd5b60075442101561153657600080fd5b600160c060020a03198b16158015906115575750600160a060020a038a1615155b801561156b5750600160a060020a03891615155b801561157657508715155b151561158157600080fd5b600160c060020a03198b16600090815260106020526040902054600160a060020a038b81169116146115b257600080fd5b6115c2888863ffffffff611f3616565b600354600160a060020a03166370a082318e60405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561161257600080fd5b5af1151561161f57600080fd5b505050604051805190501015151561163657600080fd5b600854871015801561166e575061166a61271061165e6009548b61242a90919063ffffffff16565b9063ffffffff6121b516565b8710155b151561167957600080fd5b600254600160a060020a0316630dd93b566040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116b857600080fd5b5af115156116c557600080fd5b50505060405180515050600354600160a060020a031663a24835d18d6116f18b8b63ffffffff611f3616565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561173457600080fd5b5af1151561174157600080fd5b50505060405180515050600254600160a060020a031663843ad7b56040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561178a57600080fd5b5af1151561179757600080fd5b5050506040518051600254909550600160a060020a0316905063065e53606040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156117e357600080fd5b5af115156117f057600080fd5b5050506040518051905092506005546001141561186657600a8054600181016118198382612467565b916000526020600020900160008060405160ff919091167f010000000000000000000000000000000000000000000000000000000000000002815260010160405190819003902090915550505b600254600160a060020a031663c763e5a16040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156118a557600080fd5b5af115156118b257600080fd5b5050506040518051600160c060020a03198d811691161415905061192d57600160a060020a03808b166000908152601160209081526040808320938d1683529290522054611906908963ffffffff611f3616565b600160a060020a03808c166000908152601160209081526040808320938e16835292905220555b6002544292508290600160a060020a031663c763e5a16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561197157600080fd5b5af1151561197e57600080fd5b50505060405180516002549091508d908d908d908d908d908a90600160a060020a03166342c6498a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156119d457600080fd5b5af115156119e157600080fd5b505050604051805190508c8f600a600160055403815481101515611a0157fe5b9060005260206000209001546040518c8152600160c060020a0319808d1660208301528b1660288201526c01000000000000000000000000600160a060020a03808c16820260308401528a1602604482015260588101889052607881018790526098810186905260b8810185905260d8810184905260f8810183805190602001908083835b60208310611aa55780518252601f199092019160209182019101611a86565b6001836020036101000a03801982511681845116179092525050509190910192835250506020019a50604099505050505050505050505180910390209050600a8054806001018281611af79190612467565b506000918252602080832091909101839055600554838352600f90915260409182902055600354600160a060020a0316906318160ddd90518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b5a57600080fd5b5af11515611b6757600080fd5b50505060405180519050600b6000815481101515611b8157fe5b9060005260206000209001819055508b600160a060020a031681600019168a600160a060020a03167fca44de332c14dded5f8ccbe1ff70f6b5848247af65567e31a815d3fb61be07928e8e8d8d8d8b600554600a600160055403815481101515611be757fe5b9060005260206000209001548f600b8f604051600160c060020a03198c168152600160a060020a038b166020820152604081018a90526060810189905260a0810187905260c0810186905260e0810185905261010081018490526101408101829052610160608082018181529061012083019083018a818151815260200191508051906020019080838360005b83811015611c8c578082015183820152602001611c74565b50505050905090810190601f168015611cb95780820380516001836020036101000a031916815260200191505b508381038252858181548152602001915080548015611cf757602002820191906000526020600020905b815481526020019060010190808311611ce3575b50509d505050505050505050505050505060405180910390a450506005805460019081019091559a9950505050505050505050565b600080600080600080865111611d4157600080fd5b600092505b8551831015611e1957858381518110611d5b57fe5b90602001906020020151600160a060020a033381166000908152601160209081526040808320938516835292905290812054919350909150811115611e0e57600160a060020a03338116600081815260116020908152604080832094871680845294909152808220919091557fdcc7a8e6641ae885efef96d6348800635daf98037d60462fe34e85013b3257139084905190815260200160405180910390a3611e0b84600163ffffffff611f3616565b93505b600190920191611d46565b5091949350505050565b600354600160a060020a031681565b600c6020526000908152604090205481565b60008080611e58868663ffffffff611f3616565b600354909250611ec190600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611e9e57600080fd5b5af11515611eab57600080fd5b505050604051805186915063ffffffff611f3616565b600254909150600160a060020a03166322ce61b26040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611f0357600080fd5b5af11515611f1057600080fd5b50505060405180519050611f2a838363ffffffff611f3616565b11159695505050505050565b600082820183811015611f4557fe5b8091505b5092915050565b600254600090819081908190600160a060020a031663fde9cded8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611fa157600080fd5b5af11515611fae57600080fd5b5050506040518051600254909550600160a060020a0316905063496a698d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ffa57600080fd5b5af1151561200757600080fd5b50505060405180519350612033905086612027858763ffffffff61245516565b9063ffffffff61242a16565b600254909250612104906120a2908690600160a060020a0316635d766d356040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561207f57600080fd5b5af1151561208c57600080fd5b505050604051805191905063ffffffff61242a16565b600254600160a060020a0316632ff2e9dc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156120e157600080fd5b5af115156120ee57600080fd5b505050604051805191905063ffffffff611f3616565b60025490915061215290829061165e908590600160a060020a0316635d766d356040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561207f57600080fd5b600354909250600160a060020a031663b625690d8360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561219d57600080fd5b5af115156121aa57600080fd5b505050505050505050565b60008082848115156121c357fe5b04949350505050565b6000816000815181106121db57fe5b906020019060200201518888886000815181106121f457fe5b906020019060200201518960018151811061220b57fe5b906020019060200201518660018151811061222257fe5b906020019060200201518760028151811061223957fe5b906020019060200201518860038151811061225057fe5b906020019060200201518960048151811061226757fe5b906020019060200201518a60058151811061227e57fe5b906020019060200201518e8e60008151811061229657fe5b906020019060200201516040518c8152600160c060020a0319808d1660208301528b1660288201526c01000000000000000000000000600160a060020a03808c16820260308401528a1602604482015260588101889052607881018790526098810186905260b8810185905260d8810184905260f8810183805190602001908083835b602083106123385780518252601f199092019160209182019101612319565b6001836020036101000a03801982511681845116179092525050509190910192835250506020019a5060409950505050505050505050519081900390208460018151811061238257fe5b90602001906020020151141561239a5750600161239e565b5060005b979650505050505050565b600080805b6020811015611f4957806008028482815181106123c757fe5b016020015160029190910a7f0100000000000000000000000000000000000000000000000000000000000000918290049091027fff00000000000000000000000000000000000000000000000000000000000000160491909117906001016123ae565b60008083151561243d5760009150611f49565b5082820282848281151561244d57fe5b0414611f4557fe5b60008282111561246157fe5b50900390565b81548183558181151161248b5760008381526020902061248b918101908301612490565b505050565b6112ce91905b808211156124aa5760008155600101612496565b50905600a165627a7a72305820956bfbdce576c47163c5c4019cecea2d6c7cb48b61cde48885d7007f583799d90029\\",\\"binhash\\":\\"00493cb0ea351e565d8ae86d07f5644ed179e14097943a942d037ea1e37b4bc4\\"},\\"Validator:Validator\\":{\\"source\\":\\"Validator:Validator\\",\\"name\\":\\"Validator\\",\\"abi\\":[{\\"name\\":\\"setTokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"setProposalContract\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_proposals\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"getValidatorsCount\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"changeOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"validators\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"removeValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"threshold\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"tokenPorter\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hashClaimed\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"addValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"proposals\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"hashRefutation\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"acceptOwnership\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"auctions\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"owner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"attestHash\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\",\\"indexed\\":false},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes32[]\\",\\"indexed\\":false},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\",\\"indexed\\":false},{\\"name\\":\\"_globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"initValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false},{\\"name\\":\\"_tokenPorterAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"hashAttestations\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"newOwner\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"attestationCount\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"updateThreshold\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"refuteHash\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":false},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[],\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"isNewThresholdValid\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"_valCount\\",\\"type\\":\\"uint256\\",\\"indexed\\":false},{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"isValidator\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"token\\",\\"type\\":\\"function\\",\\"payable\\":false,\\"inputs\\":[],\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\",\\"indexed\\":false}],\\"constant\\":true,\\"anonymous\\":false},{\\"name\\":\\"LogAttestation\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"hash\\",\\"type\\":\\"bytes32\\",\\"indexed\\":true},{\\"name\\":\\"recipientAddr\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"isValid\\",\\"type\\":\\"bool\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogValidatorAdded\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"validator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"caller\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"LogValidatorRemoved\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"validator\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"caller\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\",\\"indexed\\":false}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false},{\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\",\\"payable\\":false,\\"inputs\\":[{\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true},{\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\",\\"indexed\\":true}],\\"outputs\\":null,\\"constant\\":false,\\"anonymous\\":false}],\\"bin\\":\\"60606040526001600c5560008054600160a060020a033316600160a060020a03199091161790556110b1806100356000396000f30060606040526004361061012f5763ffffffff60e060020a6000350416631987b887811461013457806320f3f5d41461016757806327498240146101865780632af4c31e146101ab57806335aa2e44146101ca57806340a141ff146101fc57806342cde4e81461021d5780634892f0af146102305780634bf2500d146102435780634d238c8e1461025957806355ef20e61461027857806366d8de651461028b57806379ba5097146102ad57806385aa6103146102c05780638da5cb5b146102d3578063bceac891146102e6578063bf2699e7146103b3578063c69ba441146103de578063d4ee1d9014610400578063d65ddd5214610413578063d7d7442f14610429578063e8fd112a1461043f578063faa8fd7c14610461578063facd743b1461047a578063fc0c546a14610499575b600080fd5b341561013f57600080fd5b610153600160a060020a03600435166104ac565b604051901515815260200160405180910390f35b341561017257600080fd5b610153600160a060020a0360043516610502565b341561019157600080fd5b610199610558565b60405190815260200160405180910390f35b34156101b657600080fd5b610153600160a060020a036004351661055f565b34156101d557600080fd5b6101e06004356105b9565b604051600160a060020a03909116815260200160405180910390f35b341561020757600080fd5b61021b600160a060020a03600435166105e1565b005b341561022857600080fd5b610199610790565b341561023b57600080fd5b6101e0610796565b341561024e57600080fd5b6101536004356107a5565b341561026457600080fd5b61021b600160a060020a03600435166107ba565b341561028357600080fd5b6101e06108d2565b341561029657600080fd5b610153600435600160a060020a03602435166108e1565b34156102b857600080fd5b610153610901565b34156102cb57600080fd5b6101e0610985565b34156102de57600080fd5b6101e0610994565b34156102f157600080fd5b61021b60048035906024803577ffffffffffffffffffffffffffffffffffffffffffffffff191691604435600160a060020a031691606435916084359160c49060a435908101908301358060208082020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050933593506109a392505050565b34156103be57600080fd5b61021b600160a060020a0360043581169060243581169060443516610d06565b34156103e957600080fd5b610153600435600160a060020a0360243516610da0565b341561040b57600080fd5b6101e0610dc0565b341561041e57600080fd5b610199600435610dcf565b341561043457600080fd5b610153600435610de1565b341561044a57600080fd5b61021b600435600160a060020a0360243516610e39565b341561046c57600080fd5b610153600435602435610f2c565b341561048557600080fd5b610153600160a060020a0360043516610f80565b34156104a457600080fd5b6101e0610f95565b6000805433600160a060020a039081169116146104c857600080fd5b600160a060020a03821615156104dd57600080fd5b5060088054600160a060020a038316600160a060020a03199091161790556001919050565b6000805433600160a060020a0390811691161461051e57600080fd5b600160a060020a038216151561053357600080fd5b50600a8054600160a060020a038316600160a060020a03199091161790556001919050565b6006545b90565b6000805433600160a060020a0390811691161461057b57600080fd5b600054600160a060020a038381169116141561059657600080fd5b5060018054600160a060020a038316600160a060020a0319909116178155919050565b60068054829081106105c757fe5b600091825260209091200154600160a060020a0316905081565b6000805433600160a060020a039081169116148061060d5750600a5433600160a060020a039081169116145b151561061857600080fd5b6006546001901161062857600080fd5b50600160a060020a0381166000908152600560205260408120805460ff191690555b6006548110156107185781600160a060020a031660068281548110151561066d57fe5b600091825260209091200154600160a060020a03161415610710576006546000190181146106f7576006805460001981019081106106a757fe5b60009182526020909120015460068054600160a060020a0390921691839081106106cd57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790555b600680549061070a90600019830161103e565b50610718565b60010161064a565b600654600c54106107435760065460011415610738576001600c55610743565b60065460001901600c555b33600160a060020a031682600160a060020a03167f5627cd186a8bbe264dd973df5fc00b47503dd5eb8b800c374a79cd07976e3b91600c5460405190815260200160405180910390a35050565b600c5481565b600854600160a060020a031681565b600b6020526000908152604090205460ff1681565b6000805433600160a060020a03908116911614806107e65750600a5433600160a060020a039081169116145b15156107f157600080fd5b600160a060020a03821660009081526005602052604090205460ff161561081757600080fd5b6006805460018101610829838261103e565b5060009182526020808320919091018054600160a060020a031916600160a060020a03861690811790915582526005905260409020805460ff1916600117905560065460029004600101905080600c54101561088557600c8190555b33600160a060020a031682600160a060020a03167f46213623f0eccf79b262f17f4d40ff0bee40a6cc53bd88881667cd1409d7b0b2600c5460405190815260200160405180910390a35050565b600a54600160a060020a031681565b600360209081526000928352604080842090915290825290205460ff1681565b60015460009033600160a060020a0390811691161461091f57600080fd5b600154600054600160a060020a0391821691167f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b60405160405180910390a3506001805460008054600160a060020a031916600160a060020a0390921691909117905590565b600954600160a060020a031681565b600054600160a060020a031681565b600160a060020a03331660009081526005602052604090205460ff1615156109ca57600080fd5b8715156109d657600080fd5b6000888152600260209081526040808320600160a060020a033316845290915290205460ff1615610a0657600080fd5b6000888152600360209081526040808320600160a060020a033316845290915290205460ff1615610a3657600080fd5b600854610aa090600160a060020a031663fe5a53778a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a8257600080fd5b5af11515610a8f57600080fd5b505050604051805190508985610fa4565b1515610aab57600080fd5b6000888152600260209081526040808320600160a060020a033381168552908352818420805460ff191660019081179091558c8552600490935292819020805483019055918816918a917ffe764dcbebeb35937aa8a11cf0f1f95e60b25fe4574742ea6e89943e315eb98a9151901515815260200160405180910390a3600c5460008981526004602052604090205410801590610b5757506000888152600b602052604090205460ff16155b15610cfc576000888152600b602052604090819020805460ff19166001179055600854600160a060020a0316906341819f8390899089908990899088908f9089906006905160e060020a63ffffffff8b1602815277ffffffffffffffffffffffffffffffffffffffffffffffff19891660048201908152600160a060020a0389166024830152604482018890526064820187905260a4820185905260c4820184905261010060848301908152909160e48101906101040187818151815260200191508051906020019080838360005b83811015610c3e578082015183820152602001610c26565b50505050905090810190601f168015610c6b5780820380516001836020036101000a031916815260200191505b508381038252848181548152602001915080548015610cb357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610c95575b50509a5050505050505050505050602060405180830381600087803b1515610cda57600080fd5b5af11515610ce757600080fd5b505050604051805190501515610cfc57600080fd5b5050505050505050565b60005433600160a060020a03908116911614610d2157600080fd5b600160a060020a0383161515610d3657600080fd5b600160a060020a0382161515610d4b57600080fd5b600160a060020a0381161515610d6057600080fd5b60088054600160a060020a0319908116600160a060020a039384161790915560098054821693831693909317909255600780549092169216919091179055565b600260209081526000928352604080842090915290825290205460ff1681565b600154600160a060020a031681565b60046020526000908152604090205481565b6000805433600160a060020a0390811691161480610e0d5750600a5433600160a060020a039081169116145b1515610e1857600080fd5b600654610e259083610f2c565b1515610e3057600080fd5b50600c55600190565b600160a060020a03331660009081526005602052604090205460ff161515610e6057600080fd5b6000828152600260209081526040808320600160a060020a033316845290915290205460ff1615610e9057600080fd5b6000828152600360209081526040808320600160a060020a033316845290915290205460ff1615610ec057600080fd5b6000828152600360209081526040808320600160a060020a0333811685529252808320805460ff191660011790559083169184917ffe764dcbebeb35937aa8a11cf0f1f95e60b25fe4574742ea6e89943e315eb98a919051901515815260200160405180910390a35050565b6000816001148015610f3e5750826002145b15610f4b57506001610f7a565b60018210158015610f5b57508282105b8015610f6957506002830482115b15610f7657506001610f7a565b5060005b92915050565b60056020526000908152604090205460ff1681565b600754600160a060020a031681565b600080808515801590610fb657508415155b8015610fc25750835115155b1515610fcd57600080fd5b5083905060005b8351811015611032576002848281518110610feb57fe5b906020019060200201518360405191825260208083019190915260409182019151808303816000865af1151561102057600080fd5b50506040518051925050600101610fd4565b50939093149392505050565b81548183558181151161106257600083815260209020611062918101908301611067565b505050565b61055c91905b80821115611081576000815560010161106d565b50905600a165627a7a72305820d2fe8b1c1fdd565ba986f2e875b0d920711c80a23911a8297b049dac7a615cfe0029\\",\\"binhash\\":\\"f79185e878b78fb4918dfece9507fb6289fa8a693817991292ed4ceaf85753b0\\"}}}");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4MC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///80\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"votingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"closeProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"voteForProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"actions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeRemoveValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"valProposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateVotingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"voter\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogVoted\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"creator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogProposalCreated\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogProposalClosed\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4MS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///81\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"importSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"chainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"recipientAddress\\",\\"type\\":\\"address\\"},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validators\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"mintToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"claimables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_exportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setExportFeePerTenThousand\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"removeDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"burnSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"importMET\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"exportedBurns\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_minimumExportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setMinimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setChainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"mintHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"burnHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"exportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_contractAddress\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initTokenPorter\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"supplyOnAllChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"destinationChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"tokenOwner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"export\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"recipients\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"claimReceivables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"merkleRoots\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":false,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"indexed\\":false,\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"exporter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogExportReceipt\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToImport\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"exportTimeStamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"LogImportRequest\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":true,\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogImport\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ExportOnChainClaimedReceiptLog\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":false,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"indexed\\":false,\\"name\\":\\"genesisTime\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"dailyAuctionStartTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ExportReceiptLog\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"}],\\"name\\":\\"ImportReceiptLog\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4Mi5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///82\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setTokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposals\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setProposalContract\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getValidatorsCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"validators\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"removeValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"threshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"hashClaimed\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashRefutation\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"attestHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_tokenPorterAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashAttestations\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"attestationCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"refuteHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_valCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"isNewThresholdValid\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"pure\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"isValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"hash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"recipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"isValid\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogAttestation\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorAdded\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorRemoved\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4My5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///83\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"votingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"closeProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"voteForProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"actions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeRemoveValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"valProposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateVotingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"voter\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogVoted\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"creator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogProposalCreated\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogProposalClosed\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4NC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///84\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"importSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"chainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"recipientAddress\\",\\"type\\":\\"address\\"},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validators\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"mintToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"claimables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_exportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setExportFeePerTenThousand\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"removeDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"burnSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"importMET\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"exportedBurns\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_minimumExportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setMinimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setChainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"mintHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"burnHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"exportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_contractAddress\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initTokenPorter\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"supplyOnAllChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"destinationChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"tokenOwner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"export\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"recipients\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"claimReceivables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"merkleRoots\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":false,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"indexed\\":false,\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"exporter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogExportReceipt\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToImport\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"exportTimeStamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"LogImportRequest\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":true,\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogImport\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ExportOnChainClaimedReceiptLog\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":false,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"indexed\\":false,\\"name\\":\\"genesisTime\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"dailyAuctionStartTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ExportReceiptLog\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"}],\\"name\\":\\"ImportReceiptLog\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4NS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///85\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setTokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposals\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setProposalContract\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getValidatorsCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"validators\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"removeValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"threshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"hashClaimed\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashRefutation\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"attestHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_tokenPorterAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashAttestations\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"attestationCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"refuteHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_valCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"isNewThresholdValid\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"pure\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"isValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"hash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"recipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"isValid\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogAttestation\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorAdded\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorRemoved\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4Ni5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///86\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialAuctionEndTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"initialPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_n\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"priceAt\\",\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumPriceInDailyAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"MULTIPLIER\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tentimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"restartAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialized\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"isInitialAuctionEnded\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentMintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"isRunning\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"lastPurchaseTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalMetSupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_AC_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalDailySupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"hundredtimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"heartbeat\\",\\"outputs\\":[{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"auctionAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"convertAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"minting\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"totalMET\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"proceedsBal\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currTick\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currAuction\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"nextAuctionGMT\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"genesisGMT\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"currentAuctionPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_lastPurchasePrice\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"genesisTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"stopEverything\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"dailyAuctionStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"mintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minted\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokensOnThisChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"proceeds\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_GLOBAL_DAILY_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_wei\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_timestamp\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whatWouldPurchaseDo\\",\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalMigratedIn\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumPrice\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"lastPurchasePrice\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"dailyMintable\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"thousandtimes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"currentPrice\\",\\"outputs\\":[{\\"name\\":\\"weiPerToken\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"lastPurchasePrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"numTicks\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"priceAtInitialAuction\\",\\"outputs\\":[{\\"name\\":\\"price\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"initPricer\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"initialAuctionDuration\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"chain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whichTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"DAILY_PURCHASE_LIMIT\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"INITIAL_FOUNDER_SUPPLY\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"prepareAuctionForNonOGChain\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"founders\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"globalSupplyAfterPercentageLogic\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_token\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_proceeds\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_genesisTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_minimumPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_startingPrice\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_timeScale\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_chain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_initialAuctionEndTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"skipInitBecauseIAmNotOg\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalMigratedOut\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"AUCTION_WHEN_PERCENTAGE_LOGIC_STARTS\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"timeScale\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_tick\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"whichAuction\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"fallback\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"sender\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"tokens\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"purchasePrice\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"refund\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogAuctionFundsIn\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4Ny5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///87\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"convertMetToEth\\",\\"outputs\\":[{\\"name\\":\\"returnedEth\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_reserveToken\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_smartToken\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctions\\",\\"type\\":\\"address\\"}],\\"name\\":\\"init\\",\\"outputs\\":[],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getMetBalance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"getEthForMetResult\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_depositAmount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"getMetForEthResult\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getEthBalance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"handleFund\\",\\"outputs\\":[],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_minReturn\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"convertEthToMet\\",\\"outputs\\":[{\\"name\\":\\"returnedMet\\",\\"type\\":\\"uint256\\"}],\\"payable\\":true,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"smartToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"reserveToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogFundsIn\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"eth\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"met\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ConvertEthToMet\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"eth\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"met\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ConvertMetToEth\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4OC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///88\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"name\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"addr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"getRoot\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approve\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"totalSupply\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initMETToken\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setTokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transferFrom\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"decimals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint8\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"transferAllowed\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initToken\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"mint\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"export\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approveMore\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"enableMETTransfers\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"autonomousConverter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"getSubscription\\",\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"leakage\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"importMET\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"balanceOf\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approveLess\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subWithdraw\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"cancelSubscription\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"symbol\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"string\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"destroy\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"roots\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transfer\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_recipient\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subscribe\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"bits\\",\\"type\\":\\"uint256[]\\"}],\\"name\\":\\"multiTransfer\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateLeakage\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"resetLeakage\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"multiSubWithdraw\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_autonomousConverter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_minter\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_initialSupply\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_decmult\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"initMintable\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"subs\\",\\"outputs\\":[{\\"name\\":\\"startTime\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"payPerWeek\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"lastWithdrawTime\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"a\\",\\"type\\":\\"address\\"},{\\"name\\":\\"b\\",\\"type\\":\\"address\\"}],\\"name\\":\\"rootsMatch\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"data\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"setRoot\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"}],\\"name\\":\\"allowance\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_owners\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_recipients\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"multiSubWithdrawFor\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogSubscription\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"subscriber\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"subscribesTo\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogCancelSubscription\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Mint\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Destroy\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_from\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"_to\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Transfer\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"_owner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"_spender\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_value\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Approval\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI4OS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///89\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"votingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"closeProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposalId\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"voteForProposal\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"actions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeRemoveValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newThreshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"proposeNewThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"valProposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_t\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateVotingPeriod\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"voter\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"support\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogVoted\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"creator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogProposalCreated\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"proposalId\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"newValidator\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"newThreshold\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"action\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"expiry\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supportCount\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"passed\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogProposalClosed\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5MC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///90\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"importSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"chainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"validator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"recipientAddress\\",\\"type\\":\\"address\\"},{\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"validators\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"mintToken\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"claimables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_exportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setExportFeePerTenThousand\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"removeDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"burnSequence\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_addresses\\",\\"type\\":\\"address[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_burnHashes\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_importData\\",\\"type\\":\\"uint256[]\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"importMET\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"exportedBurns\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_minimumExportFee\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setMinimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_startTime\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setChainHopStartTime\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"mintHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"minimumExportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"burnHashes\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"exportFee\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_chainName\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_contractAddress\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addDestinationChain\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"burnAtTick\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initTokenPorter\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"supplyOnAllChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes8\\"}],\\"name\\":\\"destinationChains\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"tokenOwner\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_destMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_destRecipAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"export\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"recipients\\",\\"type\\":\\"address[]\\"}],\\"name\\":\\"claimReceivables\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"merkleRoots\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"destinationChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":false,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToBurn\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"currentTick\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"dailyMintable\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"supplyOnAllChains\\",\\"type\\":\\"uint256[]\\"},{\\"indexed\\":false,\\"name\\":\\"blockTimestamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"exporter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"LogExportReceipt\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"currentBurnHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":false,\\"name\\":\\"prevHash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountToImport\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"exportTimeStamp\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"burnSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"LogImportRequest\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"originChain\\",\\"type\\":\\"bytes8\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountImported\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"fee\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"extraData\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":true,\\"name\\":\\"importSequence\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":true,\\"name\\":\\"currentHash\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"LogImport\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"destinationMetronomeAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"destinationRecipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ExportOnChainClaimedReceiptLog\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5MS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///91\n')},function(module){eval('module.exports = JSON.parse("[{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenPorter\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setTokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_proposals\\",\\"type\\":\\"address\\"}],\\"name\\":\\"setProposalContract\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"getValidatorsCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"changeOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"validators\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"removeValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"threshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"tokenPorter\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"hashClaimed\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_validator\\",\\"type\\":\\"address\\"}],\\"name\\":\\"addValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"proposals\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashRefutation\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[],\\"name\\":\\"acceptOwnership\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"auctions\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"owner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_originChain\\",\\"type\\":\\"bytes8\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_amount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_fee\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_proof\\",\\"type\\":\\"bytes32[]\\"},{\\"name\\":\\"_extraData\\",\\"type\\":\\"bytes\\"},{\\"name\\":\\"_globalSupplyInOtherChains\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"attestHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_tokenAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_auctionsAddr\\",\\"type\\":\\"address\\"},{\\"name\\":\\"_tokenPorterAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"initValidator\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"hashAttestations\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"newOwner\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"attestationCount\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"uint256\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"updateThreshold\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":false,\\"inputs\\":[{\\"name\\":\\"_burnHash\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"_recipientAddr\\",\\"type\\":\\"address\\"}],\\"name\\":\\"refuteHash\\",\\"outputs\\":[],\\"payable\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"_valCount\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"_threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"isNewThresholdValid\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"pure\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"name\\":\\"isValidator\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"bool\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"constant\\":true,\\"inputs\\":[],\\"name\\":\\"token\\",\\"outputs\\":[{\\"name\\":\\"\\",\\"type\\":\\"address\\"}],\\"payable\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"hash\\",\\"type\\":\\"bytes32\\"},{\\"indexed\\":true,\\"name\\":\\"recipientAddr\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"isValid\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"LogAttestation\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorAdded\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"validator\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"caller\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"threshold\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"LogValidatorRemoved\\",\\"type\\":\\"event\\"},{\\"anonymous\\":false,\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"prevOwner\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"newOwner\\",\\"type\\":\\"address\\"}],\\"name\\":\\"OwnershipChanged\\",\\"type\\":\\"event\\"}]");\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5Mi5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///92\n')}])});