\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Receive.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Receive.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Receive.vue?vue&type=template&id=2b98d36e&\"\nimport script from \"./Receive.vue?vue&type=script&lang=js&\"\nexport * from \"./Receive.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings inner\"},[_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"details\"},[_c('label',{attrs:{\"for\":\"representative\"}},[_vm._v(\"Current Representative\")]),_c('a',{staticClass:\"copy\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.copyToClipboard(_vm.representative)}}},[_c('i',{staticClass:\"fad fa-clone\"})]),_c('div',{staticClass:\"address\",staticStyle:{\"margin-bottom\":\"30px\",\"background\":\"#00000014\",\"padding\":\"4px 14px\"},domProps:{\"innerHTML\":_vm._s(_vm.highlightAddress(_vm.representative))}})]),(_vm.change)?_c('div',{staticClass:\"details\"},[(_vm.error !== null)?_c('div',{staticClass:\"error\"},[_vm._v(_vm._s(_vm.error))]):_vm._e(),_c('label',{attrs:{\"for\":\"newrep\"}},[_vm._v(\"Change Representative\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newrep),expression:\"newrep\"}],staticClass:\"newrep\",attrs:{\"type\":\"text\",\"name\":\"newrep\"},domProps:{\"value\":(_vm.newrep)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newrep=$event.target.value}}})]):_vm._e(),(_vm.change)?_c('scan-qr',{on:{\"scanned\":_vm.scanDone}}):_vm._e(),(_vm.nfcsup !== false)?_c('scan-nfc',{staticStyle:{\"margin-bottom\":\"15px\"},on:{\"scanned\":_vm.scanDone}}):_vm._e(),_c('div',{staticClass:\"inline-buttons\"},[(!_vm.change)?_c('button',{staticClass:\"repchange btn\",on:{\"click\":function($event){_vm.change = true}}},[_vm._v(\"Change Representative\")]):_vm._e(),(_vm.change)?_c('button',{staticClass:\"repchange btn\",on:{\"click\":_vm.changeRep}},[_vm._v(\"Confirm\")]):_vm._e(),(_vm.change)?_c('button',{staticClass:\"repchange btn outline\",on:{\"click\":function($event){_vm.change = false}}},[_vm._v(\"Cancel\")]):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n
\n
\n
\n \n \n \n
\n
\n
{{ error }}
\n \n \n
\n \n \n
\n \n \n \n
\n
\n
\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=f00775a2&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.blockstate !== null)?_c('simplebar',{attrs:{\"id\":\"breakdown\"}},[_c('header',{staticClass:\"headingtitle\"},[_vm._v(\"State Block \"),_c('span',{staticClass:\"value\",on:{\"click\":function($event){return _vm.copyToClipboard(_vm.hash)}}},[_c('i',{staticClass:\"fad fa-clone\"})]),_c('span',{staticClass:\"value\",on:{\"click\":function($event){return _vm.link('block',_vm.hash)}}},[_c('i',{staticClass:\"fad fa-external-link\"})])]),_c('div',{staticClass:\"stateblock block\"},[_vm._v(_vm._s(_vm.hash))]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Block subtype \"),_c('span',{staticClass:\"subtype value\"},[_vm._v(_vm._s(_vm.blockstate.subtype))])]),_c('div',{staticClass:\"label\"},[_vm._v(\"The type of transaction that created this state block\")])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Account \"),_c('span',{staticClass:\"value\",on:{\"click\":function($event){return _vm.copyToClipboard(_vm.blockstate.contents.account)}}},[_c('i',{staticClass:\"fad fa-clone\"})]),_c('span',{staticClass:\"value\",on:{\"click\":function($event){return _vm.link('address',_vm.blockstate.contents.account)}}},[_c('i',{staticClass:\"fad fa-external-link\"})])]),_c('div',{staticClass:\"account\"},[_vm._v(_vm._s(_vm.blockstate.contents.account))]),_c('div',{staticClass:\"label\"},[_vm._v(\"The account represented by this state block\")])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Amount \"),_c('span',{staticClass:\"amount value\",domProps:{\"innerHTML\":_vm._s(_vm.formattedValue(_vm.blockstate.amount))}})]),_c('div',{staticClass:\"raw\"},[_c('span',{staticClass:\"amount_raw\"},[_vm._v(_vm._s(_vm.blockstate.amount))]),_vm._v(\" raw\")]),_c('div',{staticClass:\"label\"},[_vm._v(\"The amount of NANO that was sent in this transaction\")])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Balance \"),_c('span',{staticClass:\"balance value\",domProps:{\"innerHTML\":_vm._s(_vm.formattedValue(_vm.blockstate.balance))}})]),_c('div',{staticClass:\"raw\"},[_c('span',{staticClass:\"balance_raw\"},[_vm._v(_vm._s(_vm.blockstate.balance))]),_vm._v(\" raw\")]),_c('div',{staticClass:\"label\"},[_vm._v(\"The amount of NANO that was sent in this transaction\")])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Representative \"),_c('span',{staticClass:\"value\",on:{\"click\":function($event){return _vm.copyToClipboard(_vm.blockstate.contents.representative)}}},[_c('i',{staticClass:\"fad fa-clone\"})]),_c('span',{staticClass:\"value\",on:{\"click\":function($event){return _vm.link('address',_vm.blockstate.contents.representative)}}},[_c('i',{staticClass:\"fad fa-external-link\"})])]),_c('div',[_c('span',{staticClass:\"rep_raw\"},[_vm._v(_vm._s(_vm.blockstate.contents.representative))])]),_c('div',{staticClass:\"label\"},[_vm._v(\"The account's representative\")])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Recipient \"),_c('span',{staticClass:\"value\",on:{\"click\":function($event){return _vm.copyToClipboard(_vm.blockstate.contents.representative)}}},[_c('i',{staticClass:\"fad fa-clone\"})]),_vm._v(\" \"),_c('span',{staticClass:\"value\",on:{\"click\":function($event){return _vm.link('address',_vm.blockstate.contents.link_as_account)}}},[_c('i',{staticClass:\"fad fa-external-link\"})])]),_c('div',[_c('span',{staticClass:\"rec_raw\"},[_vm._v(_vm._s(_vm.blockstate.contents.link_as_account))])]),_c('div',{staticClass:\"label\"},[_vm._v(\"The account that is receiving the transaction\")])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Date \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.formattedDate))])]),_c('div',{staticClass:\"label\"},[_vm._v(\"The date and time this block was discovered (converted to your local time)\")])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Previous Block \"),_c('span',{staticClass:\"value\",on:{\"click\":function($event){return _vm.link('block',_vm.blockstate.contents.previous)}}},[_c('i',{staticClass:\"fad fa-external-link\"})])]),_c('div',[_vm._v(\" \"+_vm._s(_vm.blockstate.contents.previous)+\" \")]),_c('div',{staticClass:\"label\"},[_vm._v(\"The previous block in this account's chain\")])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Link\")]),_c('div',[_vm._v(_vm._s(_vm.blockstate.contents.link))]),_c('div',{staticClass:\"label\"},[_vm._v(\"The destination address encoded in hex format or the block hash if open\")])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Proof of Work\")]),_c('div',[_vm._v(_vm._s(_vm.blockstate.contents.work))])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Signature\")]),_c('div',[_vm._v(_vm._s(_vm.blockstate.contents.signature))])]),_c('div',{staticClass:\"block\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"JSON \"),_c('span',{staticClass:\"value\",on:{\"click\":function($event){_vm.copyToClipboard(JSON.stringify(_vm.blockstate))}}},[_c('i',{staticClass:\"fad fa-clone\"})])]),_c('div',{staticClass:\"json\"},[_c('pre',[_vm._v(_vm._s(JSON.stringify(_vm.blockstate, null, 4)))])])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n State Block \n
{{ hash }}
\n
\n
Block subtype {{ blockstate.subtype }}
\n
The type of transaction that created this state block
\n
\n
\n
Account
\n
{{ blockstate.contents.account }}
\n
The account represented by this state block
\n
\n
\n
Amount
\n
{{ blockstate.amount }} raw
\n
The amount of NANO that was sent in this transaction
\n
\n
\n
Balance
\n
{{ blockstate.balance }} raw
\n
The amount of NANO that was sent in this transaction
\n
\n
\n
Representative
\n
{{ blockstate.contents.representative }}
\n
The account's representative
\n
\n
\n
Recipient
\n
{{ blockstate.contents.link_as_account }}
\n
The account that is receiving the transaction
\n
\n
\n
Date {{ formattedDate }}
\n
The date and time this block was discovered (converted to your local time)
\n
\n
\n
Previous Block
\n
\n {{ blockstate.contents.previous }}\n
\n
The previous block in this account's chain
\n
\n
\n
Link
\n
{{ blockstate.contents.link }}
\n
The destination address encoded in hex format or the block hash if open
\n
\n
\n
Proof of Work
\n
{{ blockstate.contents.work }}
\n
\n
\n
Signature
\n
{{ blockstate.contents.signature }}
\n
\n
\n
JSON
\n
\n
{{ JSON.stringify(blockstate, null, 4) }}
\n
\n
\n \n \n\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockState.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockState.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BlockState.vue?vue&type=template&id=51ce3523&scoped=true&\"\nimport script from \"./BlockState.vue?vue&type=script&lang=js&\"\nexport * from \"./BlockState.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BlockState.vue?vue&type=style&index=0&id=51ce3523&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"51ce3523\",\n null\n \n)\n\nexport default component.exports","// nano-webgl-pow\n// Nano Currency Proof of Work Value generation using WebGL2\n// Author: numtel \n// License: MIT\n\n// window.NanoWebglPow(hashHex, callback, progressCallback);\n// @param hashHex String Previous Block Hash as Hex String\n// @param callback Function Called when work value found\n// Receives single string argument, work value as hex\n// @param progressCallback Function Optional\n// Receives single argument: n, number of frames so far\n// Return true to abort\n\nfunction array_hex(arr, index, length) {\n let out='';\n for(let i=length - 1;i>-1;i--) {\n out+=(arr[i] > 15 ? '' : '0') + arr[i].toString(16);\n }\n return out;\n}\n\nfunction hex_reverse(hex) {\n let out='';\n for(let i=hex.length;i>0;i-=2) {\n out+=hex.slice(i-2,i);\n }\n return out;\n}\n\nexport function calculate(hashHex, threshold, width, height, callback, progressCallback) {\n const canvas = document.createElement('canvas');\n\n canvas.width = width;\n canvas.height = height;\n\n const gl = canvas.getContext('webgl2');\n\n if(!gl)\n throw new Error('webgl2_required');\n\n if(!/^[A-F-a-f0-9]{64}$/.test(hashHex))\n throw new Error('invalid_hash');\n\n gl.clearColor(0, 0, 0, 1);\n\n const reverseHex = hex_reverse(hashHex);\n\n // Vertext Shader\n const vsSource = `#version 300 es\n precision highp float;\n layout (location=0) in vec4 position;\n layout (location=1) in vec2 uv;\n\n out vec2 uv_pos;\n\n void main() {\n uv_pos = uv;\n gl_Position = position;\n }`;\n\n // Fragment shader\n const fsSource = `#version 300 es\n precision highp float;\n precision highp int;\n\n in vec2 uv_pos;\n out vec4 fragColor;\n\n // Random work values\n // First 2 bytes will be overwritten by texture pixel position\n // Second 2 bytes will be modified if the canvas size is greater than 256x256\n uniform uvec4 u_work0;\n // Last 4 bytes remain as generated externally\n uniform uvec4 u_work1;\n\n // Defined separately from uint v[32] below as the original value is required\n // to calculate the second uint32 of the digest for threshold comparison\n #define BLAKE2B_IV32_1 0x6A09E667u\n\n // Both buffers represent 16 uint64s as 32 uint32s\n // because that's what GLSL offers, just like Javascript\n\n // Compression buffer, intialized to 2 instances of the initialization vector\n // The following values have been modified from the BLAKE2B_IV:\n // OUTLEN is constant 8 bytes\n // v[0] ^= 0x01010000u ^ uint(OUTLEN);\n // INLEN is constant 40 bytes: work value (8) + block hash (32)\n // v[24] ^= uint(INLEN);\n // It's always the \"last\" compression at this INLEN\n // v[28] = ~v[28];\n // v[29] = ~v[29];\n uint v[32] = uint[32](\n 0xF2BDC900u, 0x6A09E667u, 0x84CAA73Bu, 0xBB67AE85u,\n 0xFE94F82Bu, 0x3C6EF372u, 0x5F1D36F1u, 0xA54FF53Au,\n 0xADE682D1u, 0x510E527Fu, 0x2B3E6C1Fu, 0x9B05688Cu,\n 0xFB41BD6Bu, 0x1F83D9ABu, 0x137E2179u, 0x5BE0CD19u,\n 0xF3BCC908u, 0x6A09E667u, 0x84CAA73Bu, 0xBB67AE85u,\n 0xFE94F82Bu, 0x3C6EF372u, 0x5F1D36F1u, 0xA54FF53Au,\n 0xADE682F9u, 0x510E527Fu, 0x2B3E6C1Fu, 0x9B05688Cu,\n 0x04BE4294u, 0xE07C2654u, 0x137E2179u, 0x5BE0CD19u\n );\n // Input data buffer\n uint m[32];\n\n // These are offsets into the input data buffer for each mixing step.\n // They are multiplied by 2 from the original SIGMA values in\n // the C reference implementation, which refered to uint64s.\n const int SIGMA82[192] = int[192](\n 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,2,24,\n 0,4,22,14,10,6,22,16,24,0,10,4,30,26,20,28,6,12,14,2,18,8,14,18,6,2,26,\n 24,22,28,4,12,10,20,8,0,30,16,18,0,10,14,4,8,20,30,28,2,22,24,12,16,6,\n 26,4,24,12,20,0,22,16,6,8,26,14,10,30,28,2,18,24,10,2,30,28,26,8,20,0,\n 14,12,6,18,4,16,22,26,22,14,28,24,2,6,18,10,0,30,8,16,12,4,20,12,30,28,\n 18,22,6,0,16,24,4,26,14,2,8,20,10,20,4,16,8,14,12,2,10,30,22,18,28,6,24,\n 26,0,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,\n 2,24,0,4,22,14,10,6\n );\n\n // 64-bit unsigned addition within the compression buffer\n // Sets v[a,a+1] += b\n // b0 is the low 32 bits of b, b1 represents the high 32 bits\n void add_uint64 (int a, uint b0, uint b1) {\n uint o0 = v[a] + b0;\n uint o1 = v[a + 1] + b1;\n if (v[a] > 0xFFFFFFFFu - b0) { // did low 32 bits overflow?\n o1++;\n }\n v[a] = o0;\n v[a + 1] = o1;\n }\n // Sets v[a,a+1] += v[b,b+1]\n void add_uint64 (int a, int b) {\n add_uint64(a, v[b], v[b+1]);\n }\n\n // G Mixing function\n void B2B_G (int a, int b, int c, int d, int ix, int iy) {\n add_uint64(a, b);\n add_uint64(a, m[ix], m[ix + 1]);\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n uint xor0 = v[d] ^ v[a];\n uint xor1 = v[d + 1] ^ v[a + 1];\n v[d] = xor1;\n v[d + 1] = xor0;\n\n add_uint64(c, d);\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c];\n xor1 = v[b + 1] ^ v[c + 1];\n v[b] = (xor0 >> 24) ^ (xor1 << 8);\n v[b + 1] = (xor1 >> 24) ^ (xor0 << 8);\n\n add_uint64(a, b);\n add_uint64(a, m[iy], m[iy + 1]);\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a];\n xor1 = v[d + 1] ^ v[a + 1];\n v[d] = (xor0 >> 16) ^ (xor1 << 16);\n v[d + 1] = (xor1 >> 16) ^ (xor0 << 16);\n\n add_uint64(c, d);\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c];\n xor1 = v[b + 1] ^ v[c + 1];\n v[b] = (xor1 >> 31) ^ (xor0 << 1);\n v[b + 1] = (xor0 >> 31) ^ (xor1 << 1);\n }\n\n void main() {\n int i;\n uint uv_x = uint(uv_pos.x * ${canvas.width - 1}.);\n uint uv_y = uint(uv_pos.y * ${canvas.height - 1}.);\n uint x_pos = uv_x % 256u;\n uint y_pos = uv_y % 256u;\n uint x_index = (uv_x - x_pos) / 256u;\n uint y_index = (uv_y - y_pos) / 256u;\n\n // First 2 work bytes are the x,y pos within the 256x256 area, the next\n // two bytes are modified from the random generated value, XOR'd with\n // the x,y area index of where this pixel is located\n m[0] = (x_pos ^ (y_pos << 8) ^ ((u_work0.b ^ x_index) << 16) ^ ((u_work0.a ^ y_index) << 24));\n // Remaining bytes are un-modified from the random generated value\n m[1] = (u_work1.r ^ (u_work1.g << 8) ^ (u_work1.b << 16) ^ (u_work1.a << 24));\n\n // Block hash\n m[2] = 0x${reverseHex.slice(56,64)}u;\n m[3] = 0x${reverseHex.slice(48,56)}u;\n m[4] = 0x${reverseHex.slice(40,48)}u;\n m[5] = 0x${reverseHex.slice(32,40)}u;\n m[6] = 0x${reverseHex.slice(24,32)}u;\n m[7] = 0x${reverseHex.slice(16,24)}u;\n m[8] = 0x${reverseHex.slice(8,16)}u;\n m[9] = 0x${reverseHex.slice(0,8)}u;\n\n // twelve rounds of mixing\n for(i=0;i<12;i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1]);\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3]);\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5]);\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7]);\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9]);\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11]);\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13]);\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15]);\n }\n\n // Threshold test, first 4 bytes not significant,\n // only calculate digest of the second 4 bytes\n if((BLAKE2B_IV32_1 ^ v[1] ^ v[17]) > ` + threshold + `u) {\n // Success found, return pixel data so work value can be constructed\n fragColor = vec4(\n float(x_index + 1u)/255., // +1 to distinguish from 0 (unsuccessful) pixels\n float(y_index + 1u)/255., // Same as previous\n float(x_pos)/255., // Return the 2 custom bytes used in work value\n float(y_pos)/255. // Second custom byte\n );\n }\n }`;\n\n const vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vsSource);\n gl.compileShader(vertexShader);\n\n if(!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS))\n throw gl.getShaderInfoLog(vertexShader);\n\n const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fsSource);\n gl.compileShader(fragmentShader);\n\n if(!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS))\n throw gl.getShaderInfoLog(fragmentShader);\n\n const program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n\n if(!gl.getProgramParameter(program, gl.LINK_STATUS))\n throw gl.getProgramInfoLog(program);\n\n gl.useProgram(program);\n\n // Construct simple 2D geometry\n const triangleArray = gl.createVertexArray();\n gl.bindVertexArray(triangleArray);\n\n // Vertex Positions, 2 triangles\n const positions = new Float32Array([\n -1,-1,0, -1,1,0, 1,1,0,\n 1,-1,0, 1,1,0, -1,-1,0\n ]);\n const positionBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, positions, gl.STATIC_DRAW);\n gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(0);\n\n // Texture Positions\n const uvPosArray = new Float32Array([\n 1,1, 1,0, 0,0, 0,1, 0,0, 1,1\n ]);\n const uvBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, uvBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, uvPosArray, gl.STATIC_DRAW);\n gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(1);\n\n const work0Location = gl.getUniformLocation(program, 'u_work0');\n const work1Location = gl.getUniformLocation(program, 'u_work1');\n\n // Draw output until success or progressCallback says to stop\n const work0 = new Uint8Array(4);\n const work1 = new Uint8Array(4);\n let n=0;\n\n function draw() {\n n++;\n window.crypto.getRandomValues(work0);\n window.crypto.getRandomValues(work1);\n\n gl.uniform4uiv(work0Location, Array.from(work0));\n gl.uniform4uiv(work1Location, Array.from(work1));\n\n // Check with progressCallback every 100 frames\n if(n%100===0 && typeof progressCallback === 'function' && progressCallback(n))\n return;\n\n gl.clear(gl.COLOR_BUFFER_BIT);\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n const pixels = new Uint8Array(gl.drawingBufferWidth * gl.drawingBufferHeight * 4);\n gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n\n // Check the pixels for any success\n for(let i=0;i\n
\n \n
\n
RPC Server : {{ $store.state.app.node.address }}
\n
\n
{{ error }}
\n
\n \n \n \n\n
\n
\n \n \n \n \n \n
\n
\n \n \n \n \n \n
\n\n
\n \n
\n \n
\n
\n \n \n \n
\n
\n Generate Wallet\n
\n
\n
\n
\n
Calculating Work
\n
Ready
\n
\n
\n
\n
\n \n Wallet\n \n
Last Refresh: {{ lastrefresh.toLocaleTimeString() }}
\n
\n \n
\n
\n
{{ address }}
\n \n
{{ balance }}
\n \n
\n
\n
History
\n \n\n \n\n
\n \n
History
\n\n \n \n
\n
\n \n
\n
\n \n Receive\n
\n
\n \n Send\n
\n
\n \n Settings\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n\n
\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=a9c33036&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page active\",staticStyle:{\"top\":\"0\"},attrs:{\"id\":\"blockdetails\"}},[_c('block-state',{attrs:{\"static\":true}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n