├── .gitignore ├── BLEMeshSerialInterface.js ├── LICENSE ├── README.md ├── mesh_listener.js ├── package.json └── test ├── resources ├── nrf_open_mesh_dfu_serial_merged.hex ├── rbc_gateway_example_serial.hex └── s110_softdevice.hex └── test.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 21 | .grunt 22 | 23 | # node-waf configuration 24 | .lock-wscript 25 | 26 | # Compiled binary addons (http://nodejs.org/api/addons.html) 27 | build/Release 28 | 29 | # Dependency directories 30 | node_modules 31 | jspm_packages 32 | 33 | # Optional npm cache directory 34 | .npm 35 | 36 | # Optional REPL history 37 | .node_repl_history 38 | -------------------------------------------------------------------------------- /BLEMeshSerialInterface.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const EventEmitter = require('events'); 4 | const SerialPort = require('serialport'); 5 | 6 | const commandOpCodes = { 7 | 'ECHO': 0x02, 8 | 'RADIO_RESET': 0x0e, 9 | 'INIT': 0x70, 10 | 'START': 0x74, 11 | 'STOP': 0x75, 12 | 'VALUE_SET': 0x71, 13 | 'VALUE_ENABLE': 0x72, 14 | 'VALUE_DISABLE': 0x73, 15 | 'FLAG_SET': 0x76, 16 | 'FLAG_GET': 0x77, 17 | 'DFU_DATA': 0x78, 18 | 'VALUE_GET': 0x7a, 19 | 'BUILD_VERSION_GET': 0x7b, 20 | 'ACCESS_ADDR_GET': 0x7c, 21 | 'CHANNEL_GET': 0x7d, 22 | 'INTERVAL_MIN_GET': 0x7f 23 | }; 24 | 25 | const smartMeshCommandOpCodes = { 26 | 'GET_VERSION': 0x50, 27 | 'SET_KEYPAIR': 0x51, // TODO: these may change in release... 28 | 'SET_CAPABILITIES': 0x52, 29 | 'SET_UUID': 0x53, 30 | 31 | /* Provisioning */ 32 | 'SERIAL_CMD_RANGE_PROV_START': 0x60, 33 | 'SERIAL_CMD_PROV_INIT_CONTEXT': 0x60, 34 | 'SERIAL_CMD_PROV_SCAN_START': 0x61, 35 | 'SERIAL_CMD_PROV_SCAN_STOP': 0x62, 36 | 'SERIAL_CMD_PROV_PROVISION': 0x63, 37 | 'SERIAL_CMD_PROV_LISTEN': 0x64, 38 | 'SERIAL_CMD_PROV_ACCEPT': 0x65, 39 | 'SERIAL_CMD_PROV_OOB_USE': 0x66, 40 | 'SERIAL_CMD_PROV_AUTH_DATA': 0x67, 41 | 'SERIAL_CMD_PROV_ECDH_SECRET': 0x68, 42 | 'SERIAL_CMD_PROV_SET_KEYPAIR': 0x69, 43 | 'SERIAL_CMD_PROV_SET_CAPABILITIES': 0x6A, 44 | 'SERIAL_CMD_RANGE_PROV_END': 0x6F 45 | } 46 | 47 | const responseOpCodes = { // TODO: add events for smart mesh. 48 | 'DEVICE_STARTED': 0x81, 49 | 'ECHO_RSP': 0x82, 50 | 'CMD_RSP': 0x84, 51 | 'EVENT_NEW': 0xB3, 52 | 'EVENT_UPDATE': 0xB4, 53 | 'EVENT_CONFLICTING': 0xB5, 54 | 'EVENT_TX': 0xB6, 55 | 'EVENT_DFU': 0x78 56 | }; 57 | 58 | const statusCodes = { // TODO: add status codes for smart mesh. 59 | 'SUCCESS': 0x0, 60 | 'ERROR_UNKNOWN': 0x80, 61 | 'ERROR_INTERNAL': 0x81, 62 | 'ERROR_CMD_UNKNOWN': 0x82, 63 | 'ERROR_DEVICE_STATE_INVALID': 0x83, 64 | 'ERROR_INVALID_LENGTH': 0x84, 65 | 'ERROR_INVALID_PARAMETER': 0x85, 66 | 'ERROR_BUSY': 0x86, 67 | 'ERROR_INVALID_DATA': 0x87, 68 | 'ERROR_PIPE_INVALID': 0x90, 69 | 'RESERVED_START': 0xF0, 70 | 'RESERVED_END': 0xFF 71 | }; 72 | 73 | const reverseLookup = obj => val => { 74 | for (let k of Object.keys(obj)) 75 | if (obj[k] === val) 76 | return k; 77 | } 78 | 79 | const commandOpCodeToString = reverseLookup(commandOpCodes); 80 | const statusCodeToString = reverseLookup(statusCodes); 81 | const responseOpCodeToString = reverseLookup(responseOpCodes); 82 | 83 | 84 | class BLEMeshSerialInterface extends EventEmitter { 85 | constructor() { 86 | super(); 87 | 88 | this._callback; 89 | this._port; 90 | this._responseQueue = []; 91 | this._tempBuildResponse; 92 | } 93 | 94 | _serialPortInterface(serialPort, callback, baudRate, rtscts) { 95 | this._port = new SerialPort(serialPort, {baudRate: baudRate, rtscts: rtscts}, callback); 96 | 97 | this._port.on('data', data => { 98 | this.buildResponse(data); 99 | 100 | while (this._responseQueue.length !== 0) { 101 | const response = this._responseQueue.shift(); 102 | if (this.isCommandResponse(response)) { 103 | this._handleCommandResponse(response); 104 | } else { 105 | this._handleEventResponse(response); 106 | } 107 | } 108 | }); 109 | 110 | this._port.on('disconnect', err => { 111 | this.emit('disconnected', err); 112 | console.log('serial port disconnected: ', err); 113 | }); 114 | 115 | this._port.on('error', err => { 116 | this.emit('error', err); 117 | console.log('serial port error: ', err); 118 | }); 119 | } 120 | 121 | bufferToArray(buf) { 122 | let array = []; 123 | for (let i = 0; i < buf.length; i++) { 124 | array[i] = buf[i]; 125 | } 126 | return array; 127 | } 128 | 129 | buildResponse(data) { 130 | let length = data[0] + 1; // If we are in the middle of building a response this will be incorrect, and re-assigned below. 131 | 132 | if (!this._tempBuildResponse) { 133 | this._tempBuildResponse = new Buffer([]); 134 | } else { 135 | length = this._tempBuildResponse[0] + 1; 136 | } 137 | 138 | let remainingLength = length - this._tempBuildResponse.length; 139 | 140 | if (remainingLength >= data.length) { 141 | this._tempBuildResponse = Buffer.concat([this._tempBuildResponse, data]); 142 | } else { 143 | this._tempBuildResponse = Buffer.concat([this._tempBuildResponse, data.slice(0, remainingLength)]); 144 | } 145 | 146 | if (length === this._tempBuildResponse.length) { 147 | const response = new Buffer(this._tempBuildResponse); 148 | this._responseQueue.push(response); 149 | this._tempBuildResponse = null; 150 | } 151 | 152 | if (remainingLength < data.length) { 153 | this.buildResponse(data.slice(remainingLength)); 154 | } 155 | } 156 | 157 | /** 158 | * _byte(0xDEADBEEF, 0) => 0xEF and _byte(0xDEADBEEF, 3) => 0xDE. 159 | */ 160 | _byte(val, index) { 161 | return ((val >> (8 * index)) & 0xFF); 162 | } 163 | 164 | bytesArrayToUnsignedInt(array) { 165 | array.reverse(); // If handle is 0x01, array is [0x0, 0x1] and really we want array[0] << 8... 166 | 167 | if (array.length > 4) { 168 | console.log('error, max length of array to convert to an unsigned int is 4 bytes'); 169 | return -1; 170 | } 171 | 172 | let temp = 0; 173 | for (let i = 0; i < array.length; i++) { 174 | temp += (array[i] << (i * 8)) >>> 0; 175 | } 176 | 177 | return temp; 178 | } 179 | 180 | _handleCommandResponse(resp) { 181 | let response = this.bufferToArray(resp); 182 | 183 | if (response[0] === 0 & response.length === 1) { 184 | if (this._callback) { 185 | this._callback(null, response); 186 | } 187 | return; 188 | } 189 | 190 | const responseOpCode = response[1]; 191 | const commandOpCode = response[2]; 192 | const statusCode = response[3]; 193 | 194 | switch(responseOpCode) { 195 | case responseOpCodes.ECHO_RSP: 196 | this._callback(null, this.bufferToArray(response.slice(2))); 197 | break; 198 | case responseOpCodes.CMD_RSP: 199 | switch(statusCode) { 200 | case statusCodes.SUCCESS: 201 | switch (commandOpCode) { 202 | case commandOpCodes.FLAG_GET: 203 | this._callback(null, 204 | {handle: this.bytesArrayToUnsignedInt(response.slice(4, 6).reverse()), flagIndex: response[6], flagValue: response[7]} 205 | ); 206 | break; 207 | case commandOpCodes.VALUE_GET: 208 | this._callback(null, 209 | {handle: this.bytesArrayToUnsignedInt(response.slice(4, 6).reverse()), data: response.slice(6).reverse()} 210 | ); 211 | break; 212 | case commandOpCodes.ACCESS_ADDR_GET: 213 | this._callback(null, 214 | {accessAddr: this.bytesArrayToUnsignedInt(response.slice(4).reverse())} 215 | ); 216 | break; 217 | case commandOpCodes.CHANNEL_GET: 218 | this._callback(null, 219 | {channel: response[4]} 220 | ); 221 | break; 222 | case commandOpCodes.INTERVAL_MIN_GET: 223 | this._callback(null, 224 | {intervalMin: this.bytesArrayToUnsignedInt(response.slice(4).reverse())} 225 | ); 226 | break; 227 | default: // TODO: do we want to return build version get as an object? 228 | this._callback(null, response.slice(4)); 229 | } 230 | break; 231 | default: 232 | this._callback(new Error(`received a status code in the command response indicating an error ${statusCodeToString(statusCode)}`), response); 233 | } 234 | break; 235 | default: 236 | this._callback(new Error(`unknown command response opCode ${responseOpCodeToString(responseOpCode)}`), response); 237 | } 238 | } 239 | 240 | _handleEventResponse(response) { 241 | const data = this.bufferToArray(response); 242 | const responseOpCode = data[1]; 243 | 244 | switch(responseOpCode) { 245 | case responseOpCodes.DEVICE_STARTED: 246 | this.emit('deviceStarted', 247 | {operatingMode: response[2], hwError: response[3], dataCreditAvailable: response[4]} 248 | ); 249 | break; 250 | case responseOpCodes.EVENT_NEW: 251 | this.emit('eventNew', 252 | {handle: this.bytesArrayToUnsignedInt(data.slice(2, 4).reverse()), data: data.slice(4).reverse()} 253 | ); 254 | break; 255 | case responseOpCodes.EVENT_UPDATE: 256 | this.emit('eventUpdate', 257 | {handle: this.bytesArrayToUnsignedInt(data.slice(2, 4).reverse()), data: data.slice(4).reverse()} 258 | ); 259 | break; 260 | case responseOpCodes.EVENT_CONFLICTING: 261 | this.emit('eventConflicting', 262 | {handle: this.bytesArrayToUnsignedInt(data.slice(2, 4).reverse()), data: data.slice(4).reverse()} 263 | ); 264 | break; 265 | case responseOpCodes.EVENT_TX: 266 | this.emit('eventTX', 267 | {handle: this.bytesArrayToUnsignedInt(data.slice(2, 4).reverse()), data: data.slice(4).reverse()} 268 | ); 269 | break; 270 | case responseOpCodes.EVENT_DFU: 271 | this.emit('eventDFU', data); 272 | break; 273 | default: 274 | console.log('unknown event response received from slave device: ', response, 275 | responseOpCode, responseOpCodeToString(responseOpCode) 276 | ); 277 | } 278 | } 279 | 280 | isCommandResponse(response) { 281 | const opCode = response[1]; 282 | if (opCode === responseOpCodes.ECHO_RSP | opCode === responseOpCodes.CMD_RSP | response[0] === 0x00) { 283 | return true; 284 | } 285 | return false; 286 | } 287 | 288 | /* API Methods */ 289 | 290 | closeSerialPort(callback) { 291 | this._port.close(err => { 292 | if (err) { 293 | console.log('error in BLEMeshSerialInterface.closeSerialPort(): ', err); 294 | } 295 | callback(err); 296 | }); 297 | } 298 | 299 | openSerialPort(serialPort, callback, baudRate, rtscts) { 300 | if (typeof baudRate === 'undefined') { baudRate = 115200; } 301 | if (typeof rtscts === 'undefined') { rtscts = true; } 302 | 303 | if (typeof this._port !== 'undefined') { 304 | if (this._port.isOpen()) { 305 | this.closeSerialPort(err => { 306 | if (err) { 307 | throw err; 308 | } 309 | this._serialPortInterface(serialPort, callback, baudRate, rtscts); 310 | }); 311 | return; 312 | } 313 | } 314 | 315 | this._serialPortInterface(serialPort, callback, baudRate, rtscts); 316 | } 317 | 318 | writeSerialPort(data) { 319 | this._port.write(data, err => { 320 | if (err) { 321 | this.emit('error', err); 322 | console.log('error when writing to serial port: ', err.message); 323 | } 324 | }); 325 | } 326 | 327 | /* nRF Open Mesh Serial Interface */ 328 | 329 | echo(data, callback) { 330 | const buf = [data.length + 1, commandOpCodes.ECHO]; 331 | const command = new Buffer(buf.concat(data)); 332 | 333 | 334 | this._callback = callback; 335 | this.writeSerialPort(command); 336 | } 337 | 338 | init(accessAddr, intMinMS, channel, callback) { 339 | const command = new Buffer([10, commandOpCodes.INIT, this._byte(accessAddr, 0), this._byte(accessAddr, 1), this._byte(accessAddr, 2), this._byte(accessAddr, 3), 340 | this._byte(intMinMS, 0), this._byte(intMinMS, 1), this._byte(intMinMS, 2), this._byte(intMinMS, 3), channel]); 341 | 342 | this._callback = callback; 343 | this.writeSerialPort(command); 344 | } 345 | 346 | start(callback) { 347 | const command = new Buffer([1, commandOpCodes.START]); 348 | 349 | this._callback = callback; 350 | this.writeSerialPort(command); 351 | } 352 | 353 | stop(callback) { 354 | const command = new Buffer([1, commandOpCodes.STOP]); 355 | 356 | this._callback = callback; 357 | this.writeSerialPort(command); 358 | } 359 | 360 | valueSet(handle, data, callback) { 361 | const buf =[3 + data.length, commandOpCodes.VALUE_SET, this._byte(handle, 0), this._byte(handle, 1)]; 362 | const command = new Buffer(buf.concat(Array.from(data).reverse())); 363 | 364 | this._callback = callback; 365 | this.writeSerialPort(command); 366 | } 367 | 368 | valueGet(handle, callback) { 369 | const command = new Buffer([3, commandOpCodes.VALUE_GET, this._byte(handle, 0), this._byte(handle, 1)]); 370 | 371 | this._callback = callback; 372 | this.writeSerialPort(command); 373 | } 374 | 375 | valueEnable(handle, callback) { 376 | const command = new Buffer([3, commandOpCodes.VALUE_ENABLE, this._byte(handle, 0), this._byte(handle, 1)]); 377 | 378 | this._callback = callback; 379 | this.writeSerialPort(command); 380 | } 381 | 382 | valueDisable(handle, callback) { 383 | const command = new Buffer([3, commandOpCodes.VALUE_DISABLE, this._byte(handle, 0), this._byte(handle, 1)]); 384 | 385 | this._callback = callback; 386 | this.writeSerialPort(command); 387 | } 388 | 389 | buildVersionGet(callback) { 390 | const command = new Buffer([1, commandOpCodes.BUILD_VERSION_GET]); 391 | 392 | this._callback = callback; 393 | this.writeSerialPort(command); 394 | } 395 | 396 | accessAddrGet(callback) { 397 | const command = new Buffer([1, commandOpCodes.ACCESS_ADDR_GET]); 398 | 399 | this._callback = callback; 400 | this.writeSerialPort(command); 401 | } 402 | 403 | channelGet(callback) { 404 | const command = new Buffer([1, commandOpCodes.CHANNEL_GET]); 405 | 406 | this._callback = callback; 407 | this.writeSerialPort(command); 408 | } 409 | 410 | intervalMinGet(callback) { 411 | const command = new Buffer([1, commandOpCodes.INTERVAL_MIN_GET]); 412 | 413 | this._callback = callback; 414 | this.writeSerialPort(command); 415 | } 416 | 417 | radioReset(callback) { 418 | const command = new Buffer([1, commandOpCodes.RADIO_RESET]); 419 | 420 | this._callback = callback; 421 | this.writeSerialPort(command); 422 | } 423 | 424 | flagSet(handle, value, callback) { 425 | const buf = [5, commandOpCodes.FLAG_SET]; 426 | const command = new Buffer(buf.concat([this._byte(handle, 0), this._byte(handle, 1), 0, value])); 427 | 428 | this._callback = callback; 429 | this.writeSerialPort(command); 430 | } 431 | 432 | flagGet(handle, callback) { 433 | const buf = [4, commandOpCodes.FLAG_GET]; 434 | const command = new Buffer(buf.concat([this._byte(handle, 0), this._byte(handle, 1), 0])); 435 | 436 | this._callback = callback; 437 | this.writeSerialPort(command); 438 | } 439 | 440 | txEventSet(handle, value, callback) { 441 | const buf = [5, commandOpCodes.FLAG_SET]; 442 | const command = new Buffer(buf.concat([this._byte(handle, 0), this._byte(handle, 1), 1, value])); 443 | 444 | this._callback = callback; 445 | this.writeSerialPort(command); 446 | } 447 | 448 | txEventGet(handle, callback) { 449 | const buf = [4, commandOpCodes.FLAG_GET]; 450 | const command = new Buffer(buf.concat([this._byte(handle, 0), this._byte(handle, 1), 1])); 451 | 452 | this._callback = callback; 453 | this.writeSerialPort(command); 454 | } 455 | 456 | dfuData(data, callback) { 457 | const buf = [data.length + 1, commandOpCodes.DFU_DATA]; 458 | const command = new Buffer(buf.concat(data)); // Note: This is the only command where user is responsible for formatting data as little endian. 459 | 460 | this._callback = callback; 461 | this.writeSerialPort(command); 462 | } 463 | 464 | /* Smart Mesh Serial Interface */ 465 | 466 | getVersion(callback) { 467 | const command = new Buffer([1, smartMeshCommandOpCodes.GET_VERSION]); 468 | 469 | this._callback = callback; 470 | this.writeSerialPort(command); 471 | } 472 | 473 | setKeyPair(callback) { 474 | const command = new Buffer([1, smartMeshCommandOpCodes.SET_KEYPAIR]); 475 | 476 | this._callback = callback; 477 | this.writeSerialPort(command); 478 | } 479 | 480 | setCapabilities(callback) { 481 | const command = new Buffer([1, smartMeshCommandOpCodes.SET_CAPABILITIES]); 482 | 483 | this._callback = callback; 484 | this.writeSerialPort(command); 485 | } 486 | 487 | provInitContext(contextID, callback) { 488 | const command = new Buffer([2, smartMeshCommandOpCodes.SERIAL_CMD_PROV_INIT_CONTEXT, contextID]); 489 | 490 | this._callback = callback; 491 | this.writeSerialPort(command); 492 | } 493 | 494 | provStartScan(callback) { 495 | const command = new Buffer([1, smartMeshCommandOpCodes.SERIAL_CMD_PROV_SCAN_START]); 496 | 497 | this._callback = callback; 498 | this.writeSerialPort(command); 499 | } 500 | 501 | provStopScan(callback) { 502 | const command = new Buffer([1, smartMeshCommandOpCodes.SERIAL_CMD_PROV_SCAN_STOP]); 503 | 504 | this._callback = callback; 505 | this.writeSerialPort(command); 506 | } 507 | } 508 | 509 | 510 | module.exports = BLEMeshSerialInterface; 511 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016, Michael Dietz 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of ble-mesh-serial-interface-js nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ble-mesh-serial-interface-js 2 | ========= 3 | 4 | An npm package for Node.js that provides an API to control a router node in a BLE mesh network via the serial port. 5 | 6 | ## Installation 7 | 8 | `npm install ble-mesh-serial-interface-js` 9 | 10 | ## Usage 11 | 12 | ```javascript 13 | 'use strict'; 14 | 15 | const BLEMeshSerialInterface = require('./BLEMeshSerialInterface'); 16 | 17 | const MESH_ACCESS_ADDR = 0x8E89BED6; 18 | const MESH_INTERVAL_MIN_MS = 100; 19 | const MESH_CHANNEL = 38; 20 | 21 | const bleMeshSerialInterfaceAPI = new BLEMeshSerialInterface(); 22 | 23 | bleMeshSerialInterfaceAPI.openSerialPort('COM45', err => { 24 | bleMeshSerialInterfaceAPI.init(MESH_ACCESS_ADDR, MESH_INTERVAL_MIN_MS, MESH_CHANNEL, err => { 25 | if (err) { 26 | console.log(err); 27 | } 28 | console.log('device initialized'); 29 | bleMeshSerialInterfaceAPI.valueSet(0, new Buffer([0x00, 0x01, 0x02]), err => { 30 | if (err) { 31 | console.log(err); 32 | } 33 | console.log('valueSet() handle = 0, value = [0, 1, 2]'); 34 | bleMeshSerialInterfaceAPI.valueGet(0, (err, res) => { 35 | if (err) { 36 | console.log(err); 37 | } 38 | console.log('valueGet() res: ', res); 39 | bleMeshSerialInterfaceAPI.radioReset(err => { 40 | if (err) { 41 | console.log(err); 42 | } 43 | console.log('device reset'); 44 | }); 45 | }); 46 | }); 47 | }); 48 | }); 49 | 50 | ``` 51 | 52 | ```javascript 53 | 'use strict'; 54 | 55 | const BLEMeshSerialInterface = require('./BLEMeshSerialInterface'); 56 | 57 | const FIRST_COM_PORT = 'COM45'; 58 | const OPTIONAL_SECOND_COM_PORT = 'COM46'; 59 | 60 | const bleMeshSerialInterfaceAPI = new BLEMeshSerialInterface(); 61 | 62 | bleMeshSerialInterfaceAPI.openSerialPort('COM45', err => { 63 | if (err) { 64 | console.log(err); 65 | } 66 | const buf = new Buffer([0x01]); 67 | 68 | ble.echo(buf, (err, res) => { 69 | if (err) { 70 | console.log(err); 71 | } 72 | ble.openSerialPort(OPTIONAL_SECOND_COM_PORT, err => { 73 | if (err) { 74 | console.log(err); 75 | } 76 | ble.echo(buf, (err, res) => { 77 | if (err) { 78 | console.log(err); 79 | } 80 | }); 81 | }); 82 | }); 83 | }); 84 | ``` 85 | 86 | ## API 87 | 88 | TODO: Improve this. 89 | 90 | BLEMeshSerialInterface is defined in 'index.js' and it has public methods for interfacing with the ble mesh device and opening/closing/writing the serial port. It also emits events on specific serial port events and ble mesh events. For now, see /* API Methods */ and /* nRF Open Mesh Serial Interface */ in 'index.js.' For info about the events BLEMeshSerialInterface emits, search 'index.js' for 'this.emit' 91 | 92 | * Only one serial port can be opened per instance of BLEMeshSerialInterface. If you have COM1 opened, and then call openSerialPort(COM2), COM1 will be automatically closed. 93 | * The constructor returns immediately, then to use any commands that send over serial you must explicitly call openSerialPort. 94 | 95 | ## Tests 96 | 97 | `npm test` 98 | 99 | ## Contributing 100 | 101 | In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code. 102 | -------------------------------------------------------------------------------- /mesh_listener.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const BLEMeshSerialInterface = require('./BLEMeshSerialInterface'); 4 | 5 | const MESH_ACCESS_ADDR = 0x8E89BED6; 6 | const MESH_INTERVAL_MIN_MS = 100; 7 | const MESH_CHANNEL = 38; 8 | 9 | const COM_PORT = 'COM45'; 10 | 11 | function checkError(err) { 12 | if (err) { 13 | console.log(err); 14 | } 15 | } 16 | 17 | const bleMeshSerialInterfaceAPI = new BLEMeshSerialInterface(COM_PORT, err => { 18 | 19 | bleMeshSerialInterfaceAPI.on('deviceStarted', data => { 20 | console.log('device started, response: ', data); 21 | }); 22 | 23 | bleMeshSerialInterfaceAPI.on('eventNew', data => { 24 | console.log(`eventNew, handle: ${data.slice(0, 2).toString('hex')}, data: ${data.slice(2).toString()}.`); 25 | }); 26 | 27 | bleMeshSerialInterfaceAPI.on('eventUpdate', data => { 28 | console.log(`eventUpdate, handle: ${data.slice(0, 2).toString('hex')}, data: ${data.slice(2).toString()}.`); 29 | }); 30 | 31 | bleMeshSerialInterfaceAPI.on('eventConflicting', data => { 32 | console.log(`eventConflicting, handle: ${data.slice(0, 2).toString('hex')}, data: ${data.slice(2).toString()}.`); 33 | }); 34 | 35 | bleMeshSerialInterfaceAPI.on('eventTX', data => { 36 | console.log(`eventTX, response: ${data.slice(2).toString('hex')}.`); 37 | }); 38 | 39 | bleMeshSerialInterfaceAPI.on('eventDFU', data => { 40 | console.log(`eventDFU, response: ${data.slice(2).toString('hex')}.`); 41 | }); 42 | 43 | /*bleMeshSerialInterfaceAPI.radioReset(err => { 44 | checkError(err) 45 | });*/ 46 | 47 | }); 48 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ble-mesh-serial-interface-js", 3 | "version": "0.7.0", 4 | "description": "An npm package for Node.js that provides an API to control a router node in a BLE mesh network via the serial port.", 5 | "main": "index.js", 6 | "directories": { 7 | "doc": "doc" 8 | }, 9 | "scripts": { 10 | "test": "mocha --reporter spec" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/NordicSemiconductor/ble-mesh-serial-interface-js.git" 15 | }, 16 | "keywords": [ 17 | "nRF5", 18 | "ble", 19 | "mesh", 20 | "Nordic", 21 | "Semiconductor", 22 | "bluetooth", 23 | "iot" 24 | ], 25 | "author": "Michael Dietz ", 26 | "license": "BSD-3-Clause", 27 | "bugs": { 28 | "url": "https://github.com/mjdietzx/ble-mesh-serial-interface-js/issues" 29 | }, 30 | "homepage": "https://github.com/NordicSemiconductor/ble-mesh-serial-interface-js#readme", 31 | "devDependencies": { 32 | "chai": "*", 33 | "mocha": "*" 34 | }, 35 | "dependencies": { 36 | "serialport": "^4.0.1" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /test/resources/rbc_gateway_example_serial.hex: -------------------------------------------------------------------------------- 1 | :020000040001F9 2 | :108000000040002005E0010017E00100CD810100E3 3 | :108010000000000000000000000000000000000060 4 | :108020000000000000000000000000001BE0010054 5 | :1080300000000000000000001DE001001FE0010042 6 | :1080400021E0010021E00100B9B1010021E00100BF 7 | :10805000D9F501000000000021E0010021E001004D 8 | :1080600021E0010021E0010021E0010021E0010008 9 | :1080700021E0010021E0010021E0010021E00100F8 10 | :1080800021E0010021E00100CFB6010021E0010064 11 | :1080900021E0010021E0010087F8010021E001005A 12 | :1080A00021E0010021E001000000000000000000CC 13 | :1080B00000000000000000000000000000000000C0 14 | :1080C00000F002F800F038F80CA030C80838241886 15 | :1080D0002D18A246671EAB4654465D46AC4201D100 16 | :1080E00000F02AF87E460F3E0FCCB64601263342FA 17 | :1080F00000D0FB1AA246AB4633431847187F000056 18 | :10810000387F00000023002400250026103A01D308 19 | :1081100078C1FBD8520700D330C100D50B6070473F 20 | :1081200010B5642902D107F03BFC10BD002010BD42 21 | :108130001FB51FBD10B510BD07F091FE1146FFF72A 22 | :10814000F7FF00F0A7F807F0A9FE03B4FFF7F2FF6E 23 | :1081500003BC07F0AFFE000070B505460C4616469E 24 | :1081600002E00FCC0FC5103E102EFAD2082E02D31B 25 | :1081700003CC03C5083E042E07D301CC01C5361F2E 26 | :1081800003E021782970641C6D1C761EF9D270BD45 27 | :1081900010B508E0032205231B07072424021B193E 28 | :1081A00084001A51401C8842F4D910BD01210220DC 29 | :1081B00000F0C6F90021032000F0C2F972B600E019 30 | :1081C00020BFFDE7FFF7F2FFFFF7F0FFFFF7EEFF3D 31 | :1081D00010B50446204600F0FEFA204600F080F973 32 | :1081E00010BD10B504462078030007F087FE0B0988 33 | :1081F000070814131B22292728172A0000BF00BFD5 34 | :10820000A088012800DD1DE0A2681178207900F027 35 | :1082100097F917E016E000F0ECF813E0207905F08C 36 | :1082200044FB0FE0207909229203611D05F0E9FA71 37 | :1082300008E02079611D05F0FCFA03E000BF01E0D1 38 | :1082400000E000BF00BF10BD10B518211520FFF7DA 39 | :108250009FFF002007E00146153101228A403F4B75 40 | :108260009A6000BF401C0428F5D320210020FFF7AE 41 | :108270008FFF0321112000F05FF80321122000F08E 42 | :108280005BF80321132000F057F80321142000F0BD 43 | :1082900053F810BD88B0FFF7D7FF00BF0023482276 44 | :1082A0002F49052007F0A7FA044600BF2546002DF8 45 | :1082B00005D000BF2BA2C3212846FFF785FF00BFD2 46 | :1082C00000BF2B4807F0CDFA2A4807F0D3FA02F096 47 | :1082D00043FE02F047FE2EE011241FE0204600F08E 48 | :1082E00035F8002819D100BF204600F02FF80028EB 49 | :1082F000FAD0601CC507ED0F12380221084046086D 50 | :10830000009530460122694600F0F8F9002803D1B3 51 | :10831000E9B2F0B200F014F900BF641C142CDDD9EE 52 | :1083200001A800F09EFA002805D101A8FFF759FF27 53 | :1083300001A800F0BEFACFE710B58A0005231B079D 54 | :10834000072424021B1984001A5110BD014603485A 55 | :108350000069C840C007C00F70470000000500500A 56 | :108360007C2100202E2E5C6D61696E2E6300000062 57 | :10837000D1810100EF87010010B504462088502804 58 | :108380000BD0512802D0522808D100E007E0A08885 59 | :1083900000231A461946A9DF01E000E000BF00BF34 60 | :1083A00010BD70B5044620881038030007F0A6FD04 61 | :1083B0000906071E0A1E1E1E1D1C1E0017E053483C 62 | :1083C00073DF14E000BFA0880023514A19467FDF05 63 | :1083D0000546002D06D000BF4EA272212846FFF7A9 64 | :1083E000F3FE00BF00BF02E001E000E000BF00BFFD 65 | :1083F00070BD70B596B00020159010A9087414A82F 66 | :1084000060DF0446002C0DD0082C0BD000BF2646A0 67 | :10841000002E06D000BF3FA28F213046FFF7D4FECA 68 | :1084200000BF00BF062530213F4807F0C4FB3E488F 69 | :10843000C57002203C4908703C480068139011A8A0 70 | :1084400071DF044600BF2646002E06D000BF31A2D1 71 | :108450009F213046FFF7B8FE00BF00BF11A840794A 72 | :10846000000211A989790843024631A101A807F049 73 | :108470004DFA01A807F01EFB86B2324601A913A8E7 74 | :108480007CDF044600BF2646002E06D000BF21A296 75 | :10849000A6213046FFF798FE00BF00BF002122480A 76 | :1084A00006F026FF044600BF2646002E06D000BF79 77 | :1084B00018A2AA213046FFF787FE00BF00BF13486D 78 | :1084C00073DF044600BF2646002E06D000BF11A26F 79 | :1084D000AE213046FFF778FE00BF00BF16B070BD7A 80 | :1084E00010B504462088F0210840102802D05028FA 81 | :1084F00008D103E02046FFF754FF04E02046FFF7D1 82 | :108500003BFF00E000BF00BF10BD000000200020C6 83 | :10851000182000202E2E5C6E72665F6164765F63A9 84 | :108520006F6E6E2E63000000C421002030FF01003A 85 | :108530007262635F6D65736820232564000000002C 86 | :10854000002906D10246153201239340044A936064 87 | :1085500005E00246153201239340014AD36070477B 88 | :10856000000500500FB4FEB50021029102A812DFF1 89 | :108570006846007A002804D10220FEBC08BC04B082 90 | :108580001847DE480078002801D00820F5E70A984F 91 | :10859000052803D3DA490A98884201D90720ECE775 92 | :1085A00004F027FE03F0A9F803F032FD08AD2979A5 93 | :1085B000089802F0C6F82B7C2A797D26F6000A9DE1 94 | :1085C00075432846089903F08DFA0446002C01D023 95 | :1085D0002046D2E70020019069460870684660DFB7 96 | :1085E0000446002C03D0082C01D02046C5E708AB78 97 | :1085F00019790A9A089801F04AFE0446002C01D025 98 | :108600002046BAE70B9801F0C1FABE490898086005 99 | :1086100008A80079BC490870BC490A980860012084 100 | :10862000B64908700820BA498860BA4808601C201A 101 | :10863000486000204861084602F008FF01F064FB32 102 | :1086400004F091FF99E7AD480078704710B5AB484A 103 | :108650000078022801D0082010BD01F055FB012050 104 | :10866000A64908700020F7E710B5A4480078012853 105 | :1086700001D0082010BD01F00EFB02209F490870B8 106 | :108680000020F7E710B50446A348844201DD10201E 107 | :1086900010BD204603F036FCFAE710B504469E48AC 108 | :1086A000844201DD102010BD204603F040FCFAE7B3 109 | :1086B00070B504460D4691480078002801D1082085 110 | :1086C00070BD9548844201DD1020F9E72946204617 111 | :1086D00003F067FCF4E770B504460D468748007860 112 | :1086E000002801D1082070BD8B48844201DD102094 113 | :1086F000F9E72946204603F0D1FBF4E770B50546BB 114 | :108700000E4614467D480078002801D1082070BD2F 115 | :108710008148854201DD1020F9E7E2B23146284662 116 | :1087200001F0E5FDE2B23146284603F044FBEEE7F6 117 | :1087300070B504460D4616467748844201DD102088 118 | :1087400070BD32462946204603F06EFBF8E701462D 119 | :108750006A480078002801D10820704769480068FD 120 | :1087600008600020F9E7014664480078002801D13C 121 | :10877000082070476448007808700020F9E7014637 122 | :108780005E480078002801D1082070475F480068E3 123 | :1087900008600020F9E770B504460D465E48844243 124 | :1087A00001DD102070BD2946204603F010FCF9E7DA 125 | :1087B00070B504460D465848844201DD102070BD56 126 | :1087C0002946204603F084FBF9E710B5044620460D 127 | :1087D00003F0B7F910BD10B50446484800780028EA 128 | :1087E00000D110BD204601F0A4FD00BFF9E710B58F 129 | :1087F0000446204601F08BF810BD70B504463F4892 130 | :108800000078002801D1082070BD002C01D10E2075 131 | :10881000FAE721463E4802F02AFE0546002D1ED109 132 | :10882000A06800281BD02078002807D0012806D097 133 | :10883000022802D0042810D108E000BF00BFA068C1 134 | :10884000002802D0A06803F029FC07E0A0680028F7 135 | :1088500002D0A06803F022FC00E000BF00BF284661 136 | :10886000D2E710B5044625480078002801D1082039 137 | :1088700010BD2146264802F02EFE002801D005201A 138 | :10888000F6E70020F4E710B504461C4800780028FD 139 | :1088900001D1082010BD002C01D10E20FAE721469D 140 | :1088A0001B4802F081FE002801D00520F2E70020DD 141 | :1088B000F0E710B504462078002806D0012806D03D 142 | :1088C000022803D0042810D108E000BF00BFA06830 143 | :1088D000002802D0A06803F00EFC07E0A068002882 144 | :1088E00002D0A06803F007FC00E000BF00BF10BD8D 145 | :1088F00010B50446204601F0FDFF10BD20200020E9 146 | :1089000060EA000024200020282000202C200020E5 147 | :10891000F42100200C220020EFFF000070B5044677 148 | :108920000D4601221207126991B201221207126943 149 | :1089300092B25219501E07F059F9C6B200201FE03A 150 | :1089400002212D4A516000BF2C4909680029FBD043 151 | :1089500029498C6000BF294909680029FBD0002102 152 | :10896000254A516000BF254909680029FBD0012133 153 | :10897000090709690904890C89000C19411CC8B24E 154 | :10898000B042DDDB70BDFFB500240022039B9B08D5 155 | :108990009B00181800232AE00D78ED431543EAB236 156 | :1089A0000E782546671CFCB2154F7E55491C042CD9 157 | :1089B0001CD10024002A17D001250F4E756000BF7E 158 | :1089C0000E4D2D68002DFBD00D4D2D68056000BFAC 159 | :1089D0000A4D2D68002DFBD00025074E756000BFA5 160 | :1089E000064D2D68002DFBD00022001D5B1C029D52 161 | :1089F000AB42D1D3FFBD000000E5014000E40140DF 162 | :108A00003020002001460878012805D1C868C01C24 163 | :108A100080083022504370470878022808D101228C 164 | :108A2000920288688018401E800AF84A5043F2E794 165 | :108A30000878002800D1EEE70020C043EBE710B52E 166 | :108A400004460120F24988602078022808D1A168F4 167 | :108A50006068FFF763FF00BFA0680028FCD004E057 168 | :108A60000023201D07C8FFF78EFF0120E849C860DA 169 | :108A700010BDF7B584B004460E46E649306888421A 170 | :108A800001D2306800E0E34807463846FF38F53841 171 | :108A9000302107F0ABF88500A068A84200D2A56895 172 | :108AA00006980560002D03D0FF20F530874201D2E3 173 | :108AB00007B0F0BD01206946087020680190616828 174 | :108AC000029103956846FFF7BAFFA068401BA060BB 175 | :108AD0006068401960602068401920606846FFF7B0 176 | :108AE00091FF3168081A306000BFE1E7F7B584B044 177 | :108AF00004460E46C7493068884201D2306800E01B 178 | :108B0000C44807463846FF38F538C04907F06EF8C4 179 | :108B100085026068A84200D2656806980560002D4D 180 | :108B200003D0FF20F530874201D207B0F0BD02200C 181 | :108B3000694608702068019002956846FFF77FFF3C 182 | :108B40006068401B60602068401920606846FFF73D 183 | :108B500059FF3168081A306000BFE6E710B50446D7 184 | :108B600021460120AC4A12689047AC480068401C7E 185 | :108B7000AA490860AA4802F023FD00280AD0A748A5 186 | :108B80000068A8490968884204D100210320A24A4C 187 | :108B90001268904710BD10B50446214602209E4A37 188 | :108BA000126890479D480068401C9C4908609C489A 189 | :108BB00002F006FD00280AD0984800689949096823 190 | :108BC000884204D100210320934A1268904710BDC7 191 | :108BD00000B585B093480068002803D0924800781B 192 | :108BE000002802D1012005B000BD022069460870AE 193 | :108BF0008D480078022805D18C4801908C48016886 194 | :108C0000029104E08B48019089480168029168460E 195 | :108C100002F09DFD002805D0012040037C49C8607A 196 | :108C20000020E0E70120DEE710B57F497C4802F034 197 | :108C300052FC002808D000207B4908700120400326 198 | :108C40007349C860002010BD00BF77480078002835 199 | :108C500001D0012000E000200446002C05D100BF17 200 | :108C600075A2F921FFF7B0FA00BF00BF6D48006898 201 | :108C7000401C6C4908606C480078012804D16A489F 202 | :108C800080686B49086003E067484068684908608D 203 | :108C90000120D8E710B504465F4804606F4860497A 204 | :108CA00008601020486008208860084602F0CEFB6B 205 | :108CB00000205D49087010BD7FB504460D4600BF19 206 | :108CC000002C01D0012000E000200646002E06D135 207 | :108CD00000BF59A2FF211831FFF776FA00BF00BF8D 208 | :108CE00000BF002D01D0012000E000200646002E2C 209 | :108CF00006D100BF50A2FF211931FFF765FA00BF6E 210 | :108D000000BF68460470284607C801AB07C3694620 211 | :108D1000434802F0ACFB04B070BD10B5404802F00F 212 | :108D20000BFC0821081A10BD10B53D4802F048FCA4 213 | :108D3000002803D03C480078002801D0012010BD55 214 | :108D40000020FCE701B582B0012040033049886073 215 | :108D500048E043480078002804D0012040032C4913 216 | :108D6000C8600EBD3048FFF74DFE002811D1FFF757 217 | :108D70002FFF002804D1012040032549C860F0E7F7 218 | :108D8000FFF752FF002804D1012040032049C860AA 219 | :108D9000E7E70020019024480078022806D101AAC4 220 | :108DA00002A92148001DFFF7A1FE09E01E48007836 221 | :108DB000012805D101AA02A91B48001DFFF759FE91 222 | :108DC000FF21F5310298884202D90198002804D188 223 | :108DD000012040030E49C860C3E70298FF38F53808 224 | :108DE000029000BFB5E7EFF31082D107C90F72B64A 225 | :108DF0004200521E1B4B1B68D2181A4B1A601A46AF 226 | :108E00001268002A30D001222FE000002256000014 227 | :108E10000005005050C300003420002044200020F2 228 | :108E2000EC2200204020002084230020978B0100AA 229 | :108E3000382000205D8B01002E2E5C2E2E5C2E2E05 230 | :108E40005C7262635F6D6573685C7372635C6D65B1 231 | :108E500073685F666C6173682E63000004230020F2 232 | :108E60003C200020482000200022034B1A700029DB 233 | :108E700000D162B6704700003C2000200020D44999 234 | :108E80000860401ED34988600120D3490861022050 235 | :108E9000D249087000BF00BF70477CB5D04802F0CF 236 | :108EA0004BFB044622E06946CD4802F07DFB0028DA 237 | :108EB0001AD168464079022816D10021C84802F02C 238 | :108EC0000AFBFFF7DBFF00BFC64800690028FBD1A3 239 | :108ED000C549C86064230022D2430021C34D0098D5 240 | :108EE0002D68A847641E00E002E000BF012CDAD81C 241 | :108EF00000BF7CBD0EB50A2805DC4100091DB94A3A 242 | :108F0000403A916015E0242805DC4100891DB54AEE 243 | :108F1000403A91600DE0B64B0ECB02930192009166 244 | :108F20000146253989006A465158AE4A403A916057 245 | :108F300000BF4106490EAB4A51610EBD10B5044653 246 | :108F40001320A3490860A079FFF7D4FFA549403951 247 | :108F50002068486008209F4948600020A249C860F6 248 | :108F6000A4480068000E9F4940398862A148006803 249 | :108F70000002000A00020862607900280DD100BFDB 250 | :108F800000BF2079C86201209349086093490870A6 251 | :108F9000E07994494039C86015E000BF00BF9548AA 252 | :108FA00000689549884204D003208E4940390863FF 253 | :108FB00003E001208B49403908630120864948605D 254 | :108FC00000208649087010BD70B504460D4616464F 255 | :108FD00000208A49C8630120C863002081494039C4 256 | :108FE000C860032008610220886025207D4948610F 257 | :108FF0008E207C49403948628148C8617D480068BC 258 | :10900000000E88627B4800680002000A00020862C5 259 | :109010000020C862012008637A4848617A48886164 260 | :109020007A488863FF20043048637948C8639420F5 261 | :109030006C4948606948007803280BD108206849CA 262 | :10904000886074480860082048600020486108462D 263 | :1090500002F0FCF902206149087000206249C860F2 264 | :109060000120012181406C4A116000BF00BF012135 265 | :1090700081406A4A116000BF694804605B4805602E 266 | :1090800068480660564802F09BFA002803D06448FE 267 | :109090000068804706E000F034FE002802D001207E 268 | :1090A00000F08DF870BD53490860704770B50446F4 269 | :1090B000002C01D10E2070BD6079002804D12079E8 270 | :1090C000012801DD1020F6E72146454802F0CFF9DE 271 | :1090D000002801D00420EEE7EFF31080C507ED0F64 272 | :1090E00072B600F00EFE002802D0012000F067F8F2 273 | :1090F000002D00D162B60020DDE7FEB53A48C06819 274 | :10910000002843D048480068002801D0012000E032 275 | :10911000002002904448C56864263348C06900288E 276 | :1091200005D000203049C8612E488068C6B20020B2 277 | :109130002D49C86069462A4802F0CDF9044600BFAF 278 | :109140002746002F07D000BF38A2FF2148313846FC 279 | :10915000FFF73AF800BF00BF68464079012803D006 280 | :1091600068464079022807D133462A461F4F0299A4 281 | :1091700000983F68B84703E02A4900980968884783 282 | :1091800000BF00BF02201549087001E0FFF785FE0F 283 | :1091900012480078022803D01048007803280DD127 284 | :1091A00001A90F4802F000FA002803D101A8FFF737 285 | :1091B000C5FE02E01A480068804700BFFEBDC20637 286 | :1091C000D20E01219140144A803A1160704700008C 287 | :1091D0000012004000130040001000404C2000200E 288 | :1091E000942300204015004000110040542000202E 289 | :1091F00034FF01005C200020D6BE898EC01F0040D5 290 | :1092000000D6BE8906010200250003025B060000AD 291 | :1092100055555500AC23002080E200E000E100E05D 292 | :109220005020002058200020001400402E2E5C2EDC 293 | :109230002E5C2E2E5C7262635F6D6573685C737268 294 | :10924000635C726164696F5F636F6E74726F6C2EC2 295 | :109250006300000010B50023F94A84001351024650 296 | :10926000103201239340F74A5360F74A15239B01BC 297 | :10927000D2188300D15010BD10B500F097FA002429 298 | :10928000F248007800280DD00021ED48C16001218E 299 | :10929000ED48C164152189014018C068EC4909688E 300 | :1092A000441801E0EB48046800F088FA204610BD3D 301 | :1092B00070B586B000248EE0E148A1004058002837 302 | :1092C0007ED00021DE48A200815000BF0120A040D6 303 | :1092D000E149097808400646002E05D100BFDFA20B 304 | :1092E0006621FEF771FF00BF00BF0120A040DA49F0 305 | :1092F00009788143D848017020461030012181400F 306 | :10930000D0488160FFF7B8FF0546DC48005D0221C8 307 | :10931000084000281DD0A000D94908580321C903DE 308 | :10932000884206D3A000D64908580121490788423F 309 | :1093300009D900BF102600BFC8A26D211020FEF77A 310 | :1093400043FF00BF00BFA000CD4A11582846884700 311 | :109350003FE0002069460871A000C9490858032170 312 | :10936000C903884206D3A000C5490858012149070E 313 | :10937000884209D900BF102600BFB8A2742110206E 314 | :10938000FEF722FF00BF00BFA000BD4908580290B1 315 | :10939000039501A802F0DBF9002819D0A000B94913 316 | :1093A0000858801DA100B74A5050A74A15239B01B9 317 | :1093B000D218A300D258911DE0B2FFF74BFF00E096 318 | :1093C00008E00120A040A44909780843A249087098 319 | :1093D00000BF00BF641C032C00D26DE706B070BD57 320 | :1093E000F8B504460D4617461E46032C01DB072040 321 | :1093F000F8BDB007800FB04201D00A20F8E700F0B6 322 | :10940000D5F9A0009E490F50A0009E490D509B48E1 323 | :1094100006550020A1009C4A50500120A0408E49D2 324 | :10942000097808438C49087088480078002810D0D3 325 | :1094300087480068281A954A904203D984480068F2 326 | :10944000401B02E082480068281A01462046FFF7C8 327 | :1094500001FF00F0B3F90020CAE7FFB581B0044670 328 | :109460000D461E460A9F032C02DB072005B0F0BD07 329 | :10947000B807800FB84201D00A20F7E700F096F94C 330 | :10948000A1007F4A03985050A0007E490D50A000D3 331 | :109490007D490E500120A0406F49097808436E496C 332 | :1094A0000870764807556948007800282AD068482F 333 | :1094B0000068281A754A904203D965480068401B25 334 | :1094C00002E063480068281A01462046FFF7C2FE02 335 | :1094D0005B48A10041186E485122120182182046B3 336 | :1094E0000830C00011506A48512109014118204636 337 | :1094F0000830C0000818466020460830012181402D 338 | :109500006448416000F05AF90020AFE7F8B504461E 339 | :109510000F4616461D46032C01DB0720F8BDE80761 340 | :10952000C00FA84201D00A20F8E700F03FF9A000E0 341 | :1095300054490F50A00054490E5050480555434817 342 | :109540000078002819D03E48A10041185048512207 343 | :109550001201821820460830C00011504C48512199 344 | :109560000901411820460830C0000818466020460E 345 | :109570000830012181404748416000F01FF9002078 346 | :10958000CCE710B50446032C01DB072010BDA0007A 347 | :109590003D490858002806D00120A0402E490978EE 348 | :1095A0000840002801D10520F0E700F0FFF8032C67 349 | :1095B00019DA0120A0402849097881432648017022 350 | :1095C00000202E4908552148007800280BD020465D 351 | :1095D0001030012181401B48816020460830012164 352 | :1095E00081402C48816000F0E9F80020CEE730B5DA 353 | :1095F00085B005460024A6E0A00022490858144979 354 | :109600000968401A2149884206D9A0001D49085816 355 | :109610000F490968081A05E0A0001A4908580C49C2 356 | :109620000968401A29467831094A1268891A174A86 357 | :10963000914231D906490968491B783131E000006F 358 | :109640004081004000830040008000406C200020EA 359 | :109650006420002068200020602000202E2E5C2E38 360 | :109660002E5C2E2E5C7262635F6D6573685C737234 361 | :10967000635C74696D65722E6300000061200020D8 362 | :10968000EC23002004240020F8230020FFFFFF7FAC 363 | :1096900000F0014000F50140294678314A4A12683D 364 | :1096A000891A884233D20120A040484909780840ED 365 | :1096B00000281ED00120A040444909788143434836 366 | :1096C00001704348005D02210840002805D0A00039 367 | :1096D000404A1158284688470BE000206946087028 368 | :1096E000A0003C49085801900295684602F02FF806 369 | :1096F00000BFA00038490858002823D00120A1004D 370 | :10970000354A515808600020A10050501AE001204D 371 | :10971000A0402E4909780840002813D0A2002F4B02 372 | :109720009A58521B2E4B9A4204D9A2002B4B9A589E 373 | :10973000AA1A03E0A200294B9A58521B1146E0B224 374 | :10974000FFF788FD641C032C00D255E70820012197 375 | :109750008140244A116000BF1B4805600120224956 376 | :10976000087005B030BD10B50146002016E0184A5B 377 | :10977000125CD207D20F002A0FD001228240134B75 378 | :109780001B789343114A13700022114B1A54830023 379 | :10979000104CE2508300104CE250401C0328E6D3EA 380 | :1097A000124801600020104A107010BDEFF31080C5 381 | :1097B000C007C00F72B60E49086070470C480068B9 382 | :1097C000002800D162B6704764200020602000208D 383 | :1097D00061200020EC230020F82300200424002036 384 | :1097E000FFFFFF7F00E100E06C20002068200020E8 385 | :1097F0007020002010B5F8490968F84A12685143F2 386 | :109800000846F74906F0F2F97D21C900401810BD5D 387 | :1098100010B50446F3480078002807D0F248846069 388 | :109820000320F2490870F048486001E0EE4850DF3C 389 | :10983000E948046010BDEB49097800290DD0E649DC 390 | :1098400009680918EA4A914202D9E3490968501A9D 391 | :109850000121E64A1170114648607047F0B585B0A5 392 | :10986000E44844680025E4480068002801D1E34842 393 | :1098700030C0E24903C92A46201A8A410AD2DF4889 394 | :10988000DF49036842680020C91A90410E19074653 395 | :109890006F4105E02846D94A06CA661A9041074634 396 | :1098A000CF4900206A4683C2039630463946009B62 397 | :1098B000019A06F013F84904C00B0843D14909681E 398 | :1098C0004018D0490860CD4830C005B0F0BDCE4842 399 | :1098D0000078002800D17047BF480068C94909686E 400 | :1098E0004018F8E710B5FFF7C9FAFFF7F0FF044694 401 | :1098F000FFF739FF0020C4490870BA490870C3490E 402 | :1099000008700420C249C8608020C86010BD70B5CE 403 | :109910000446201F030006F0F1FA050D1C11040C8B 404 | :109920002000BC480078012802D0BB48FFF770FF38 405 | :1099300014E013E0B948FFF76BFF0FE000BF00250C 406 | :1099400000BFB7A2D0210020FEF73EFC00BF00BF41 407 | :1099500004E0B148FFF75CFF00E000BF00BF70BD4E 408 | :109960000121AA4A1170704710B5A7480078002855 409 | :1099700000D110BDFFF780FC97490968A14A126821 410 | :109980008918081AAF49884208D9FFF775FC92492F 411 | :1099900009689C4A12688918401AEAE7FFF76CFCCC 412 | :1099A0008D490968974A12688918081AE1E79548AD 413 | :1099B0000068704770B50446802095498860012092 414 | :1099C0008849087093480078012802D0022814D1F1 415 | :1099D00009E0022085490870002087490860FFF7E8 416 | :1099E00081FF824870BD8C48FFF712FFFFF77AFFB6 417 | :1099F0000020884908707D48F4E700BF00BF0020C0 418 | :109A00007A490870230006F079FA05043D3A81404E 419 | :109A1000910004207E49886001207B490870002065 420 | :109A20007A49087088490860FFF718FF01F0BBFE0B 421 | :109A300074480068FFF7DBFD00F08EFE764883492E 422 | :109A40000860FFF7B4FF644909684618FFF7D2FEC3 423 | :109A5000351A03237E4A29460020FFF7C1FC7B48C4 424 | :109A60000068FFF7E8FE64480068401C624908602F 425 | :109A7000002803D108460068401C086062E0FFF738 426 | :109A80003CFB5FE0FFF714FC5CE053480068714961 427 | :109A9000096840185049086000206E4908606A480B 428 | :109AA0000068401C684908600020FFF76AFDFFF766 429 | :109AB0007EFF494909684618FFF79CFE351A0323C3 430 | :109AC000634A29460020FFF78BFC002047490870B5 431 | :109AD0004948006801280CD13F4800685B49096883 432 | :109AE00040184D49884210D258480068FFF7A3FE3D 433 | :109AF0000BE0394800685549096840183C498842DC 434 | :109B000003D252480068FFF796FE1BE04F480068FA 435 | :109B100040084E490860084600687D21C900884217 436 | :109B200003D94A480068FFF786FE0BE000BF002516 437 | :109B300000BF3BA2FF214F310020FEF745FB00BFD5 438 | :109B400000BF00BF00BF31480078002805D0324870 439 | :109B5000FFF75EFEFFF7C6FE10E0244800780128FC 440 | :109B600004D1224840683B49086007E0FFF7FCFE4B 441 | :109B70000546FFF7E7F8002036490860002019493C 442 | :109B8000087080202249C86018482BE700B50146BC 443 | :109B900031480078002801D0082000BD0B0006F0F5 444 | :109BA000ADF9096A5D120A066662160E6A00642043 445 | :109BB0000A4A106063E09620084A10605FE01420B3 446 | :109BC000064A10605BE0FA20044A106057E01E204D 447 | :109BD000024A106053E0000090200020A4200020E2 448 | :109BE00040420F009C200020782000208820002088 449 | :109BF000A086010000B50040A8200020B020002071 450 | :109C0000FFFFFF00942000209D2000209F200020C7 451 | :109C100000050050A0200020102700007017000051 452 | :109C20002E2E5C2E2E5C2E2E5C7262635F6D657331 453 | :109C3000685C7372635C74696D65736C6F742E63BA 454 | :109C400000000000FFFFFF7FBC20002098200020C4 455 | :109C500061990100B82000209E200020FF20F530EF 456 | :109C60003C4A10600BE032203A4A106007E04B207B 457 | :109C7000384A106003E0FA20364A106000BF00BF87 458 | :109C80000020354A10700120344A10703448354A9B 459 | :109C90001060002081E770B500BF4FDF0546002D42 460 | :109CA00007D000BF304AFF219B312846FEF78CFACF 461 | :109CB00000BF00BF01202D490870EFF31080C407DA 462 | :109CC000E40F72B62A480078002802D0012000F084 463 | :109CD00039F8002C00D162B670BD10B502202349BE 464 | :109CE0000870EFF31080C407E40F72B620480078C4 465 | :109CF000002802D0012000F025F8002C00D162B627 466 | :109D000010BD1B480078704710B500BF19484EDFE2 467 | :109D10000446002C07D000BF134AFF21B93120466A 468 | :109D2000FEF752FA00BF00BF002010490870FFF78D 469 | :109D3000E8FF002801D0082010BD0948FFF768FDA2 470 | :109D40000020F9E7C206D20E012191400A4A1160B3 471 | :109D500070470000A42000209C2000209E200020AE 472 | :109D60001027000090200020209C0100A02000204F 473 | :109D70009D200020B599010000E200E00146087B2B 474 | :109D8000FF2801D0012070470020FCE770B5044691 475 | :109D90002046FFF7F3FF00280ED000202073201D7F 476 | :109DA00005F00BFF06462046083005F006FF351883 477 | :109DB000211D284605F012FF70BDFEB504460D4674 478 | :109DC0007A480068281A7A49884201D97748056894 479 | :109DD00076480560774802F0D9FA019020460830AD 480 | :109DE00005F0EBFE4608201D05F0E7FE8719314619 481 | :109DF000019805F0FBFE78182146009005F0EEFE74 482 | :109E0000FEBD70B504460D46201D05F0D6FE281A8D 483 | :109E1000674988422FD82046FFF7B0FF00282AD094 484 | :109E20002046083005F0C9FE63490968634A126894 485 | :109E3000514388420AD22046083005F0BEFE460053 486 | :109E400021460831304605F0C9FE09E05A49096843 487 | :109E50005A4A1268514308462146083105F0BEFEB1 488 | :109E6000002020732046083005F0A7FE4619211D6A 489 | :109E7000304605F0B3FE70BD70B506460C4615467B 490 | :109E80004E4806604C4804604D480570494802F051 491 | :109E9000BDFA70BD70B504460D462046FFF76EFF53 492 | :109EA000002812D008204749886000BF00BF082062 493 | :109EB0004449C86029462046FFF7A3FF207B401C89 494 | :109EC000FF2802D0207B401C207370BD70B5044673 495 | :109ED0000D46211D284605F081FE214608313748F0 496 | :109EE000006805F07BFE29462046FFF766FF204606 497 | :109EF000FFF74CFF70BD70B504460D461020314988 498 | :109F0000886000BF00BF10202E49C860204608307E 499 | :109F100005F053FE29490968884203D9294620469D 500 | :109F2000FFF7D4FF70BD70B505460C46281D05F03F 501 | :109F300044FE001B1E49884203D9291D204605F016 502 | :109F40004DFE21462846FFF738FF70BD70B5054627 503 | :109F50000C4616462846FFF711FF002801D1207055 504 | :109F600013E0287B16490978884201DA012000E0D5 505 | :109F70000020207031462846FFF743FF2078002854 506 | :109F800003D131462846FFF718FF70BDFF2101734A 507 | :109F9000704710B50446207BFF2805D100202073B0 508 | :109FA00000212046FFF792FF10BD0000CC200020CA 509 | :109FB000FFFFFF7F10240020C4200020C0200020CD 510 | :109FC000C82000200005005010B586B00446FE48A9 511 | :109FD0000088FE49884202D1FD4806B010BDFD4808 512 | :109FE0008078002802D1FA48401EF6E705A862DF13 513 | :109FF000002801D01120F0E76846007D002802D13A 514 | :10A00000F348801CE9E7F348818968468180012193 515 | :10A01000817100210181207802280FD004DC002802 516 | :10A0200007D0012811D108E011280BD012280CD13B 517 | :10A0300005E0E078001D00900AE000BF00BF0520A9 518 | :10A04000009005E00320009002E00120009000BF96 519 | :10A0500000BF68460390049401A9DB480088A6DF8E 520 | :10A06000BBE730B587B004460D4611216846017044 521 | :10A0700044708570FFF7A8FF07B030BD30B593B0CE 522 | :10A0800004460020129000BF10A8007A01090901BF 523 | :10A09000491C10A80172007AF0218843103010A9E1 524 | :10A0A000087200BF00BF10A8407A01090901491CCD 525 | :10A0B00010A84172407AF0218843103010A94872EC 526 | :10A0C00000BF10A8807A06218843811C10A88172E5 527 | :10A0D0001C210BA805F06FFD08A8007B0221884316 528 | :10A0E000811C08A80173007B10218843411808A82F 529 | :10A0F000017300200E9012A8109000200C900F9079 530 | :10A100000A9008A8007AF02188430146103108A877 531 | :10A110000172007A01090901491C08A80172407AFC 532 | :10A12000F02188430146103108A84172407A0109A4 533 | :10A130000901491C08A84172807A08218843014618 534 | :10A1400008A88172807A10218843014608A881728C 535 | :10A15000807A4108490008A88172807A06218843E4 536 | :10A16000811C08A881729C48017808A8817104218B 537 | :10A17000684681842068069060680790217A08A864 538 | :10A180000170142101A805F016FD0921684681819E 539 | :10A190000021C1810921018209A8019006A805902A 540 | :10A1A0000AA802908B4908880B1D01AA0BA9A2DFFF 541 | :10A1B0000546002D02D0032013B030BD0020FBE780 542 | :10A1C00010B590B01C2109A805F0F5FC08A800798D 543 | :10A1D00004218843011D08A80171007910218843DA 544 | :10A1E000411808A8017100200E900F900A900D9060 545 | :10A1F000089008A84078F02188430146103108A84B 546 | :10A200004170407801090901491C08A84170807813 547 | :10A2100006218843811C08A8817080780821884322 548 | :10A22000014608A88170807810218843014608A85B 549 | :10A230008170807841084900491C08A881706648EF 550 | :10A2400001786846817705218183002101911421DD 551 | :10A2500002A805F0B0FC012168460182002141827C 552 | :10A260001B21818208A8039007A8029001A80690EC 553 | :10A27000584908880B460C3302AA09A9A2DF0446F4 554 | :10A28000002C02D0032010B010BD0020FBE7F0B579 555 | :10A2900085B005460E461746019502976846067337 556 | :10A2A000012181704D4901804A4A69460120A0DFA1 557 | :10A2B0000446002C02D0032005B0F0BD46494848B2 558 | :10A2C00063DF0446002C01D02046F5E701A8FFF724 559 | :10A2D000D5FE0446002C01D02046EDE7FFF770FFC5 560 | :10A2E0000446002C01D02046E6E70020E4E770B5E4 561 | :10A2F00088B005460E461446172C02DD092008B02A 562 | :10A3000070BD314800883149884210D0002168462C 563 | :10A3100001714571290A817101A8C4702246314634 564 | :10A3200002A805F0E9FB01A8FFF74EFEE7E7284881 565 | :10A33000E5E7F0B589B005462888502876D1E88849 566 | :10A3400024498989884272D12C46203420780028FB 567 | :10A3500004D0012850D002286AD19FE0A178627809 568 | :10A36000080210431949884204D12078F221FFF7EE 569 | :10A3700078FEFBE0E278A378677819023943084653 570 | :10A38000211D01F018FD0646002E30D169460872E5 571 | :10A39000201D0490E17802A80173A1786278080278 572 | :10A3A000104369468881012102A8C182FEF764FF3B 573 | :10A3B000089002A8FEF721FA002813D02078F02197 574 | :10A3C000FFF74FFE12E00000D2200020FFFF000048 575 | :10A3D0000230000020240020D0200020E4FE0000F5 576 | :10A3E00040FF010020788021FFF73BFE03E020784A 577 | :10A3F000F021FFF736FEB9E0E078002802D001280E 578 | :10A4000045D11BE02279002A01D0012200E0002280 579 | :10A410001146A37866781802304301F0C2FD002887 580 | :10A4200007D02078F221FFF71CFE35E0BEE09FE068 581 | :10A4300097E020788021FFF714FE2DE02079002896 582 | :10A4400012D0A278637811021943084601F05AFD30 583 | :10A45000002804D02078F221FFF703FE1CE02078CA 584 | :10A460008021FFF7FEFD11E0A27863781102194305 585 | :10A47000084601F05CFD002804D02078F221FFF7A7 586 | :10A48000F0FD09E020788021FFF7EBFD04E0207863 587 | :10A49000F321FFF7E6FD00BF00BF67E0E07800288A 588 | :10A4A00002D0012856D131E0A17862780802104329 589 | :10A4B0004649884204D12078F221FFF7D2FD4EE0D0 590 | :10A4C00000200890A278637811021943084608A971 591 | :10A4D00001F07DFD002804D02078F121FFF7C1FDB7 592 | :10A4E0003DE0122168460171A178607809020143BC 593 | :10A4F00068464171090A8171E17801A8C17008A814 594 | :10A50000017801A80171FFF75FFD28E0A278637868 595 | :10A5100011021943084608A901F022FD002804D0C1 596 | :10A520002078F221FFF79DFD19E0122168460171A4 597 | :10A53000A17860780902014368464171090A817176 598 | :10A54000E17801A8C17008A8017801A80171FFF79E 599 | :10A550003BFD04E02078F321FFF783FD00BF00BF3F 600 | :10A5600004E02078F421FFF77CFD00BF00BF2BE062 601 | :10A57000E88817498988884209D12C462034217AF5 602 | :10A58000206800F0D0F8606801F0D5FA1CE0E98896 603 | :10A590000F48008A814217D12020405D002801D059 604 | :10A5A000012000E000200A4988700DE0288810286A 605 | :10A5B00003D1A8880749088006E02888112803D11C 606 | :10A5C0000020C0430349088009B0F0BDFFFF000030 607 | :10A5D00020240020D22000201CB5022168464171B1 608 | :10A5E000C64801796846817101F01BFD002800D141 609 | :10A5F0001CBD6846FEF75AFD002802D0009801F005 610 | :10A600007AFD00BFF4E7F0B585B004460D46164666 611 | :10A610001F46002D18D06078252815DC03206946D8 612 | :10A62000087001940296FEF727FE039068460774AF 613 | :10A6300001F08DF8002803D00120B049487102E0F4 614 | :10A64000204601F02BFD00E000BF204601F053FD45 615 | :10A6500005B0F0BD70B588B005462E46304601F015 616 | :10A66000E1FD044600200090002C27D0617922797A 617 | :10A67000090211430846694601F02AFC00281DD151 618 | :10A6800068460078002819D004206946087160796E 619 | :10A69000217900020843694608812046083003906A 620 | :10A6A0002078C01FC1B201A80173FEF7E5FD059037 621 | :10A6B00001A8FEF7A2F801A800F07FFC304601F0E7 622 | :10A6C0001AFD08B070BD10B586B0044614228C493E 623 | :10A6D00001A8FDF741FD039401A801F038F8002816 624 | :10A6E00002D1204601F0DAFC204601F004FD06B05C 625 | :10A6F00010BD10B581484079002801D1FFF76CFFEB 626 | :10A7000010BD70B586B004460E4625460220694647 627 | :10A7100008702878C01E0290281D0190684602F03B 628 | :10A72000A8FE06B070BD70B505460C46282C07DAA9 629 | :10A730007248056004712846FEF7B5FCFFF7CDFAB4 630 | :10A7400070BD70B504460D4600206E49086029466C 631 | :10A750002046FFF7E8FF70BD10B56B4A6B496C48A7 632 | :10A76000FEF732FC10BD7CB504460D460120694958 633 | :10A77000886000BF00BF01206649C86000200090CB 634 | :10A7800001902078302188432070207880218843F0 635 | :10A7900020700020A07000942978684601716978C3 636 | :10A7A000817100214171E978C17100261EE0A8780D 637 | :10A7B0000121B140084000280CD0204601F06EFC79 638 | :10A7C0006846FEF773FC002809D0204601F093FC90 639 | :10A7D00004207CBDA8783041002800D108E06846FC 640 | :10A7E0008079401CC1B268468171761C202EDED370 641 | :10A7F00000BF0020EDE7FFB58BB00646154600BF51 642 | :10A80000002E01D0012000E00020079007980028CA 643 | :10A8100006D100BF40A2FF211831FDF7D5FC00BFD3 644 | :10A8200000BF20203B49886034466078252806DD3B 645 | :10A830002020C860204601F05EFC0FB0F0BD31481A 646 | :10A840000068002823D069460E9808722046093017 647 | :10A8500003906078801FC1B2684641720622E11CF5 648 | :10A86000401C05F049F920784006C10F6846017088 649 | :10A870000C98049020780107090F6846C1710020E8 650 | :10A880000695079068461F490968884700BF062259 651 | :10A89000E11C08A8013005F02FF920784006C00F10 652 | :10A8A00008A90870204601F0BDFC0746002F10D013 653 | :10A8B00078793979000208432249884205DC294623 654 | :10A8C00020460E9A01F040F903E029463846FFF78A 655 | :10A8D00018FF204601F00FFC08484079002804D0FA 656 | :10A8E000FFF77AFE00200549487120200949C86019 657 | :10A8F00000BFA2E70349086070470000D420002091 658 | :10A9000050FF0100DC200020C7A6010007A60100BF 659 | :10A91000F3A60100000500502E2E5C2E2E5C2E2E7C 660 | :10A920005C7262635F6D6573685C7372635C7472A2 661 | :10A93000616E73706F72745F636F6E74726F6C2E82 662 | :10A9400063000000EFFF00000146072912D008DC79 663 | :10A9500000290DD0022913D0052915D0062917D1B9 664 | :10A960000CE0082908D009290CD0112910D10DE0DC 665 | :10A97000002070478520FCE78320FAE78220F8E773 666 | :10A980008620F6E78420F4E79020F2E78620F0E7BF 667 | :10A990008020EEE7F0B595B00446FAA1002003F060 668 | :10A9A00008FE2646002705E0F25DFAA1002003F02C 669 | :10A9B00000FE7F1C2078B842F6D2F9A1002003F0F7 670 | :10A9C000F8FD607876287AD012DC722878D008DC1E 671 | :10A9D000022817D00E282CD0702832D0712870D1C0 672 | :10A9E00098E073286ED074286ED07528F7D17EE079 673 | :10A9F0007738030005F082FA09FBFA65F9F8F7F6F3 674 | :10AA000065F56500822108A84175217801752078D7 675 | :10AA1000012806DD2078421EA11C0DA8023005F099 676 | :10AA20006BF8E1A1002003F0C4FD0DA800F05AFB73 677 | :10AA30008FE200F05AFCE3483EDF012044DF35DFBF 678 | :10AA400087E2842108A84175617881750321017529 679 | :10AA500020780A2804D084210DA8C170092519E0A6 680 | :10AA6000A01C05F0AAF80190A07A69460872A01D02 681 | :10AA700005F0A3F80390012004900598009001A828 682 | :10AA80000FC8FDF76FFD05462846FFF75DFF0DA9CE 683 | :10AA9000C87000BF002D0ED11C2106A805F08BF850 684 | :10AAA00003206946087606A8FDF7A7FE0746FFF7CC 685 | :10AAB0004BFF0DA9C8700DA800F014FB49E295E109 686 | :10AAC00081E035E2A5E0FFE7842108A841756178BF 687 | :10AAD000817503210175FDF7B9FD05462846FFF78D 688 | :10AAE00033FF0DA9C8700DA800F0FCFA31E28421F3 689 | :10AAF00008A841756178817503210175FDF7B4FDE2 690 | :10AB000005462846FFF720FF0DA9C8700DA800F0E4 691 | :10AB1000E9FA1EE2842108A8417561788175032154 692 | :10AB2000017505A801F07DFA002843D02078C01EE9 693 | :10AB3000C7B220781A2804D984210DA8C17009252C 694 | :10AB40000EE0E178A2780902114308463A46211D39 695 | :10AB5000FDF7D4FD05462846FFF7F6FE0DA9C8709F 696 | :10AB6000002D26D13A46211D0598093004F0C4FF76 697 | :10AB70001C2106A805F01FF80020694608760598F4 698 | :10AB80000930089006A80773E078A178000208430E 699 | :10AB900069468883FEF770FB0C9006A8FDF72DFE32 700 | :10ABA0000546059801F0A7FA2846FFF7CDFE0DA946 701 | :10ABB000C87004E01120FFF7C7FE0DA9C8700DA8EA 702 | :10ABC00000F090FAC5E1842108A84175617881758B 703 | :10ABD00003210175207803280AD084210DA8C170B3 704 | :10ABE00013E0C1E0A0E07FE063E031E07DE138E127 705 | :10ABF000E178A278090211430846FDF743FD0546B6 706 | :10AC00002846FFF7A1FE0DA9C8700DA800F06AFA4A 707 | :10AC10009FE1842108A84175617881750321017540 708 | :10AC20002078032803D084210DA8C1700CE0E178BE 709 | :10AC3000A278090211430846FDF72FFD0546284674 710 | :10AC4000FFF782FE0DA9C8700DA800F04BFA80E155 711 | :10AC5000842108A8417561788175172101752078D4 712 | :10AC6000032803D084210DA8C1701BE0E178A278ED 713 | :10AC70000902114308460DAA911DFDF759FD07462B 714 | :10AC80003846FFF761FE0DA9C870E078A178000290 715 | :10AC900008430DA9888008A8007D401DC1B208A8FE 716 | :10ACA000017500BF842008A948750DA800F01AFAA4 717 | :10ACB0004FE1842108A841756178817506210175ED 718 | :10ACC0002078012803D084210DA8C17008E000215C 719 | :10ACD0000DA8017108214171052181710021C17008 720 | :10ACE0000DA800F0FFF934E1842108A841756178CE 721 | :10ACF0008175072101752078012803D084210DA8D2 722 | :10AD0000C1700DE005A8FDF722FD05460EA90598C6 723 | :10AD100004F064FF2846FFF717FE0DA9C87000BFB6 724 | :10AD20000DA800F0DFF914E1842108A841756178CD 725 | :10AD30008175042101752078012803D084210DA894 726 | :10AD4000C1700DE005A8FDF70EFD07466846017DC0 727 | :10AD50000DA801713846FFF7F7FD0DA9C87000BFB7 728 | :10AD60000DA800F0BFF9F4E0842108A841756178CE 729 | :10AD70008175072101752078012825D084210DA82F 730 | :10AD8000C1702FE01B5B306D53657269616C20529E 731 | :10AD9000583A20001B5B306D2530327800000000EF 732 | :10ADA0001B5B306D0A0000001B5B306D4563686FF4 733 | :10ADB0002E20526573706F6E64696E672E2E2E0A98 734 | :10ADC000000000000F000F0005A8FDF7D8FC0546A5 735 | :10ADD0000EA9059804F002FF2846FFF7B5FD0DA95E 736 | :10ADE000C87000BF0DA800F07DF9B2E0842108A86A 737 | :10ADF000417561788175032101752078052803D09C 738 | :10AE000084210DA8C1702BE02079002802D00128F0 739 | :10AE10001ED10EE06279002A01D0012200E000225A 740 | :10AE20001146E278A37810021843FDF741FC05466D 741 | :10AE300010E06279002A01D0012200E000221146D0 742 | :10AE4000E278A37810021843FDF745FC054601E0BF 743 | :10AE5000072500BF00BF2846FFF776FD0DA9C87083 744 | :10AE600077E0842108A84175617881750721017513 745 | :10AE70002078042803D084210DA8C17034E000207C 746 | :10AE800005902079002802D0012814D109E0E1784A 747 | :10AE9000A27809021143084605A9FDF77CFC074684 748 | :10AEA0000EE0E178A27809021143084605A9FDF7F2 749 | :10AEB0007FFC074604E00727032008A9087500BFA8 750 | :10AEC00000BFE078A178000208430DA988802179AD 751 | :10AED0000DA881716846017D0DA8C1713846FFF744 752 | :10AEE00033FD0DA9C87000BF33E0842108A8417567 753 | :10AEF00061788175052101752078411EA01C02F042 754 | :10AF0000BDFB0546002D04D02A4644A1002003F0D5 755 | :10AF100050FBE078A178000208430DA988802846FC 756 | :10AF2000FFF712FD0DA9C8700DA800F0DBF810E0C6 757 | :10AF300045A1002003F03DFB842108A841756178FC 758 | :10AF400081750321017582210DA8C17000F0CAF836 759 | :10AF500000BF00BF15B0F0BD10B500F0CEFB00F093 760 | :10AF600065F910BD00B589B00421684601718121E1 761 | :10AF70004171022181713DDF082100980840C1081C 762 | :10AF800001A8C17000F0ACF9C1B201A8017100F0D4 763 | :10AF9000A9F8002802D1042009B000BD0020FBE779 764 | :10AFA00000B589B002E001A8FFF7F4FC01A800F0A9 765 | :10AFB000B2F90028F7D109B000BD10B588B0044639 766 | :10AFC000207800280ED0012804D0022806D00428BA 767 | :10AFD00010D10BE0B520694648700CE0B3206946FB 768 | :10AFE000487008E0B4206946487004E0B62069461D 769 | :10AFF000487000E000BF00BF207BC01CC1B26846A3 770 | :10B000000170A1884180227B01A8A16804F074FD31 771 | :10B01000684600F067F808B010BD00001B5B306D9B 772 | :10B020001B5B323B33316D424C20526573706F6E47 773 | :10B030006465642077697468206572726F7220306D 774 | :10B040007825780A000000001B5B306D556E6B6E32 775 | :10B050006F776E206576656E74210A0010B5044620 776 | :10B06000FFF79EFF10BD10B50446E249E24800F02C 777 | :10B0700032FA002817D1DF484078E0490860DD48FF 778 | :10B08000401CDF4908600020DE49C8610120DE491C 779 | :10B090008860DB4800680078DC49C861D8480068EF 780 | :10B0A000401CD749086010BD00B585B0D84800786D 781 | :10B0B000002815D1D7480078022811D00220D549A0 782 | :10B0C000087069460870D4480190002102916846D2 783 | :10B0D00000F03DFB002802D00020CE49087000BFE0 784 | :10B0E00005B000BD10B58AB00446C34804F014FF93 785 | :10B0F000002802D000200AB010BD00206946087068 786 | :10B100002078421C214600A8013004F0F5FC694675 787 | :10B11000B94800F0ACF9BF480078002801D1FFF72A 788 | :10B12000C3FF0120E7E730B589B00546BB4800689A 789 | :10B130000570BA480068401CB849086008460168B4 790 | :10B14000B7480C1A272C06D2012C33D9401E407860 791 | :10B15000401CA0422ED8B249491EB24800F087F9DF 792 | :10B1600000280FD003216846017184214171AC4849 793 | :10B17000401E817868468171862101A8C170FFF761 794 | :10B18000B1FF0AE0022069460874A7480590002133 795 | :10B19000069104A800F0DBFA00BFA24804F0BCFE50 796 | :10B1A000002804D001209B490870974948609C48BA 797 | :10B1B0009A49086009B030BD10B507E000209149F8 798 | :10B1C000886092498969C8B2FFF7ADFF8D488068F1 799 | :10B1D0000028F3D18B48C069002826D00020894977 800 | :10B1E000C861864801680068401E844A10600029D2 801 | :10B1F0000AD08348006800788449C86180480068A4 802 | :10B20000401C7F49086010E001207F49C8608148E8 803 | :10B210000078012802D000207E490870764800F0AE 804 | :10B22000CFF9002801D1FFF73FFF10BD10B5042072 805 | :10B23000714988607D480860272048600020486187 806 | :10B24000084600F003F904207649886078480860D1 807 | :10B250002720486000204861084600F0F7F80020E9 808 | :10B260006B49087003210B2000F0B9F8032000029D 809 | :10B2700070498860082000F0A9F803210A2000F036 810 | :10B28000AEF8092000F0A2F800206B49C863012045 811 | :10B29000C86309205D49C8600B2048610A20086125 812 | :10B2A00008208860012059494031C86263485749E5 813 | :10B2B00048620420086084206149486000205149A8 814 | :10B2C0008860C8610120504908600321022000F015 815 | :10B2D00046F80220012181405A4A116000BF10BD8A 816 | :10B2E00010B5504800F028F910BD10B5EFF31080EC 817 | :10B2F000C407E40F72B601204549087001E0FFF76A 818 | :10B300005BFF444800780028F9D141490870002CBF 819 | :10B3100000D162B610BD10B58AB0044669464148F6 820 | :10B3200000F0D9F8002802D000200AB010BD68460D 821 | :10B330004078002807DD68464078421C00A90131AA 822 | :10B34000204604F0D9FB33480078012805D10020BD 823 | :10B350003049087001202C4908600120E5E710B54C 824 | :10B36000002819DA384A03071B0F083B9B089B008B 825 | :10B37000D2588307DC0EFF23A3409A438B071B0E92 826 | :10B380008407E40EA3401A432F4B0407240F083C04 827 | :10B39000A408A4001A5118E02A4A03231B02D21859 828 | :10B3A00083089B00D2588307DC0EFF23A3409A43F7 829 | :10B3B0008B071B0E8407E40EA3401A43214B032482 830 | :10B3C00024021B198408A4001A5110BD0321052270 831 | :10B3D000120707231B02D2188300D150704710B503 832 | :10B3E0008A0005231B07072424021B1984001A5115 833 | :10B3F00010BD00009C2500204C240020E4200020EB 834 | :10B40000E8200020002100400020004000250040EE 835 | :10B41000EC200020E020002067B00100F020002098 836 | :10B42000C4250020342400205DB001000025002048 837 | :10B430006424002000050050C02F004000E0D70128 838 | :10B440000023004000E100E01CED00E0202100BFEF 839 | :10B450004B1E19468268DA40D207D20F002AF7D075 840 | :10B4600001228A4082600022C26002617047F8B502 841 | :10B4700004460E46002E01D10E20F8BDEFF31080D9 842 | :10B48000C507ED0F72B6A16820694018E1688842CF 843 | :10B4900004D1002D00D162B60420EEE7A168491E58 844 | :10B4A000E0680840616848432168471860690028DF 845 | :10B4B00004D0314638466269904704E03146384648 846 | :10B4C000626804F019FBE068401CE060002D00D1C8 847 | :10B4D00062B60020D1E7F8B504460D46EFF31080C0 848 | :10B4E000C607F60F72B6E1682069884204D1002EC3 849 | :10B4F00000D162B60E20F8BD002D15D0A168491EFE 850 | :10B50000206908406168484321684718606900283D 851 | :10B5100004D0394628466269904704E039462846F7 852 | :10B52000626804F0E9FA00BF2069401C2061002E27 853 | :10B5300000D162B60020DEE701460A69C868801AB9 854 | :10B540007047F8B504460D461646002D01D10E2071 855 | :10B55000F8BDEFF31080C707FF0F72B62046FFF764 856 | :10B56000EBFFB04204D8002F00D162B60E20EFE707 857 | :10B5700020698019A168491E084061684843216814 858 | :10B58000401800906069002804D06269284600993C 859 | :10B59000904704E062682846009904F0ADFA002F55 860 | :10B5A00000D162B60020D3E770B504460D460022F4 861 | :10B5B00029462046FFF7C5FF70BDC168016170478D 862 | :10B5C0000146CA680869904201D1012070470020F5 863 | :10B5D000FCE7000070B504462078030004F08EFC00 864 | :10B5E0000504401C343A59000321C90360688842AD 865 | :10B5F00004D3012149076068884209D900BF10259A 866 | :10B6000000BFABA23E211020FCF7DEFD00BF00BF53 867 | :10B610006168A06888473DE00321C90360688842EB 868 | :10B6200004D3012149076068884209D900BF102569 869 | :10B6300000BF9FA242211020FCF7C6FD00BF00BF43 870 | :10B640006168A068884725E0237C201D07C8FFF7B4 871 | :10B65000D2F81FE0E279A179A08801F08BFA19E015 872 | :10B660000321C9036068884204D301214907606847 873 | :10B67000884209D900BF102500BF8DA2512110209A 874 | :10B68000FCF7A2FD00BF00BF6268E168A0689047B8 875 | :10B6900000E000BF00BF70BD30B585B0044640205B 876 | :10B6A0008D49886069462046FFF715FF0546002D45 877 | :10B6B00008D16846FFF78EFF40208749C860012007 878 | :10B6C00005B030BD40208449C8600020F8E710B5BF 879 | :10B6D00010E000248148FFF7DFFF0443FEF711FB71 880 | :10B6E000002803D07E48FFF7D7FF0443002C00D189 881 | :10B6F00001E000BFEDE700BF10BD10B5794800784C 882 | :10B70000002800D010BD0820744988607648086081 883 | :10B7100014204860002048610846FFF797FE082083 884 | :10B720006F498860714808601420486000204861B3 885 | :10B730000846FFF78BFE122000F070F8032112205C 886 | :10B7400000F07CF801206749087000BFDAE770B5A7 887 | :10B750000446002C01D10E2070BD00262078030085 888 | :10B7600004F0CCFB0509070405060B0000BF00BF71 889 | :10B7700000BF5A4E03E05A4E01E00720ECE700BF3D 890 | :10B7800021463046FFF773FE0546002D01D02846BE 891 | :10B79000E2E7122000F04AF80020DDE710B550483B 892 | :10B7A000FFF70BFF10BD10B54C48FFF709FF00284D 893 | :10B7B00004D04B48FFF704FF002802D1122000F00C 894 | :10B7C00035F810BDEFF31080C107C90F72B64848B5 895 | :10B7D00002680068401C464B1860002A06D11220FF 896 | :10B7E00001228240434B1A6000BF00BF002900D1F4 897 | :10B7F00062B6704710B5EFF31080C407E40F72B65D 898 | :10B800003B480068401E3A490860002802D11220D7 899 | :10B8100000F004F8002C00D162B610BDC206D20EB2 900 | :10B8200001219140334A803A11607047C206D20E1E 901 | :10B83000012191402F4A80321160704710B50028D5 902 | :10B8400019DA2D4A03071B0F083B9B089B00D258AF 903 | :10B850008307DC0EFF23A3409A438B071B0E84074C 904 | :10B86000E40EA3401A43244B0407240F083CA40809 905 | :10B87000A4001A511AE01F4A803A03231B02D2186F 906 | :10B8800083089B00D2588307DC0EFF23A3409A4312 907 | :10B890008B071B0E8407E40EA3401A43154B803B15 908 | :10B8A000032424021B198408A4001A5110BD0000AF 909 | :10B8B0002E2E5C2E2E5C2E2E5C7262635F6D657385 910 | :10B8C000685C7372635C6576656E745F68616E64F4 911 | :10B8D0006C65722E6300000000050050EC2500200E 912 | :10B8E000A4260020F420002004260020BC260020EE 913 | :10B8F000F820002080E100E01CED00E00246C82AAC 914 | :10B9000008DAFD481018884201DD881A00E0FA487C 915 | :10B9100000B27047C82909DAF7480818904201DDDB 916 | :10B92000881A01E0F448C04300B2F2E7914201DB1B 917 | :10B93000881A00E0501A0346EF48834208D98A4229 918 | :10B9400003DD1046C83082B202E00846C83081B23A 919 | :10B95000881A00B2DDE770B504460D46002C05D00C 920 | :10B96000002D03D020782978884201D0012070BDB5 921 | :10B970002078C21F294608312046083004F046F8D6 922 | :10B98000002801D00120F2E70020F0E7F0B589B0EF 923 | :10B990000646FF200130D94988600720019001AA9E 924 | :10B9A00002A9304601F088FA00900098002861D181 925 | :10B9B00000245CE0A10002AA5058D149FEF7D3FE52 926 | :10B9C0000090009800284CD1A10002AA505800F025 927 | :10B9D00029FC0546002D39D0002021E069792A791B 928 | :10B9E000090211430722121A1141C907C90F002980 929 | :10B9F0000AD001214906C14A916000BF00BF012160 930 | :10BA00004906BE4AD16009E001210907BB4A91609D 931 | :10BA100000BF00BF01210907B84AD160411CC8B26C 932 | :10BA20000828DBDB00BF69792A790902114308463F 933 | :10BA3000314601F0ABFA0746002F06D000BFB1A295 934 | :10BA4000A2213846FCF7C0FB00BF09E000BF0B276E 935 | :10BA500000BFACA2A6210B20FCF7B6FB00BF00BFC5 936 | :10BA600000BFA10002AA505800F045FB641C0198D9 937 | :10BA700084429FD3FF200130A049C860304600F0C7 938 | :10BA800012F809B0F0BD10B586B004460120694631 939 | :10BA90000871A648029003940021049101A8FFF7C1 940 | :10BAA00056FE06B010BD38B50546684601F0D9F916 941 | :10BAB000044668460078002800D138BD7D20C000CB 942 | :10BAC0002818844203D22046FFF7DDFF08E0214614 943 | :10BAD000974801F0B8FB002802D02046FFF7D3FFBB 944 | :10BAE00000BFEAE7FFB581B00C4615461E46019837 945 | :10BAF00000F052FF0746002F02D0384605B0F0BDD7 946 | :10BB000000208B4908618948486000208860C8602F 947 | :10BB10008848844201D0012000E000207849087064 948 | :10BB200008464570012088700846C6700120824989 949 | :10BB300008700020E2E710B50446204600F01AFF26 950 | :10BB400010BD6F49C8707047F7B58CB007463846CE 951 | :10BB500000F068FB0446002C02D10B200FB0F0BDB2 952 | :10BB6000617922790902114308460AA900F0A4FF6D 953 | :10BB70000546E279A37912021A4311466A46108DEE 954 | :10BB8000FFF7BCFE064603A8C68238784006C10F00 955 | :10BB900003A881730622F91C0F3003F0ADFF0E9845 956 | :10BBA000404241B203A841732046083005902078F6 957 | :10BBB000C01FC1B203A80173607921790002084354 958 | :10BBC0006A4610820D980990052D4CD102206946D5 959 | :10BBD000087303A8C68261792279090211430846D5 960 | :10BBE0000AA900F00EFE0546002D04D00B9800F0C7 961 | :10BBF00082FA2846B2E7384600F08EFBE079A17958 962 | :10BC00000002084369468880029703A8FCF7F5FD07 963 | :10BC1000002821D100BF6179227909021143084629 964 | :10BC200001A900F0EEFD00900098002807D000BFA9 965 | :10BC300034A2FF2107310098FCF7C6FA00BF00BF0D 966 | :10BC40002178C91FCAB261792379090219430846CC 967 | :10BC500021460831FEF74BFB0D98FFF714FF03A8B0 968 | :10BC6000FFF7ABF9A2E0002E0BDA61792279090225 969 | :10BC7000114308460D9901F0D1F80D98FFF703FF25 970 | :10BC800094E0002E23D1002002900B98002803D0CE 971 | :10BC90000B9800F0C7FA0290029800280ED02146B7 972 | :10BCA0000298FFF758FE002808D001206946087363 973 | :10BCB00003A8FCF7A2FD03A8FFF77FF961792279B9 974 | :10BCC0000902114308460D9901F085F86EE0002045 975 | :10BCD0006946087303A8C682617922790902114373 976 | :10BCE00008460AA900F08DFD0546002D26D00B98C8 977 | :10BCF00000F001FA284631E7FF7F00000005005000 978 | :10BD0000FD2000202E2E5C2E2E5C2E2E5C72626397 979 | :10BD10005F6D6573685C7372635C76657273696F7F 980 | :10BD20006E5F68616E646C65722E63008DB9010090 981 | :10BD30005C270020D6BE898EFC200020384600F00B 982 | :10BD4000EBFAE079A17900020843694688800297FE 983 | :10BD500003A8FCF752FD002821D100BF61792279A8 984 | :10BD600009021143084601A900F04BFD009000981C 985 | :10BD7000002807D000BFA34AFF2145310098FCF7F7 986 | :10BD800023FA00BF00BF2178C91FCAB261792379A5 987 | :10BD900009021943084621460831FEF7A8FA0D9812 988 | :10BDA000FFF771FE03A8FFF708F900BF0B9800F03A 989 | :10BDB000A2F90020D2E6FEB505460E461746924887 990 | :10BDC0000078002801D10820FEBD0020019001A8C4 991 | :10BDD00000F027F9002801D10420F5E733460122BD 992 | :10BDE00029460097019800F0E4F90446002C04D09D 993 | :10BDF000019800F080F92046E6E7019800F0A1FEE6 994 | :10BE00000446002C04D1FDF737FA0090FFF73BFE03 995 | :10BE1000019800F070F92046D6E710B5FDF72CFA2E 996 | :10BE20000446FFF730FE10BDF7B582B016467648DF 997 | :10BE30000078002802D1082005B0F0BD69460298BC 998 | :10BE400000F03AFE0746002F01D03846F4E701988B 999 | :10BE5000002801D10520EFE7019800F0E3F904463E 1000 | :10BE6000002C04D1019800F046F90520E4E7207881 1001 | :10BE7000C01F85B23088A84204DA019800F03BF96F 1002 | :10BE80000920D9E72A4621460831039803F034FEF9 1003 | :10BE90003580019800F02FF90020CDE770B50446F9 1004 | :10BEA0000D4659480078002801D1082070BD574838 1005 | :10BEB000844201D11020F9E7FFF784FC2A460121D2 1006 | :10BEC000204600F03CFF0646FFF794FC3046EDE7C5 1007 | :10BED00070B504460D464C480078002801D1082072 1008 | :10BEE00070BD4A48844201D11020F9E7FFF76AFC8F 1009 | :10BEF0002A460121204600F032FF0646FFF77AFC71 1010 | :10BF00003046EDE770B504463F480078002801D17F 1011 | :10BF1000082070BD3D48844201D11020F9E700227D 1012 | :10BF20000221204600F00BFF05462846F1E770B5D8 1013 | :10BF3000044635480078002801D1082070BD3348F8 1014 | :10BF4000844201D11020F9E7FFF73CFC01220221D5 1015 | :10BF5000204600F0F4FE0546FFF74CFC2846EDE7CE 1016 | :10BF600070B505460C4628480078002801D1082005 1017 | :10BF700070BD2648854201D11020F9E7FFF722FC69 1018 | :10BF800022460221284600F0EAFE064620780028D4 1019 | :10BF900001D1012000E000202070FFF72BFC30468B 1020 | :10BFA000E6E770B504460D4617480078002801D131 1021 | :10BFB000082070BD1548844201D11020F9E72A46B7 1022 | :10BFC0000021204600F0BBFE06463046F1E770B582 1023 | :10BFD00004460D460C480078002801D1082070BDA9 1024 | :10BFE0000A48844201D11020F9E7FFF7EBFB2A460B 1025 | :10BFF0000021204600F0B3FE0646FFF7FBFB30466B 1026 | :10C00000EDE7000004BD0100FC200020FFFF000060 1027 | :10C01000002003E00021D04A1154401C1D28F9D310 1028 | :10C02000704770B50546002119E0EFF31080C40792 1029 | :10C03000E40F72B6C848405C00280CD10120C64A03 1030 | :10C04000505428204843C54A80182860002C00D14D 1031 | :10C0500062B6012070BD002C00D162B6491C1D29BA 1032 | :10C06000E3D300BF042600BFBDA244210420FCF797 1033 | :10C07000ABF800BF00BF0020ECE770B50446B7493D 1034 | :10C08000601A282103F0B2FD05461D2D04D2282098 1035 | :10C090006843B249401870BD0020FCE7F8B505467A 1036 | :10C0A000AE49681A282103F0A1FD04461D2C01D3D6 1037 | :10C0B0000020F8BDEFF31080C607F60F72B6A64851 1038 | :10C0C000005D002803D0A448005DFF2809D100BF0F 1039 | :10C0D000042700BFA2A262210420FCF775F800BF6C 1040 | :10C0E00000BF9D48005D401C9B490855002E00D1B3 1041 | :10C0F00062B60120DDE7F8B506469849701A282196 1042 | :10C1000003F074FD04461D2C01D30020F8BDEFF3AD 1043 | :10C110001080C507ED0F72B68F48005D00280ED164 1044 | :10C1200000BF082700BF8EA276210820FCF74CF83C 1045 | :10C1300000BF00BF002D00D162B60020E6E78648B0 1046 | :10C14000005D401E84490855002D00D162B682482A 1047 | :10C15000005D002801DD0120D8E70020D6E770B59A 1048 | :10C1600004467E49601A282103F040FD05461D2D36 1049 | :10C1700001D3002070BD7848405DFBE77CB50446E4 1050 | :10C18000684671DF0546002D01D028467CBD207829 1051 | :10C1900040218843694609788901402211400843BB 1052 | :10C1A0002070062200A90131E01C03F0A5FC00204C 1053 | :10C1B000ECE7FFB581B005461F460A9E002D02D16F 1054 | :10C1C0000E2005B0F0BD2C460934172E01DD0920E4 1055 | :10C1D000F7E72846FFF7D2FF30460E306870287820 1056 | :10C1E00000090001801C2870F01D2070162060706E 1057 | :10C1F0006448A070000AE07002982071000A607123 1058 | :10C200000398A071000AE071002E09DD002F07D00D 1059 | :10C21000172E05DC324639462046083003F06CFC08 1060 | :10C220000020CEE70246002A00D1704711460931AE 1061 | :10C230005078062802DD5078252801DD0020F4E73B 1062 | :10C240000FE00B7810460930081A1B185078801F31 1063 | :10C25000834201D90020E8E70878401C4301181AFE 1064 | :10C26000091848781628ECD1C8788B780002184352 1065 | :10C27000444B9842E5D10846D7E730B504462046FE 1066 | :10C28000FFF7D0FF0546002D01D10B2030BD204621 1067 | :10C29000093085420ED02878401CC1B2002004E04D 1068 | :10C2A0002B5C224609321354401C8842F8D32546A1 1069 | :10C2B000093500BF2878C01D60700020E6E730B562 1070 | :10C2C00005462846FFF7AEFF0446002C01D12E4854 1071 | :10C2D00030BD6079217900020843F9E70246114632 1072 | :10C2E000093110E04878162806D1C8788B7800020A 1073 | :10C2F0001843244B984201D0012070470878401C15 1074 | :10C300004301181A09185078C01F13460933C01882 1075 | :10C310008842E7D80020F0E710B504462046FFF732 1076 | :10C32000DDFF002802D02046FFF7A7FF2046FFF7D9 1077 | :10C3300025FF10BD70B504460849601A282103F096 1078 | :10C3400055FC05461D2D04D228206843034940189A 1079 | :10C3500070BD0020FCE70000F82B002070270020B3 1080 | :10C360002E2E5C2E2E5C2E2E5C7262635F6D6573CA 1081 | :10C37000685C7372635C6D6573685F7061636B6545 1082 | :10C38000742E6300E4FE0000FFFF00000146087900 1083 | :10C39000C0064B685B0918430B681A1A08894004E9 1084 | :10C3A0008B68DB0B18434B6858400860CB68886883 1085 | :10C3B000C0184860C8688018886008688018C8601D 1086 | :10C3C000C8687047F8B507460D4600241AE000BF5C 1087 | :10C3D000684639DF684600780028F9D0281B69468E 1088 | :10C3E0000978884202D2281BC0B2009038196946E9 1089 | :10C3F00009783ADF0646002E01D00320F8BD6846D2 1090 | :10C4000000782418AC42E2D30020F7E7F8B50446E0 1091 | :10C410000020009004216846FFF7D4FF0546002D58 1092 | :10C4200001D02846F8BD0948206000986060009857 1093 | :10C43000A0600098E060002603E02046FFF7A6FF1A 1094 | :10C44000761C142EF9D30020ECE70000ED5EEAF133 1095 | :10C450000188F94A914202D1C821018002E0018895 1096 | :10C46000491C0180704710B50446002C00D110BD56 1097 | :10C470002069002804D02069FFF73DFE00202061DC 1098 | :10C480002046FDF786FD00BFF1E770B58020EB493F 1099 | :10C49000886000BF00BF8020E849C860E84806887F 1100 | :10C4A00015E014207043E7494018006900280DD1B9 1101 | :10C4B00014217143E34A88180021FDF707FDE04885 1102 | :10C4C0000088401CDE490880B0B270BD761C022E88 1103 | :10C4D000E7D3DD4804680CE000BF0A206043DB4975 1104 | :10C4E0004018C0884404640C00BF032C01D1022012 1105 | :10C4F000EBE70A206043D549401800890228EBD0B9 1106 | :10C500000A2060434018C088C00B0028E4D10A20EC 1107 | :10C5100060434018058900BF022D01D2012000E0D0 1108 | :10C5200000200646002E05D100BFC9A28E21FBF7D0 1109 | :10C530004BFE00BF00BF02210A206043C34A80189F 1110 | :10C54000018114216943BF4A8818FFF78CFF142129 1111 | :10C550006943BC4A88180021FDF7B8FCA8B2B4E7CB 1112 | :10C5600070B505460E46FFF72DF9002E14D0C248CF 1113 | :10C570000088A84210D1C148008803280CDABF48BF 1114 | :10C5800000880A214843B149085AA84204D1FFF75C 1115 | :10C5900031F9BA48008870BDB948008884B210E00B 1116 | :10C5A000A9480068A04203D1FFF724F90320F2E76D 1117 | :10C5B00000BF0A206043A549401880884404640CE9 1118 | :10C5C00000BF0A206043A149085AA842E8D1002EC2 1119 | :10C5D00003D0A9480580A9480480FFF70BF920463D 1120 | :10C5E000D9E770B5054601212846FFF7B9FF044693 1121 | :10C5F000032C43D19448008884B20CE000BF0A2089 1122 | :10C60000604392494018C0884404640C00BF032C66 1123 | :10C6100001D1204670BD0A2060438C494018C08873 1124 | :10C62000C00B0028EAD10A2060430D520A20604363 1125 | :10C63000401880880121C90388430A216143834A45 1126 | :10C640008918888000210A206043801841800A20D0 1127 | :10C65000604311464018008902280FD00A21614327 1128 | :10C660008918098914225143764A8818FFF7FBFE7E 1129 | :10C6700002210A206043754A8018018172480068CF 1130 | :10C68000844225D07E480068844237D00A20604327 1131 | :10C690006E49401880884004400C0A2148436B4989 1132 | :10C6A0004018C088C00BC0030A216143674A89183B 1133 | :10C6B000C9884904490C08430A21614389188988BB 1134 | :10C6C0004904490C0A225143604A8918C88015E080 1135 | :10C6D0000A2060435D494018C0884004400C5A4914 1136 | :10C6E00008600A206043594940188088C00BC00385 1137 | :10C6F000C01C0A216143554A891888806048006837 1138 | :10C7000084425AD00A20604350494018C0884004EF 1139 | :10C71000400C03281FD00A2060434018C088400402 1140 | :10C72000400C0A214843494940188088C00BC00387 1141 | :10C730000A216143454A891889884904490C0843FC 1142 | :10C740000A2161438918C9884904490C0A225143C6 1143 | :10C750003E4A891888800A2060433C494018C088B6 1144 | :10C76000C00BC003C01C0A216143384A8918C88025 1145 | :10C770000A206043114640188088C00BC00340491E 1146 | :10C7800009884904490C08430A21614389188880B3 1147 | :10C790003B4800680A21484311464018C088C00B36 1148 | :10C7A000C0036104490C0843354909680A22514312 1149 | :10C7B000264A8918C88032480460314800680A2136 1150 | :10C7C000484322494018C088C00BC003C01C2C49F4 1151 | :10C7D00009680A2251431D4A8918C8801A4800680E 1152 | :10C7E0000A214843114640188088C00BC003C01C72 1153 | :10C7F000154909680A225143144A8918888020463D 1154 | :10C8000008E7F8B507460E46002E01D10E20F8BD08 1155 | :10C810000948874201D11020F9E701213846FFF786 1156 | :10C820009FFE0446032C2DD13846FFF7DAFE04465E 1157 | :10C83000032C27D10420EAE7FFFF00000005005089 1158 | :10C840000C210020382C002008210020182C00206A 1159 | :10C850002E2E5C2E2E5C2E2E5C7262635F6D6573D5 1160 | :10C86000685C7372635C68616E646C655F73746F3F 1161 | :10C87000726167652E630000102100200E210020E8 1162 | :10C88000042100200A206043F74940180589022D41 1163 | :10C890000BD1FFF7FAFD0546022D01D10420B6E7C2 1164 | :10C8A0000A206043F04940180581FCF7E5FC14219B 1165 | :10C8B0006943EE4A009088180099FDF707FB31881C 1166 | :10C8C0000A206043E84A8018418014206843E74901 1167 | :10C8D00040180069002806D014216943E34A8918EA 1168 | :10C8E0000869FFF708FC7068FFF7D8FB0A2060436F 1169 | :10C8F000DD4A8018008914225043DC4A8018716890 1170 | :10C900000161002083E7FEB505462E463046FFF75D 1171 | :10C9100089FC0446002C29D0E079A1790002084363 1172 | :10C920006946088001966179227909021143084617 1173 | :10C930000121FFF715FE0746032F09D00A2078438F 1174 | :10C94000C94940184088694608806846FFF780FD5D 1175 | :10C9500068460088A071000AE071617922790902B5 1176 | :10C96000114308466946FFF74CFF00BF3046FFF70A 1177 | :10C97000C2FBFEBD10B50446BD48844202D3BD488B 1178 | :10C98000844201D9072010BD03220121C90220469B 1179 | :10C99000FDF772FA0020F6E770B50546FEF712FFC4 1180 | :10C9A0002846FFF7E7FF0446002C03D0FEF722FFDE 1181 | :10C9B000204670BD002006E0002214214143AB4B0D 1182 | :10C9C000C9180A61401C0228F6D3002046E0002264 1183 | :10C9D000D2430A214143A44B5A5200220A21414327 1184 | :10C9E000C9184A800A2141431A468918C988012278 1185 | :10C9F000D20391430A224243D218D1800A214143F3 1186 | :10CA00001A46891889880122D20391430A22424397 1187 | :10CA1000D218918002220A214143C9180A810A21B1 1188 | :10CA200041431A468918C988C90BC903421E5204DA 1189 | :10CA3000520C11430A224243D218D1800A214143A9 1190 | :10CA40001A4689188988C90BC903421C5204520C22 1191 | :10CA500011430A224243D2189180401C0328B6D3C6 1192 | :10CA600000208549086002208449086082480068E7 1193 | :10CA70000A2148437C494018C088C00BC003C01C31 1194 | :10CA80007D4909680A225143774A8918C8807B4842 1195 | :10CA900000680A214843114640188088C00BC00333 1196 | :10CAA000C01C764909680A2251436F4A8918888058 1197 | :10CAB000FEF7A0FE00207CE770B506460D46002D6F 1198 | :10CAC00001D10E2070BD0020286068606C4886424D 1199 | :10CAD00001D11020F6E7FEF775FE00213046FFF782 1200 | :10CAE0003FFD0446032C03D1FEF784FE0520E9E751 1201 | :10CAF0000A2060435C494018408828800A2060432F 1202 | :10CB000040180089022818D00A216143564A891822 1203 | :10CB1000098914225143554A89180869FFF7BEFA5A 1204 | :10CB200000280AD00A2060434F4940180089142188 1205 | :10CB300048434E49401800696860FEF75BFE0020DC 1206 | :10CB4000C0E730B585B00446002C02D10E2005B0F8 1207 | :10CB500030BD02206946087002944A480190684638 1208 | :10CB6000FEF7F5FD0546002D02D12046FFF796FAA7 1209 | :10CB70002846ECE7F7B582B00E461546032E02DBD9 1210 | :10CB8000072005B0F0BD3E490298884201D110202F 1211 | :10CB9000F7E701210298FFF7E3FC0446002E04D0DA 1212 | :10CBA000012E1FD0022E5ED139E0032C07D102984E 1213 | :10CBB000FFF717FD0446032C01D10420E1E70A200A 1214 | :10CBC000604329494018C0880121C9038843E9030B 1215 | :10CBD0000122D203114008430A216143224A8918E5 1216 | :10CBE000C880A9E0032C07D10298FFF7FAFC04469D 1217 | :10CBF000032C01D10420C4E70A2060431A494018DD 1218 | :10CC000080880121C9038843E9030122D20311402E 1219 | :10CC100008430A216143144A891888808CE0002D5A 1220 | :10CC200018D0032C01D10020ABE70A2060430E4945 1221 | :10CC300040180089022801D10020A2E70A2161439F 1222 | :10CC4000094A8918098914225143084A8818FDF7AE 1223 | :10CC50009DF96EE00020019001A8FFF7E2F900289D 1224 | :10CC600012D104208DE765E0182C0020382C00201C 1225 | :10CC7000881300000087930304210020082100206E 1226 | :10CC8000FFFF000007C90100002003460246009094 1227 | :10CC900002990198FFF78DFA0746002F04D00198FA 1228 | :10CCA000FFF729FA38466CE7032C04D10198FFF707 1229 | :10CCB0002AFE002065E70A206043C6494018008923 1230 | :10CCC00002280FD1FFF7E1FB0A216143C14A89180D 1231 | :10CCD00008810A206043114640180089022801D1CA 1232 | :10CCE00004204EE70A206043BA4940180089142105 1233 | :10CCF0004843B94940180069002803D00198FFF75C 1234 | :10CD0000FAF90AE00A206043B24A80180089142226 1235 | :10CD10005043B14A8018019901610A216143AD4A2B 1236 | :10CD20008918098914225143AB4A8818FDF731F953 1237 | :10CD300000BF01E0072024E700BF002021E770B515 1238 | :10CD400086B004460E4615460421684601710481EA 1239 | :10CD500001A88671C571FEF7FAFC06B070BDF8B582 1240 | :10CD600007460E461546032E01DB0720F8BD002DB1 1241 | :10CD700001D10E20FAE79948874201D11020F5E74A 1242 | :10CD8000FEF720FD00213846FFF7EAFB0446032C9E 1243 | :10CD900003D1FEF72FFD0520E8E7002E02D0012E7B 1244 | :10CDA00010D107E00A2060438A494018C088C00BB0 1245 | :10CDB00028700BE00A206043864940188088C00B29 1246 | :10CDC000287003E0FEF716FD0720CFE700BFFEF74F 1247 | :10CDD00011FD0020CAE7F8B506460F467F48864297 1248 | :10CDE00001D11020F8BD01213046FFF7B9FB044600 1249 | :10CDF000032C01D10520F5E70A206043754940184E 1250 | :10CE00000589022D01D10520ECE714216943724AFE 1251 | :10CE100088183946FDF73EF80020E3E7F8B50646E6 1252 | :10CE20000F466E48864201D11020F8BD01213046E0 1253 | :10CE3000FFF796FB0446032C01D10520F5E70A20F5 1254 | :10CE40006043644940180589022D01D10520ECE7B3 1255 | :10CE500014216943604A88183946FDF74CF80020D0 1256 | :10CE6000E3E770B5054600260020287000241FE087 1257 | :10CE700014216143584A8818FCF780FF002816D017 1258 | :10CE80001420604354494018006900280FD02878C6 1259 | :10CE9000002806D0142060430858801B504988425F 1260 | :10CEA00005D901202870142060434B490E58641C9A 1261 | :10CEB000022CDDD3304670BDF7B582B0044615466E 1262 | :10CEC000002600275DE004E046480088801E4549B2 1263 | :10CED0000880444800880228F6DA42480088142175 1264 | :10CEE00048433D4940180069002844D03D4909881D 1265 | :10CEF00014225143384A8818FCF740FF00283AD0E2 1266 | :10CF0000384800881421484333490858201A3449C6 1267 | :10CF1000884230D8002101913249098814225143B6 1268 | :10CF20002D4A8818224601A9FDF710F868460079B5 1269 | :10CF300000281FD02B49098814225143264A8918FA 1270 | :10CF40000869FFF7ABF827480088142148432249B5 1271 | :10CF5000401802693046761C8100039842502868C8 1272 | :10CF6000B04207D11F480088401C1E49088000209D 1273 | :10CF700005B0F0BD00BF1B480088401C194908805F 1274 | :10CF80007F1C022F9FD32E600020F1E7F8B50646E4 1275 | :10CF90000F461248864201D11020F8BD01213046CB 1276 | :10CFA000FFF7DEFA0446032C01D10520F5E70A203D 1277 | :10CFB0006043084940180589022D01D10520ECE79E 1278 | :10CFC00014216943044A88183946FCF7ACFF002055 1279 | :10CFD000E3E70000182C0020382C0020FFFF0000A1 1280 | :10CFE000FFFFFF7F12210020A94A1268002A07D004 1281 | :10CFF000A74B02681B681B68D21AA64B9A4205D938 1282 | :10D00000A34A12680261A24A10607047A04A1168E0 1283 | :10D0100000E009690A69002A06D00A6912680368F3 1284 | :10D02000D21A9C4B9A42F4D80A690261086100BF87 1285 | :10D03000EBE7014696480068884205D1944B0869A1 1286 | :10D0400018600020086170479148026808E0106984 1287 | :10D05000884204D10869106100200861F3E7126971 1288 | :10D06000002A09D01069002806D0086813691B68D7 1289 | :10D07000C01A884B9842EAD90520E4E730B585B05C 1290 | :10D08000054683484068002801D005B030BD27E040 1291 | :10D090007F48046801206946087060680190E16873 1292 | :10D0A000039102956846FEF752FB002800D0ECE79A 1293 | :10D0B00077492069086000202061A06800280ED010 1294 | :10D0C00000BFA168206840182060284664302168AD 1295 | :10D0D000081A70498842F4D82046FFF785FF00BF40 1296 | :10D0E0006B480068002808D0694800680168284635 1297 | :10D0F0006430081A67498842CAD800BFC5E710B52E 1298 | :10D1000004462046FFF7BAFF204600F001F810BDA4 1299 | :10D1100010B504465E480068002816D05C480068D8 1300 | :10D120000068201A5B49884208D9594800680023E2 1301 | :10D13000594A01680120FCF753F906E00023564ADA 1302 | :10D14000214664310120FCF74BF910BD70B504464F 1303 | :10D1500008205249886000BF00BF08204F49C860BE 1304 | :10D160002546FCF789F806462846FFF73DFF30467E 1305 | :10D17000FFF784FF3046FFF7CBFF70BD70B5044664 1306 | :10D1800008204649886000BF00BF08204349C860A6 1307 | :10D19000FCF772F805462046FFF74BFF2846FFF7DD 1308 | :10D1A000B7FF70BD70B5044608203C49886000BFD9 1309 | :10D1B00000BF08203949C860FCF75EF806462046E3 1310 | :10D1C000FFF737FF2046FFF70FFFEFF31080C5078B 1311 | :10D1D000ED0F72B62E484068401E2D494860002D64 1312 | :10D1E00000D162B63046FFF749FF3046FFF790FFA7 1313 | :10D1F00070BD002026490860704710B586B004460F 1314 | :10D20000002C02D10E2006B010BD002020610220AB 1315 | :10D210006946087122480290039401A8FEF797FA24 1316 | :10D22000F1E710B586B00446002C02D10E2006B0FE 1317 | :10D2300010BD0220694608711A480290039401A8A3 1318 | :10D24000FEF785FAF3E7F0B585B004460E46002CEC 1319 | :10D2500002D10E2005B0F0BD0220694608701248C8 1320 | :10D2600001900294EFF31080C707FF0F72B6684673 1321 | :10D27000FEF76DFA0546002D05D105484068401CB3 1322 | :10D28000034948602660002F00D162B62846E1E7D6 1323 | :10D2900014210020FFFFFF7FFFD001000005005098 1324 | :10D2A0004DD101007DD10100A5D1010070B5054629 1325 | :10D2B0000C46012D04D0022D0CD0042D19D110E004 1326 | :10D2C000F948016848780978000208432070000A8C 1327 | :10D2D000607010E0F448006881782170C078607058 1328 | :10D2E00009E00A22F0480168091D204602F004FC0A 1329 | :10D2F00001E0062070BD00BF0020FBE70146087A70 1330 | :10D30000002808D18B7A01209840401EE74B5843F3 1331 | :10D310004A6810187047887AE44B58434A681018D6 1332 | :10D32000F8E710B5E2490A6800200FE001218140CA 1333 | :10D330001140002909D041B2CC06E40E0123A340DC 1334 | :10D34000DB4C8034236000BF00BF401C2028EDD39D 1335 | :10D3500010BDF8B50546D7482F18002472E00C2000 1336 | :10D360006043D549085800286BD00C216143D24A4C 1337 | :10D370008818FFF7C3FF06467D20C0002818301A22 1338 | :10D38000CC4988424BD90C216143CB4A5058CB49F8 1339 | :10D39000FDF7E9F9002842D10C206043C649401846 1340 | :10D3A000807A401CC1B20C206043C34A801881724D 1341 | :10D3B0000C20604311464018807AFF280FD10C20C2 1342 | :10D3C00060434018407AFF2809D10C206043401880 1343 | :10D3D000466000210C2060438018817218E00C2008 1344 | :10D3E0006043B5494018817A0C206043B24A8018E6 1345 | :10D3F000407A81420CDB0C2161435058FEF77BFEE2 1346 | :10D400000C206043AC4940180021016041608160FC 1347 | :10D410000C216143A84A8818FFF770FF0646701B6D 1348 | :10D42000A449884201D9A81B00E0701B791BA14ABE 1349 | :10D43000914201D9E91B00E0791B884200D23746AE 1350 | :10D4400000BF641C082C8AD39D48076000BF394682 1351 | :10D45000FFF7F9FE0446002C06D000BF99A2B221C6 1352 | :10D460002046FAF7B1FE00BF00BF01209D490870B9 1353 | :10D47000F8BD70B504469C480068002804D19BA103 1354 | :10D4800001F097F8082070BD0120FBF7ACFC2046A6 1355 | :10D4900095490968884705460020FBF7A4FC284603 1356 | :10D4A000F1E730B587B004460D4602209849C860C0 1357 | :10D4B000224698A1002001F07CF8232069460871DB 1358 | :10D4C00001A8FFF7D6FF07B030BD30B587B00446DE 1359 | :10D4D0000D4602208E49C860224696A1002001F028 1360 | :10D4E00068F80321684601710021017201A8FFF765 1361 | :10D4F000C0FF07B030BD70B586B005460C46012DA3 1362 | :10D5000004D0022D0CD0032D1CD113E060206946FD 1363 | :10D510000870019422468DA1002001F04AF81CE019 1364 | :10D52000612069460870019422468FA1002001F015 1365 | :10D5300040F812E062206946087092A1002001F0D4 1366 | :10D5400038F80AE000BF072600BF5EA2DD210720F1 1367 | :10D55000FAF73AFE00BF00BF00BF00BF6846FFF702 1368 | :10D5600088FF06B070BD10B592B001200007806B37 1369 | :10D5700001210907496B4843001F01214907401851 1370 | :10D5800000685949086008460068002810D001204A 1371 | :10D5900000074069012109070969484352490968A0 1372 | :10D5A000884205D97C4840694F49096888420BD9AF 1373 | :10D5B0004D487AA10268002000F0FBFF00204A4994 1374 | :10D5C0000860062012B010BD8048FEF71FFF80489B 1375 | :10D5D0008049486000208860C86008617E483849FA 1376 | :10D5E000486000208860C860086101203D490870DB 1377 | :10D5F00000203249087025204870072088700020DC 1378 | :10D60000C8707648FBF746FB182275490CA8FAF754 1379 | :10D61000A3FD0CA8FFF72DFF0446002C01D02046E7 1380 | :10D62000D0E73021684601760221818300210891EC 1381 | :10D6300006A8FFF71EFF0446002C01D02046C1E7D4 1382 | :10D640001949089808601822654918316846FAF7A0 1383 | :10D6500083FD6846FFF70DFFB4E710B54E484069FB 1384 | :10D66000401C002808D0FFF75CFE5E483EDF01202A 1385 | :10D6700044DF35DF002010BD0F20FCE730B587B058 1386 | :10D6800004460D46607821780002084356498842D6 1387 | :10D6900002DC102007B030BDFBF746FB002801D0AC 1388 | :10D6A0001120F7E7A2E0000028210020A086010059 1389 | :10D6B00000E100E0FFFFFF7F882C002021210020F7 1390 | :10D6C000742C00202E2E5C2E2E5C2E2E5C7262633B 1391 | :10D6D0005F6D6573685C7372635C6466755F6170CF 1392 | :10D6E000702E6300202100201C2100201B5B306D68 1393 | :10D6F0001B5B323B33316D4552524F523A204E6FD5 1394 | :10D7000020434D442068616E646C6572210A0000FC 1395 | :10D71000000500501B5B306D41424F52542054694C 1396 | :10D720006D656F7574206669726564204025640AB2 1397 | :10D73000000000001B5B306D54696D656F757420CF 1398 | :10D740006669726564204025640A00001B5B306DC9 1399 | :10D75000577269746520636F6D706C6574652028FD 1400 | :10D7600030782578290A00001B5B306D45726173A3 1401 | :10D770006520636F6D706C6574652028307825783E 1402 | :10D78000290A00001B5B306D466C61736820696478 1403 | :10D790006C652E0A00000000001000101B5B306D4D 1404 | :10D7A0001B5B323B33316D4552524F522C20636F1D 1405 | :10D7B0006D6D616E642068616E646C6572204030CE 1406 | :10D7C0007825780A1B5B323B33376D00E82C00204C 1407 | :10D7D000CBD40100602C002053D30100F7D401000A 1408 | :10D7E00064FF01000F000F00EFFF00001822F14955 1409 | :10D7F00001A8FAF7B1FC0294039501A8FFF739FEDE 1410 | :10D8000048E770B586B004460D461646002D02D195 1411 | :10D810000E2006B070BD20216846017004710A22F6 1412 | :10D820002946401D02F068F904966846FFF721FE7C 1413 | :10D83000EFE730B587B004460D46002D02D10E202B 1414 | :10D8400007B030BD21216846017104720A222946C1 1415 | :10D85000093002F051F90021059101A8FFF709FEF6 1416 | :10D86000EEE710B586B02320694608706846FFF7DA 1417 | :10D8700000FE0446002C03D10E21CF4802F09BF994 1418 | :10D88000204606B010BD30B587B005460C46002CCA 1419 | :10D8900002D10E2007B030BD252168460171057206 1420 | :10D8A000039401A8FFF7E5FDF4E730B587B004461F 1421 | :10D8B000242168460171047201A8FFF7DAFD0546CC 1422 | :10D8C000284607B030BD10B50446002C01D10E200B 1423 | :10D8D00010BDB9480078002801D10820F8E70E22D1 1424 | :10D8E000B549204602F008F90020F1E770B588B08C 1425 | :10D8F00004462278B1A1002000F05BFE20782528A4 1426 | :10D900007CD012DC212848D008DC00281ED0012859 1427 | :10D9100075D0022874D0202873D11DE0222855D05C 1428 | :10D9200023286FD02428F7D1AEE061286BD006DC25 1429 | :10D93000502869D0512868D06028EDD129E16228AB 1430 | :10D9400072D0702871D07128E6D1DDE2221DA0A12D 1431 | :10D95000002000F02EFEECE22279A1A1002000F0D0 1432 | :10D9600028FE0921684601719348417801A8417158 1433 | :10D9700091480178684601720A228F49891C0A3051 1434 | :10D9800002F0BAF8217901A801740E218A4802F048 1435 | :10D9900012F901A8FAF731FFCBE299A1002000F0BB 1436 | :10D9A00008FE052168460171617901720A22A11DF4 1437 | :10D9B000093002F0A1F8607904A90331FFF776FC81 1438 | :10D9C000002802D101A8FAF718FFB2E291A10020C5 1439 | :10D9D00000F0EFFD2079022802D003281CD115E0C9 1440 | :10D9E000062168460171A17901720A22E11D093000 1441 | :10D9F00002F082F8A17901A8C17310E059E08CE22D 1442 | :10DA000073E090E212E03AE285E0A6E00721684682 1443 | :10DA10000171A179017202E0062008B070BD00BF5B 1444 | :10DA200001A8FAF7EAFE84E22EE24BE280A1002090 1445 | :10DA300000F0BFFD2079012803D104205E4908735E 1446 | :10DA400005E02079022802D108205B4908730821EB 1447 | :10DA500068460171617901A841710A22A11D801DEA 1448 | :10DA600002F04AF821796846017201A8FAF7C5FE6A 1449 | :10DA7000734874494860FBF7FFFB73494518294612 1450 | :10DA80007048FFF7E0FBC8E7E188A28864235A43A7 1451 | :10DA9000104602F0ABF84849487369486949486044 1452 | :10DAA000FBF7EAFB6949451829466648FFF7CBFBB7 1453 | :10DAB000B3E767A1002000F07CFD092168460171F1 1454 | :10DAC000617901A841710A22A11D801D02F014F89C 1455 | :10DAD000002101A8017421796846017201A8FAF7B2 1456 | :10DAE0008CFE5848FFF79DFB23E25DA1002000F06B 1457 | :10DAF00060FD0A2168460171217901720A22A11D87 1458 | :10DB0000093001F0F9FF617901A80176E169059119 1459 | :10DB1000FAF773FE0DE20121090760680969491EE1 1460 | :10DB20000840002801D0102077E701210907A068EC 1461 | :10DB30000969491E0840002801D009206DE7211D10 1462 | :10DB40000220FBF7B9F80546002D04D14BA1A368CC 1463 | :10DB5000626800F02EFD28465FE720798007800F7D 1464 | :10DB6000002801D0102058E7207B8007800F002874 1465 | :10DB700001D0092051E7211D0120FBF79DF8054642 1466 | :10DB8000002D04D147A1E368626800F012FD284629 1467 | :10DB900043E761684878097800020843217B00293F 1468 | :10DBA00001D14AA100E04CA100910190637BA27BCE 1469 | :10DBB00098E0000094FF0100F82C00201B5B306D02 1470 | :10DBC000424C20455654202830782578290A0000F8 1471 | :10DBD0001B5B306D094563686F3A2025730A0000AE 1472 | :10DBE0001B5B306D0941626F7274206576656E74DF 1473 | :10DBF0002E20526561736F6E3A20307825780A00C6 1474 | :10DC00001B5B306D094E6577206669726D776172B6 1475 | :10DC100065210A001B5B306D09536F757263652FB8 1476 | :10DC200072656C61792072657175657374210A0083 1477 | :10DC30001B5B306D094446552073746172740A0091 1478 | :10DC4000A3D40100602C002080F0FA028096980096 1479 | :10DC50001B5B306D0944465520454E44210A0000A7 1480 | :10DC60001B5B306D094446552042414E4B204156C6 1481 | :10DC700041494C41424C450A000000001B5B306D9D 1482 | :10DC800009457261736520666C6173682061743A3E 1483 | :10DC9000203078257820286C656E677468202564AC 1484 | :10DCA000290A00001B5B306D095772697465206694 1485 | :10DCB0006C6173682061743A203078257820286C74 1486 | :10DCC000656E677468202564290A00006578706FA6 1487 | :10DCD0006E656E7469616C00706572696F6469630A 1488 | :10DCE0000000000094A1002000F063FCA07B0C2148 1489 | :10DCF0004843A049085800280CD0A17B0C2251436E 1490 | :10DD00009C4A5058FEF7F7F90021A07B0C225043A3 1491 | :10DD1000984A1150A17B0C225143964A8818FEF76D 1492 | :10DD200080F900287ED0FBF7A7FA0546A17B0C22DC 1493 | :10DD30005143904A5058FEF721FAA07B0C214843EA 1494 | :10DD40008C490858007800090001801CA17B0C2236 1495 | :10DD50005143884A51580870207A0A30C1B2A07BDA 1496 | :10DD60000C225043834A105841701621A07B0C228C 1497 | :10DD70005043804A10588172E421A07B0C2250430A 1498 | :10DD80007C4A1058C172FE21A07B0C225043794A74 1499 | :10DD900010580173207AC01CC1B2A07B0C225043E2 1500 | :10DDA000744A10584172A37B0C267343714EF3588A 1501 | :10DDB00018460D30A268616801F09EFE217BA07BB1 1502 | :10DDC0000C225043324680180172617BA07B0C22EA 1503 | :10DDD00050433246801841720021A07B0C225043F0 1504 | :10DDE0003246801881726448FEF7D0FA80B27D21F5 1505 | :10DDF000C90069184118A07B0C2250433246801894 1506 | :10DE000041605E480078002829D0A07B0C2148435F 1507 | :10DE1000114640184068401B5949884209D9A07BE7 1508 | :10DE20000C2100E028E04843114640184068281AB9 1509 | :10DE300006E0A07B0C2148434E4940184068401B37 1510 | :10DE400050490968491B4E4A914203D94D49096816 1511 | :10DE5000691A02E04B490968491B88420BD201202C 1512 | :10DE600046490870A07B0C225043424A8018416802 1513 | :10DE70004448FFF7E8F901E00420CEE559E042A16B 1514 | :10DE8000002000F096FB54E02079082801DB0720F1 1515 | :10DE9000C3E520790C21484336490858002801D1B0 1516 | :10DEA0000820BAE520790C21484332490D58002159 1517 | :10DEB00020790C2250432F4A11502846FEF71BF9B7 1518 | :10DEC0000020AAE502203549886035483549486078 1519 | :10DED000FBF7D2F9A168451800BF29463148FFF782 1520 | :10DEE000B2F90646002E06D000BF2F4A2F49304611 1521 | :10DEF000FAF76AF900BF00BF2B462DA10020A268E7 1522 | :10DF000000F057FB002088E532A10020626800F095 1523 | :10DF100050FB2448FFF785F97FE5A268E168606857 1524 | :10DF2000FAF752F905E031A1002000F042FB06208B 1525 | :10DF300073E500BF002070E51B5B306D0952414462 1526 | :10DF4000494F2054582120534C4F542025642C20F5 1527 | :10DF5000636F756E742025642C20696E746572760B 1528 | :10DF6000616C3A2025732C2068616E646C653A20E0 1529 | :10DF700025780A00882C0020E82C00202021002091 1530 | :10DF8000FFFFFF7F742C00201B5B306D095345524F 1531 | :10DF900049414C205458210A00000000000500505F 1532 | :10DFA000CBD40100602C0020C4D60100A1020000E7 1533 | :10DFB0001B5B306D0954494D4552207365743A20FE 1534 | :10DFC000257575732064656C617920284025752955 1535 | :10DFD0000A0000001B5B306D0954494D4552206119 1536 | :10DFE000626F72743A2025640A0000001B5B306D7A 1537 | :10DFF00009554E535550504F5254454420455645AF 1538 | :10E000004E540A000A48026803210A430260094884 1539 | :10E01000804709480047FEE7FEE7FEE7FEE7FEE728 1540 | :10E02000FEE7000005480649044A064B7047000019 1541 | :10E0300024050040EDE00100C1800100682D0020B2 1542 | :10E040000040002000380020324833490860704703 1543 | :10E050003248008CC0B2012812D13048808C0007B1 1544 | :10E06000000F00280CD12D48806AF021084040287C 1545 | :10E0700006D12A48C06A0840002801D10120704713 1546 | :10E080000020FCE72548008CC0B201282CD1234891 1547 | :10E09000808C0007000F002826D12048806AF021DC 1548 | :10E0A0000840002806D11D48C06A0840002801D158 1549 | :10E0B000012070471948806AF0210840102806D1D5 1550 | :10E0C0001648C06A0840002801D10120F1E7134832 1551 | :10E0D000806AF0210840302806D11048C06A084004 1552 | :10E0E000002801D10120E4E70020E2E710B5FFF7A6 1553 | :10E0F000C9FF002805D00A480A494860C8130A49E0 1554 | :10E100008861FFF7A5FF002802D001200749886039 1555 | :10E1100010BD00000024F4002C210020C00F00F0EE 1556 | :10E12000DFFF07C000050040006C00400006004013 1557 | :10E1300070B504460E46A568681C6168814206D326 1558 | :10E1400020684655681CA060E068401CE06061687B 1559 | :10E15000A06888420DD1A2682168206900F0E1FB27 1560 | :10E16000A168884203D00020C043E06001E00020A5 1561 | :10E17000A06070BDFFB585B0064617461D460E9CD3 1562 | :10E180000698029001200390019007E0394602981A 1563 | :10E1900001F02CFD02900198401C01900298B842B9 1564 | :10E1A000F4D20198854200D901950F98C007C00F9D 1565 | :10E1B00000281DD1002C1BD002210F9808400228F6 1566 | :10E1C00004D1002D02D13020009001E020200090E9 1567 | :10E1D00008E0641E30460099FFF7AAFFF0680028A7 1568 | :10E1E00000DA04E0002C02D00198A042F1D300BF75 1569 | :10E1F000F068002848DB0FE0012D01D96D1E08E012 1570 | :10E200000399069801F0F2FC04900498B84200D2F9 1571 | :10E2100003E0039878430390EEE700BF00BF039943 1572 | :10E22000069801F0E3FC049003990498484306998A 1573 | :10E23000081A0690E64A0498115C3046FFF778FF0A 1574 | :10E24000F068002800DA07E03946039801F0CEFCB8 1575 | :10E25000039003980028E2D100BF0F98C007C00FB9 1576 | :10E26000002811D0002C0FD008E0641E2021304679 1577 | :10E27000FFF75EFFF068002800DA04E0002C02D00F 1578 | :10E280000198A042F1D300BF09B0F0BDFFB585B041 1579 | :10E2900006460F460F9D0E9C002F01DA784200E0E3 1580 | :10E2A000384603900120049007E00799039801F095 1581 | :10E2B000A7FC03900498401C049007990398884297 1582 | :10E2C000F3DA04990898884201D908980490002C40 1583 | :10E2D00006D0002F03DB04202840042800D1641E50 1584 | :10E2E00002202840002802D00898002815D0E8070E 1585 | :10E2F000C00F002811D1002C0FD008E0641E20218F 1586 | :10E300003046FFF715FFF068002800DA04E0002C23 1587 | :10E3100002D00498A042F1D300BFF06800283ADB95 1588 | :10E32000002F05DA7F422D213046FFF701FF07E07D 1589 | :10E3300004202840042803D12B213046FFF7F8FEA3 1590 | :10E34000F068002827DB02202840022818D1E807BF 1591 | :10E35000C00F002814D10898002811D1002C0FD02C 1592 | :10E3600008E0641E30213046FFF7E2FEF068002826 1593 | :10E3700000DA04E0002C02D00498A042F1D300BFE0 1594 | :10E38000F068002807DB0195009439463046089B69 1595 | :10E39000079AFFF7EFFE09B0F0BDF7B59AB00D464A 1596 | :10E3A000144602A8159040201690002017901A9845 1597 | :10E3B00019900020189000BF2E786D1C002E00D1FF 1598 | :10E3C000E4E0252E79D100270120149000BF2E789B 1599 | :10E3D000232E12D02B2E0CD02D2E02D0302E10D169 1600 | :10E3E00003E0012007436D1C0EE0022007436D1C73 1601 | :10E3F0000AE0042007436D1C06E0082007436D1C5B 1602 | :10E4000002E00020149000BF00BF14980028DED165 1603 | :10E41000129000BF2E78302E01DB392E00DD08E08F 1604 | :10E420006D1C0A2112984843314630394018129029 1605 | :10E43000F0E700BF002013902E782E2E11D16D1C16 1606 | :10E4400000BF2E78302E01DB392E00DD08E06D1C78 1607 | :10E450000A21139848433146303940181390F0E7A9 1608 | :10E4600000BF2E7800BF6C2E01D0682E02D12E780E 1609 | :10E470006D1C00E000E0F6E700BF702E63D008DC02 1610 | :10E48000252E72D0582E38D0632E09D0642E71D12B 1611 | :10E4900014E0732E40D0752E1FD0782E6AD12BE059 1612 | :10E4A0002168081D2060086814901498C0B201907B 1613 | :10E4B00015A80199FFF73CFE5DE05FE02168081DAB 1614 | :10E4C0002060086814901298019700900A2215A8FD 1615 | :10E4D000139B1499FFF7DAFE4DE02168081D2060B8 1616 | :10E4E000086814901298019700900A2215A8139BAF 1617 | :10E4F0001499FFF73FFE3EE000BF2168081D206031 1618 | :10E5000008681490129801970090102215A8139B88 1619 | :10E510001499FFF72FFE2EE02168081D206008687F 1620 | :10E52000019000BF019806780198401C0190002ED0 1621 | :10E5300000D106E0314615A8FFF7FAFD189800282B 1622 | :10E54000F0DA00BF17E02168081D20600868149009 1623 | :10E55000002008210B4610220091019015A8149963 1624 | :10E56000FFF708FE07E000E004E0252115A8FFF70B 1625 | :10E57000DFFD00E000BF00BF6D1C03E0314615A8C1 1626 | :10E58000FFF7D6FD1898002800DB15E700BF1898A4 1627 | :10E5900000280BDD1798002804D002A9179A1A98B2 1628 | :10E5A00000F0BFF9179918984018189018981DB0E6 1629 | :10E5B000F0BD0FB438B5044606A800906A46204660 1630 | :10E5C0000599FFF7EAFE38BC08BC04B01847000004 1631 | :10E5D000ACFF010010B5F74C022020616061F6A08D 1632 | :10E5E000A061F849E1610121C90221620021A16213 1633 | :10E5F0006162E162F0A0A064F349E1641021216549 1634 | :10E600000021A1656165E165F0A1E01D01F02CFA32 1635 | :10E61000EFA1204601F028FA2020A07110BDF7B527 1636 | :10E6200082B00446174600200190E56800BF2069CB 1637 | :10E6300000900098A84203D90098401B461E04E0B1 1638 | :10E64000A1680098281A401C0E1AA068401BB0420E 1639 | :10E6500001D9304601E0A068401B0646BE4201D207 1640 | :10E66000304600E03846064661684819324603994C 1641 | :10E6700001F042FA019880190190039880190390E3 1642 | :10E68000BF1BAD19A068A84200D10025E560002F8E 1643 | :10E69000CDD1019805B0F0BDF7B582B0044615465E 1644 | :10E6A000E668A068871BAF4208D9616888192A46C6 1645 | :10E6B000039901F021FA7019E06010E00197616898 1646 | :10E6C0008819019A039901F017FAE81B0190039A3F 1647 | :10E6D000D1196068019A01F00FFA0198E06005B065 1648 | :10E6E000F0BD38B505460C46FF2168460170BA48B2 1649 | :10E6F000015D68464170022269462846FFF78FFF98 1650 | :10E7000038BD10B501460A69CB689A4204D88C68B6 1651 | :10E71000641EE41AA01801E0D41A601E10BDF7B5FB 1652 | :10E7200084B0174600BFA3480078002801D1FFF746 1653 | :10E7300051FF00BF1821049848439E4948314618AC 1654 | :10E74000059801903569F0680290002003900298C6 1655 | :10E75000854219D9B068441BBC4201D2204600E072 1656 | :10E7600038460446706841192246019801F0C4F900 1657 | :10E770000398001903900198001901903F1B2D196F 1658 | :10E78000B068A84200D100250298441BBC4201D2C7 1659 | :10E79000204600E038460446002C0DD07068411930 1660 | :10E7A0002246019801F0A8F90398001903900198F6 1661 | :10E7B000001901903F1B2D190398002800D03561E6 1662 | :10E7C000039807B0F0BDF8B504460D46164632462C 1663 | :10E7D00029462046FFF7A3FF07463846F8BDF7B5A0 1664 | :10E7E00084B0154605980390182104984843714950 1665 | :10E7F0001831441820690290E6680298B0423ED869 1666 | :10E80000A068401E871BAF4212D360688119761939 1667 | :10E8100000BF0398007808700398401C491C0390BF 1668 | :10E82000681E051EF5D17019E060012007B0F0BD2B 1669 | :10E8300002983F18AF4231D3A068801B0190019825 1670 | :10E84000A84208D9616888192A46039901F054F949 1671 | :10E850007019E06011E061688819019A039901F06C 1672 | :10E860004BF901982A1A019B0398C118606800901F 1673 | :10E8700001F042F90198281AE0600120D6E70298D9 1674 | :10E88000801B471EAF4209D3616888192A46039945 1675 | :10E8900001F032F97019E0600120C7E70020C5E7F8 1676 | :10E8A000F7B582B0074616460398019018207843C2 1677 | :10E8B000404918314018009000984069002804D061 1678 | :10E8C000012811D0022826D11EE00098FFF719FF79 1679 | :10E8D0000546B54201D2002405E03446324601998E 1680 | :10E8E0000098FFF7D9FE18E00098FFF70AFF0546E9 1681 | :10E8F000B54201D2284600E030460446224601993E 1682 | :10E900000098FFF7C9FE08E0324601990098FFF72A 1683 | :10E9100086FE044601E0002400BF00BF204605B08B 1684 | :10E92000F0BDF8B504460D46164600BF21480078F4 1685 | :10E93000002801D1FFF74EFE00BF3246294620468F 1686 | :10E94000FFF7AEFF07463846F8BD70B505460C46E2 1687 | :10E95000204601F0AFF80646324621462846FFF72A 1688 | :10E96000E0FF70BD38B5012269460020FFF72BFF9C 1689 | :10E970000446012C02D16846047801E00024E443F7 1690 | :10E98000204638BD10B500BFFFF7ECFF0028FBDBC9 1691 | :10E9900010BD70B500BF07480078002801D1FFF70F 1692 | :10E9A00019FE00BF0348856D406DA84216D00124B2 1693 | :10E9B00015E00000002E00205465726D696E616CD8 1694 | :10E9C0000000000000300020F02F002052545400BE 1695 | :10E9D000534547474552000030210020002420467F 1696 | :10E9E00070BD10B5014618204843F84C0219D36891 1697 | :10E9F0001069181A10BDFFB581B005460E461746BE 1698 | :10EA000000BFF24848380078002801D1FFF7E2FD46 1699 | :10EA100000BF002400BF18206043EC494018406844 1700 | :10EA2000002800D105E0641CE84848384069A0424D 1701 | :10EA3000F1DC00BFE54848384069A0421BDD1820E2 1702 | :10EA40006043E2490D50182060434018466018208A 1703 | :10EA5000604340188760002218206043401802611C 1704 | :10EA6000182060434018C26018206043D74A8018BD 1705 | :10EA70000499416101E00024E443204605B0F0BD63 1706 | :10EA8000FFB581B005460E46174600BFCF4848384F 1707 | :10EA90000078002801D1FFF79DFD00BF002400BFD2 1708 | :10EAA00018206043C949303940184068002800D117 1709 | :10EAB00005E0641CC54848380069A042F0DC00BF8E 1710 | :10EAC000C24848380069A0421DDD18206043BF4994 1711 | :10EAD00030390D50182060434018466018206043BC 1712 | :10EAE00040188760002218206043401802611820F7 1713 | :10EAF00060434018C26018206043B44A303A80181E 1714 | :10EB00000499416101E00024E443204605B0F0BDD2 1715 | :10EB1000FFB581B004460E46174600BFAB484838E3 1716 | :10EB20000078002801D1FFF755FD00BFA7484838FD 1717 | :10EB30000069A04225D9002C1AD018206043A349AF 1718 | :10EB400030390E5018206043401847601821614347 1719 | :10EB50009E4A303A89180498886000221820604341 1720 | :10EB60009A49303940180261182060434018C26049 1721 | :10EB700018206043954A303A80180A99416100256F 1722 | :10EB800001E00025ED43284605B0F0BDFFB581B09A 1723 | :10EB900004460E46174600BF8C48483800780028C7 1724 | :10EBA00001D1FFF717FD00BF884848384069A042EF 1725 | :10EBB00021D9002C17D01820604384490E5018200A 1726 | :10EBC00060434018476018216143804A89180498BF 1727 | :10EBD00088600022182060437C4940180261182098 1728 | :10EBE00060434018C26018206043784A80180A9930 1729 | :10EBF0004161002501E00025ED43284605B0F0BD48 1730 | :10EC000070B504460E4600BF7048483800780028AA 1731 | :10EC100001D1FFF7DFFC00BF6C4848380069A04213 1732 | :10EC200006D918206043694930390E50002501E0AB 1733 | :10EC30000025ED43284670BD70B504460E4600BF62 1734 | :10EC4000624848380078002801D1FFF7C3FC00BFB4 1735 | :10EC50005E4848384069A04205D9182060435B49A6 1736 | :10EC60000E50002501E00025ED43284670BD10B58B 1737 | :10EC700000BF564848380078002801D1FFF7AAFCA9 1738 | :10EC800000BF10BDF8B5044600BF504848380078B2 1739 | :10EC9000002801D1FFF79EFC00BF0027FF20694636 1740 | :10ECA0000870102C21DA4A48005D4870474D303D0D 1741 | :10ECB000287D8007800F022806D146480470022272 1742 | :10ECC0002846FFF7ACFC12E02846FFF71AFD06467F 1743 | :10ECD000022E07D33F480470022269462846FFF7F8 1744 | :10ECE000DBFC04E00027FF4301E00027FF43384638 1745 | :10ECF000F8BDF3B581B0074600BF34484838007806 1746 | :10ED0000002801D1FFF766FC00BF102F59DA2F4809 1747 | :10ED100030380090029800F0CDFE06460098FFF7CC 1748 | :10ED2000F0FC05460098007D8007800F002804D085 1749 | :10ED3000012817D0022840D12FE0301D854201D292 1750 | :10ED400000240EE039460098FFF7CBFC32460299CA 1751 | :10ED50000098FFF764FC04461E4801780098FFF70E 1752 | :10ED6000C0FC2DE0042D02D20024E44314E0394617 1753 | :10ED70000098FFF7B6FC281FB04201D9304600E0EA 1754 | :10ED8000281F024602990098FFF749FC04461148E3 1755 | :10ED900001780098FFF7A5FC12E039460098FFF7CC 1756 | :10EDA000A0FC324602990098FFF739FC0446094856 1757 | :10EDB00001780098FFF795FC02E00024E44300BFCF 1758 | :10EDC00001E00024E4432046FEBD0000482E002060 1759 | :10EDD0003021002040210020F7B584B004460F46C2 1760 | :10EDE00006980678B01C1F2803DC6078801C1F285A 1761 | :10EDF00002DD0C2007B0F0BD1F20801B801E85B2F5 1762 | :10EE00000295B11C781802A97DDF039003980028B1 1763 | :10EE100001D00398EEE72078022808D168460089DF 1764 | :10EE2000A84204DC09200190684605890BE008200F 1765 | :10EE300001906078002804D06078A84201DC6578F1 1766 | :10EE400001E068460589681CC2B23046711CCEB22A 1767 | :10EE50003A543046721CD6B201993954069801785A 1768 | :10EE6000A81C0818C1B2069801700020C2E7F8B5C6 1769 | :10EE700005460C462078001D1F2801DD0C20F8BD3A 1770 | :10EE8000684679DF0646002E01D03046F7E70321B9 1771 | :10EE90002278501C2070A95419212278501C20700F 1772 | :10EEA000A954207841196846008800F05EFA21785C 1773 | :10EEB000401820700020E2E730B503461078C01CEF 1774 | :10EEC0001F2801DD0C2030BD02241578681C10704D 1775 | :10EED0004C550A241578681C10704C551578681C20 1776 | :10EEE00010704B550020EEE7FFB587B006461D4673 1777 | :10EEF000109C0020069020780590002747E0B9007C 1778 | :10EF0000706841180A886846028149884181002258 1779 | :10EF100003A902A865DF04900498002802D0049891 1780 | :10EF20000BB0F0BD6846017B099881422ED106984E 1781 | :10EF3000002801D0002000E00220019020786946DE 1782 | :10EF4000097B4118019808181F2801DD0C20E7E70C 1783 | :10EF50000698002809D12078401C20702278511C86 1784 | :10EF600008982170A854012006902078421903A91E 1785 | :10EF700002A865DF04900498002801D00498CFE728 1786 | :10EF800020786946097B4018207000BF7F1C3088BC 1787 | :10EF9000B842B4DC0698002806D021780598401CB9 1788 | :10EFA000081AC1B2059829540020B9E7FFB581B00D 1789 | :10EFB000074615460A9E009602223846049B02998F 1790 | :10EFC000FFF792FF0446002C02D0204605B0F0BDAA 1791 | :10EFD0000096102229463846049BFFF785FF044619 1792 | :10EFE000002C01D02046F1E70020EFE70146088819 1793 | :10EFF000062808DB08881922D201904205DD08881E 1794 | :10F00000DE4A904201D0072070474888062808DB76 1795 | :10F0100048881922D201904205DD4888D74A90429B 1796 | :10F0200001D00720F0E70888D44A904208D04888E9 1797 | :10F03000904205D008884A88904201DD0720E3E726 1798 | :10F040000020E1E7F8B506460D4614462078801DFD 1799 | :10F050001F2801D90C20F8BD3046FFF7C7FF07462F 1800 | :10F06000002F01D03846F6E705212278501C207089 1801 | :10F07000A95412212278501C2070A95422785119C9 1802 | :10F08000308800F072F921784018207022785119E8 1803 | :10F09000708800F06AF92178401820700020DAE7C3 1804 | :10F0A000F8B505460E4614462879801CC7B220786C 1805 | :10F0B000801CC0191F2801DD0C20F8BD781CC1B2CE 1806 | :10F0C0002278501C2070B154FF212278501C2070EF 1807 | :10F0D000B15422789119288800F047F92178401816 1808 | :10F0E0002070A88800280EDDA868002801D107201C 1809 | :10F0F000E3E7AA8823789819A96800F0FDFC207836 1810 | :10F100002979401820700020D7E7FEB507460E4643 1811 | :10F110001446B86A002801D10720FEBD00200190E6 1812 | :10F1200032E0B96A0C22019850430D182879801CEE 1813 | :10F13000C0B200900098401CC1B22278501C2070D0 1814 | :10F14000B15416212278501C2070B15422789119A4 1815 | :10F15000288800F00AF9217840182070A888002833 1816 | :10F160000EDDA868002801D10720D6E7AA882378F9 1817 | :10F170009819A96800F0C0FC2078297940182070FF 1818 | :10F180000198401CC0B201902C20C15D01988142C1 1819 | :10F19000C7DC0020C1E7F8B504460F461546002637 1820 | :10F1A000002028702078002809D02A4639462046B9 1821 | :10F1B000FFF712FE0646002E01D03046F8BDA078BB 1822 | :10F1C000002808D029463846FFF751FE0646002E93 1823 | :10F1D00001D03046F2E7E07800280ED002212A78EC 1824 | :10F1E000501C2870B95401212A78501C2870B95439 1825 | :10F1F000E1782A78501C2870B954606800280BD038 1826 | :10F200000020616808562A463946FFF755FE064633 1827 | :10F21000002E01D03046D1E7208900280CDD3B4686 1828 | :10F2200006220221204608300095FFF7BFFE064661 1829 | :10F23000002E01D03046C1E7208A00280CDD3B4675 1830 | :10F2400007220321204610300095FFF7AFFE064647 1831 | :10F25000002E01D03046B1E7208B00280CDD3B4664 1832 | :10F2600015221421204618300095FFF79FFE064610 1833 | :10F27000002E01D03046A1E7206A002809D02A4696 1834 | :10F280003946206AFFF7DEFE0646002E01D03046E2 1835 | :10F2900094E7606A002809D02A463946606AFFF779 1836 | :10F2A000FFFE0646002E01D0304687E72C20005D89 1837 | :10F2B000002809DD2A4639462046FFF726FF064684 1838 | :10F2C000002E01D0304679E7304677E70146C8780E 1839 | :10F2D00004221040002801D1072070470020FCE7DD 1840 | :10F2E0000146C878002801D0072070470020FCE7BD 1841 | :10F2F000F3B593B00D460021129111911398002897 1842 | :10F3000014D01398FFF7E2FF0446002C02D02046E9 1843 | :10F3100015B0F0BD12AA09A91398FFF73CFF0446E7 1844 | :10F32000002C01D02046F3E709AE00E00026002DB6 1845 | :10F3300013D02846FFF7D4FF0446002C01D0204606 1846 | :10F34000E6E711AA01A92846FFF725FF0446002C8D 1847 | :10F3500001D02046DCE701AF00E0002710A80379C8 1848 | :10F360003A46017A304672DFD2E702460A70FF2041 1849 | :10F37000000210400012487002207047FFFF00009A 1850 | :10F380000146CD4801600068002801D00020704788 1851 | :10F390000E20FCE70146C948016000207047014685 1852 | :10F3A000C74801600020704770B50446002C01D1A9 1853 | :10F3B0000E2070BDC248006800020521090707221F 1854 | :10F3C00012028918226892008850BC4800688000A8 1855 | :10F3D00005210907072212028918E2689200885065 1856 | :10F3E000002005210907072212028918626892008D 1857 | :10F3F0008850002105200007072212028018A26809 1858 | :10F4000092008150AF49E0684861A06888606068F8 1859 | :10F4100008612068C86000208863AA49403188607C 1860 | :10F4200000250026207C002806D0012806D00228CE 1861 | :10F4300006D0032808D105E0002507E0022505E0F5 1862 | :10F44000042503E0062501E0072600BF00BF002ECB 1863 | :10F4500001D03046ADE7607C00280BD10120284365 1864 | :10F46000984940314861A07CC861E07C9549C03131 1865 | :10F4700008600AE0934840304561A07C91494031E2 1866 | :10F48000C861E07C8F49C031086000208E49486027 1867 | :10F49000886204208D49086000208D49087003218E 1868 | :10F4A000042000F0D1F8042001218140894A116034 1869 | :10F4B00000BF894889494860042001218140884A69 1870 | :10F4C000116000BF02207F490860304671E73EB5F9 1871 | :10F4D0007F480078012804D0022806D0032843D1B1 1872 | :10F4E00020E001207F4948623FE000206946087023 1873 | :10F4F0000190029000BF70480068002801D00120F0 1874 | :10F5000000E000200446002C05D100BF76A2CA21ED 1875 | :10F51000F8F75AFE00BF00BF674B684607C81B6874 1876 | :10F52000984722E00120694608706648C06B019048 1877 | :10F5300064484030C068029000BF5F4800680028FF 1878 | :10F5400001D0012000E000200446002C05D100BFBE 1879 | :10F5500065A2D321F8F738FE00BF00BF564B6846BE 1880 | :10F5600007C81B68984700E000BF00BF3EBD10B54C 1881 | :10F57000044657480470FFF7AAFF10BDFFB581B0DD 1882 | :10F5800005460E461746002D01D0002E02D10E2052 1883 | :10F5900005B0F0BD4E480078002806D0012814D0F0 1884 | :10F5A000022804D0032812D100E000BF00BF5E484B 1885 | :10F5B00005605E4806605E4807605E490498086022 1886 | :10F5C00000240120FFF7D3FF03E0082401E0032417 1887 | :10F5D00000BF00BF2046DBE710B53B48806A00282B 1888 | :10F5E00020D000203849886239480078012817D196 1889 | :10F5F0004D4800683349403148604C480068314903 1890 | :10F6000048634C4800688863494800682D49403188 1891 | :10F6100088600120334988620220FFF7A8FF00E0DC 1892 | :10F6200000BF00BF2848406800280CD000202649B1 1893 | :10F63000486027480078022803D10320FFF797FF8E 1894 | :10F6400000E000BF00BF10BD10B5002819DA3A4A2B 1895 | :10F6500003071B0F083B9B089B00D2588307DC0E57 1896 | :10F66000FF23A3409A438B071B0E8407E40EA3409D 1897 | :10F670001A43314B0407240F083CA408A4001A5174 1898 | :10F6800018E0174A03231B02D21883089B00D258A4 1899 | :10F690008307DC0EFF23A3409A438B071B0E8407CE 1900 | :10F6A000E40EA3401A430E4B032424021B198408C2 1901 | :10F6B000A4001A5110BD0000602100204421002048 1902 | :10F6C0004821002000450040004100400042004029 1903 | :10F6D0005C21002080E200E00204000000430040C2 1904 | :10F6E00000E100E0004000402E2E5C2E2E5C2E2E0D 1905 | :10F6F0005C2E2E5C2E2E5C2E2E5C636F6D706F6EFA 1906 | :10F70000656E74735C647269766572735F6E72663F 1907 | :10F710005C7370695F736C6176655C7370695F734D 1908 | :10F720006C6176652E6300004C2100205021002082 1909 | :10F7300054210020582100201CED00E070B5064641 1910 | :10F740000C46154629462046C046C04670BDF8B551 1911 | :10F750005A480078002800D1F8BD594800680028B0 1912 | :10F7600001D1012000E0002005465648006800282D 1913 | :10F7700001D1012000E00020064600BF002D14D179 1914 | :10F78000684651DF0446052C01D101250CE0002C10 1915 | :10F7900006D000BF4C4A65212046F8F715FD03E06E 1916 | :10F7A000474900980968884700BF002E1AD147488A 1917 | :10F7B0000088009069464648006861DF0446052CD1 1918 | :10F7C00001D101260DE0002C06D000BF3E4A7C216D 1919 | :10F7D0002046F8F7F9FC04E03D480068394909681B 1920 | :10F7E000884700BF002D02D0002E00D000E0C5E702 1921 | :10F7F00000BF00BFB0E7FFB581B00C4616461F46FC 1922 | :10F80000002C02D1072005B0F0BD20468107890FEA 1923 | :10F81000002901D1012100E00021002901D10720A8 1924 | :10F82000F1E72B480460294806802A4807602A49E6 1925 | :10F83000019810DF0546002D01D02846E3E701209E 1926 | :10F840001E49087016202EDFDDE710B511DF0446D3 1927 | :10F85000002C01D0012000E000201849087020464B 1928 | :10F8600010BD0146002901D10E20704715480160E6 1929 | :10F870000020FAE70146002901D10E207047104808 1930 | :10F8800001600020FAE770B512480068002811D026 1931 | :10F89000104800688047044600BF2546002D07D069 1932 | :10F8A00000BF094AFF212A312846F8F78DFC00BF26 1933 | :10F8B00000BF01E0FFF74BFF70BD00006821002092 1934 | :10F8C0007821002074210020BCFF0100702100205D 1935 | :10F8D0006C210020642100203DF701004343514387 1936 | :10F8E00030B55C18010C130C0D4692B25D4380B22A 1937 | :10F8F00051432C19054655430A0C09044D19624120 1938 | :10F900005843010C00044019514130BD0FB41CB5DF 1939 | :10F91000074B06AA7B4469460090059800F073FAED 1940 | :10F920000020694600F082FA1CBC08BC04B01847ED 1941 | :10F9300015050000F8B50E4604460020206220465A 1942 | :10F94000E1688847002829D0252802D06268A1688C 1943 | :10F9500020E0E16820460027884705001ED02846A1 1944 | :10F960004138192802D80127FF02203532462046A7 1945 | :10F9700027602946F8F7D4FB002808D0012804D0D6 1946 | :10F98000F61DF608F6000836D9E7361DD7E7626897 1947 | :10F990002846A1689047206A401CCFE7206AF8BD3E 1948 | :10F9A000F7B5002575291068009914A611D0C04636 1949 | :10F9B000C046002802DA404211A608E00099096812 1950 | :10F9C0008A0701D50FA602E0490704D50EA6012536 1951 | :10F9D00001E0C046C046009F0024243704E000F048 1952 | :10F9E0002AFA30313955641C0028F8D12B463246AA 1953 | :10F9F0002146009800F0AAF9FEBD000000000000BA 1954 | :10FA00002D0000002B00000020000000034610B570 1955 | :10FA10000B439B070FD1042A0DD308C810C9121F2E 1956 | :10FA2000A342F8D018BA21BA884201D9012010BDEA 1957 | :10FA30000020C04310BD002A03D0D30703D0521CBE 1958 | :10FA400007E0002010BD03780C78401C491C1B1BEC 1959 | :10FA500007D103780C78401C491C1B1B01D1921E56 1960 | :10FA6000F1D1184610BD0000034670B502460B43A5 1961 | :10FA70009B070FD10E4CE60100E008C208C91D1B10 1962 | :10FA80009D433542F9D0D9B21170521C00290DD0D6 1963 | :10FA90001B0AF8E70B78491C1370521C002B05D089 1964 | :10FAA0000B78491C1370521C002BF3D170BD000061 1965 | :10FAB0000101010130B5441C03E00178401C00291C 1966 | :10FAC0000DD08107F9D10B4BDD0104C8D11A914348 1967 | :10FAD0002940FAD0001B0A0603D0C01E30BD001B0F 1968 | :10FAE00030BD0A0401D0801E30BD0902FCD0401E8A 1969 | :10FAF00030BD000001010101F8B5042A2CD38307B1 1970 | :10FB000012D00B78491C0370401C521E83070BD087 1971 | :10FB10000B78491C0370401C521E830704D00B78DD 1972 | :10FB2000491C0370401C521E8B079B0F05D0C91A3D 1973 | :10FB3000DF002023DE1B08C90AE0F8F70DFBF8BD43 1974 | :10FB40001D4608C9FD401C46B4402C4310C0121F7E 1975 | :10FB5000042AF5D2F308C91A521EF0D40B78491CB6 1976 | :10FB60000370401C521EEAD40B78491C0370401CE1 1977 | :10FB7000012AE4D409780170F8BD01E004C0091F2E 1978 | :10FB80000429FBD28B0701D50280801CC90700D055 1979 | :10FB90000270704700290BD0C30702D00270401CCE 1980 | :10FBA000491E022904D3830702D50280801C891EC6 1981 | :10FBB000E3E70022EEE70022DFE70378C278194688 1982 | :10FBC000437812061B0219438378C0781B0419433B 1983 | :10FBD00011430902090A000608437047020A087027 1984 | :10FBE0004A70020C8A70020ECA7070470022030924 1985 | :10FBF0008B422CD3030A8B4211D300239C464EE048 1986 | :10FC000003460B433CD4002243088B4231D3030903 1987 | :10FC10008B421CD3030A8B4201D394463FE0C309B5 1988 | :10FC20008B4201D3CB01C01A524183098B4201D3CD 1989 | :10FC30008B01C01A524143098B4201D34B01C01AB8 1990 | :10FC4000524103098B4201D30B01C01A5241C30830 1991 | :10FC50008B4201D3CB00C01A524183088B4201D39F 1992 | :10FC60008B00C01A524143088B4201D34B00C01A8B 1993 | :10FC70005241411A00D201465241104670475DE0A0 1994 | :10FC8000CA0F00D04942031000D340425340002223 1995 | :10FC90009C4603098B422DD3030A8B4212D3FC22CC 1996 | :10FCA000890112BA030A8B420CD3890192118B424B 1997 | :10FCB00008D3890192118B4204D389013AD0921161 1998 | :10FCC00000E08909C3098B4201D3CB01C01A52411C 1999 | :10FCD00083098B4201D38B01C01A524143098B42E5 2000 | :10FCE00001D34B01C01A524103098B4201D30B01CE 2001 | :10FCF000C01A5241C3088B4201D3CB00C01A5241F3 2002 | :10FD000083088B4201D38B00C01A5241D9D24308D9 2003 | :10FD10008B4201D34B00C01A5241411A00D2014616 2004 | :10FD2000634652415B10104601D34042002B00D580 2005 | :10FD30004942704763465B1000D3404201B5002042 2006 | :10FD4000C046C04602BD704770477047FFB50446C5 2007 | :10FD50000D4681B0243000902168880604D5102219 2008 | :10FD6000E0699143216000E00120A84201DD471BCA 2009 | :10FD700000E000270498A1697A191018081AA061F8 2010 | :10FD80002078C00602D42046C046C046002608E0BF 2011 | :10FD900003986268A168805D9047206A401C761CC9 2012 | :10FDA000206204988642F3DB2078C0060AD52046FC 2013 | :10FDB000C046C04606E06268A16830209047206ACD 2014 | :10FDC000401C206238467F1E0028F4DC07E00098C3 2015 | :10FDD0006268A168405D9047206A401C2062284606 2016 | :10FDE0006D1E0028F3DC2046C046C0462078000681 2017 | :10FDF00002D5022005B0F0BD0120FBE701694A1CD5 2018 | :10FE000002610878704700B58FB00291002105911A 2019 | :10FE10000549019379440391114604906846FFF720 2020 | :10FE200089FD0FB000BD0000E5FFFFFF0A681070FC 2021 | :10FE3000521C0A60704701468008081A020910180F 2022 | :10FE4000020A1018020C1018C00882001218520082 2023 | :10FE5000891A01E0401C0A390A29FBD2704775460D 2024 | :10FE600000F024F8AE46050069465346C008C000BD 2025 | :10FE7000854618B020B5FEF7D5F860BC00274908C4 2026 | :10FE8000B6460026C0C5C0C5C0C5C0C5C0C5C0C532 2027 | :10FE9000C0C5C0C5403D49008D46704710B50446F9 2028 | :10FEA000C046C0462046F8F750F910BD00487047DC 2029 | :10FEB000082D002001491820ABBEFEE726000200F5 2030 | :10FEC000704730B58C180278401C13071B0F01D106 2031 | :10FED0000378401C120906D10278401C03E0057823 2032 | :10FEE000401C0D70491C5B1EF9D101E00B70491CD0 2033 | :10FEF000521EFBD1A142E6D3002030BD30B474467F 2034 | :10FF0000641E2578641CAB4204D3635D5B00E31878 2035 | :10FF100030BC18471D46F8E701468A680869801812 2036 | :10FF2000CA68904201D1012070470020FCE7000020 2037 | :10FF300011000000020000001A0000005000000044 2038 | :10FF40001ECD00008CB9A88B82D851FDA1771E2A46 2039 | :10FF50000200000055A601000000000000000000A3 2040 | :10FF6000000000000000000001000000EDD80100CA 2041 | :10FF70000108010000000000000000000100000076 2042 | :10FF80000000000000000000000000000000000071 2043 | :10FF9000000000000200000000000000000000005F 2044 | :10FFA000000000000000000000000000303132338B 2045 | :10FFB0003435363738394142434445462E2E5C2E7F 2046 | :10FFC0002E5C2E2E5C2E2E5C2E2E5C2E2E5C636FF5 2047 | :10FFD0006D706F6E656E74735C736F667464657656 2048 | :10FFE0006963655C636F6D6D6F6E5C736F6674647F 2049 | :10FFF00065766963655F68616E646C65725C736F7A 2050 | :020000040002F8 2051 | :1000000066746465766963655F68616E646C657269 2052 | :100010002E63000034000200002000207C0100005C 2053 | :10002000C2FE01007C0002007C210020841E000032 2054 | :1000300004810100011173400104320C0710021009 2055 | :1000400003051ED6BE898E3201331027031350C319 2056 | :10005000B31027022EFA031DFFFF051BC425002045 2057 | :10006000051C0300FFFF00143D24F400303132333F 2058 | :0C007000343536373839414243444546A8 2059 | :04000005000180C1B5 2060 | :00000001FF 2061 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const expect = require('chai').expect; 4 | const assert = require('chai').assert; 5 | 6 | const BLEMeshSerialInterface = require('../BLEMeshSerialInterface'); 7 | 8 | const MESH_ACCESS_ADDR = 0x8E89BED6; 9 | const MESH_INTERVAL_MIN_MS = 100; 10 | const MESH_ADVERTISING_CHANNEL = 38; 11 | 12 | const MESH_ACCESS_ADDR_ARRAY = [0x8e, 0x89, 0xbe, 0xd6]; 13 | const MESH_INTERVAL_MIN_MS_ARRAY = [0, 0, 0, 100]; 14 | 15 | const FIRST_COM_PORT = 'COM45'; 16 | 17 | function checkError(err) { 18 | if (err) { 19 | console.log(err); 20 | } 21 | } 22 | 23 | function arraysEqual(arr1, arr2) { 24 | if(arr1.length !== arr2.length) 25 | return false; 26 | for(let i = arr1.length; i--;) { 27 | if(arr1[i] !== arr2[i]) 28 | return false; 29 | } 30 | 31 | return true; 32 | } 33 | 34 | const bleMeshSerialInterfaceAPI = new BLEMeshSerialInterface(); 35 | 36 | describe('helper function tests', function() { 37 | 38 | it('tests bleMeshSerialInterfaceAPI.buildResponse() on single command response', () => { 39 | const resp = new Buffer([0x03, 0x84, 0x74, 0x00]); 40 | 41 | bleMeshSerialInterfaceAPI.buildResponse(resp); 42 | expect(bleMeshSerialInterfaceAPI._responseQueue.shift().toString('hex')).to.equal(resp.toString('hex')); 43 | expect(bleMeshSerialInterfaceAPI._tempBuildResponse).to.equal(null); 44 | }); 45 | 46 | it('tests bleMeshSerialInterfaceAPI.buildResponse() on single event response', () => { 47 | const resp = new Buffer([0x03, 0xb3, 0x00, 0x00]); 48 | 49 | bleMeshSerialInterfaceAPI.buildResponse(resp); 50 | expect(bleMeshSerialInterfaceAPI._responseQueue.shift().toString('hex')).to.equal(resp.toString('hex')); 51 | expect(bleMeshSerialInterfaceAPI._tempBuildResponse).to.equal(null); 52 | }); 53 | 54 | it('tests bleMeshSerialInterfaceAPI.buildResponse() on two event responses', () => { 55 | const resp = new Buffer([0x04, 0xb3, 0x00, 0x00, 0x00, 0x05, 0xb4, 0x00, 0x00, 0x00, 0x00]); 56 | 57 | bleMeshSerialInterfaceAPI.buildResponse(resp); 58 | expect(bleMeshSerialInterfaceAPI._responseQueue.shift().toString('hex')).to.equal(resp.slice(0, 5).toString('hex')); 59 | expect(bleMeshSerialInterfaceAPI._responseQueue.shift().toString('hex')).to.equal(resp.slice(5).toString('hex')); 60 | expect(bleMeshSerialInterfaceAPI._tempBuildResponse).to.equal(null); 61 | }); 62 | 63 | it('tests bleMeshSerialInterfaceAPI.buildResponse() on a response that comes in two data events', () => { 64 | const resp1 = new Buffer([0x06, 0xb3, 0x00, 0x00]); 65 | const resp2 = new Buffer([0x00, 0x00, 0x00]); 66 | 67 | const expectedResp = Buffer.concat([resp1, resp2]); 68 | 69 | bleMeshSerialInterfaceAPI.buildResponse(resp1); 70 | bleMeshSerialInterfaceAPI.buildResponse(resp2); 71 | expect(bleMeshSerialInterfaceAPI._responseQueue.shift().toString('hex')).to.equal(expectedResp.toString('hex')); 72 | expect(bleMeshSerialInterfaceAPI._tempBuildResponse).to.equal(null); 73 | }); 74 | 75 | it('tests bleMeshSerialInterfaceAPI.buildResponse() on a broken up response followed by two responses', () => { 76 | const resp1 = new Buffer([0x06, 0xb3, 0x00, 0x00]); 77 | const resp2 = new Buffer([0x00, 0x00, 0x00, 0x04, 0xb4, 0x00, 0x00, 0x00]); 78 | 79 | const expectedResp = Buffer.concat([resp1, resp2]); 80 | 81 | bleMeshSerialInterfaceAPI.buildResponse(resp1); 82 | bleMeshSerialInterfaceAPI.buildResponse(resp2); 83 | expect(bleMeshSerialInterfaceAPI._responseQueue.shift().toString('hex')).to.equal(expectedResp.slice(0, 7).toString('hex')); 84 | expect(bleMeshSerialInterfaceAPI._responseQueue.shift().toString('hex')).to.equal(expectedResp.slice(7).toString('hex')); 85 | expect(bleMeshSerialInterfaceAPI._tempBuildResponse).to.equal(null); 86 | }); 87 | 88 | it('tests bleMeshSerialInterfaceAPI.isCommandResponse()', () => { 89 | const resp = new Buffer([0x01, 0x82]); 90 | 91 | let res = bleMeshSerialInterfaceAPI.isCommandResponse(resp); 92 | expect(res).to.equal(true); 93 | 94 | const resp2 = new Buffer([0x01, 0x84]); 95 | 96 | res = bleMeshSerialInterfaceAPI.isCommandResponse(resp2); 97 | expect(res).to.equal(true); 98 | 99 | const resp3 = new Buffer([0x0]); 100 | 101 | res = bleMeshSerialInterfaceAPI.isCommandResponse(resp3); 102 | expect(res).to.equal(true); 103 | 104 | const resp4 = new Buffer([0x1, 0x81]); 105 | 106 | res = bleMeshSerialInterfaceAPI.isCommandResponse(resp4); 107 | expect(res).to.equal(false); 108 | }); 109 | 110 | it('tests bleMeshSerialInterfaceAPI.bytesArrayToUnsignedInt()', () => { 111 | const handle1 = [0x0, 0x0]; 112 | expect(bleMeshSerialInterfaceAPI.bytesArrayToUnsignedInt(handle1)).to.equal(0); 113 | 114 | const handle2 = [0x0, 0x1]; 115 | expect(bleMeshSerialInterfaceAPI.bytesArrayToUnsignedInt(handle2)).to.equal(1); 116 | 117 | const handle3 = [0xFF, 0xFF]; 118 | expect(bleMeshSerialInterfaceAPI.bytesArrayToUnsignedInt(handle3)).to.equal(65535); 119 | 120 | const handle4 = [0xFF, 0xFF, 0xFF, 0xFF]; 121 | expect(bleMeshSerialInterfaceAPI.bytesArrayToUnsignedInt(handle4)).to.equal(4294967295); 122 | 123 | }); 124 | }); 125 | 126 | 127 | describe('nRF Open Mesh serial interface command unit tests -- tests are not self-contained', () => { 128 | 129 | before(function(done) { 130 | bleMeshSerialInterfaceAPI.openSerialPort(FIRST_COM_PORT, err => { 131 | 132 | bleMeshSerialInterfaceAPI.once('deviceStarted', data => { 133 | console.log('device started') 134 | //done(); 135 | }); 136 | 137 | bleMeshSerialInterfaceAPI.radioReset(err => { 138 | console.log('reset') 139 | checkError(err) 140 | done() 141 | }); 142 | }); 143 | }); 144 | 145 | it('prompts slave to echo one byte back to host', done => { 146 | const buf = [0x01]; 147 | 148 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 149 | checkError(err); 150 | expect(res.toString()).to.equal(buf.toString()); 151 | done(); 152 | }); 153 | }); 154 | 155 | it('prompts slave to echo two bytes back to host', done => { 156 | const buf = [0x01, 0x02]; 157 | 158 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 159 | checkError(err); 160 | expect(res.toString()).to.equal(buf.toString()); 161 | done(); 162 | }); 163 | }); 164 | 165 | it('prompts slave to echo too many bytes back to host', done => { 166 | const buf = new Array(30).fill(0xff); 167 | 168 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 169 | checkError(err); 170 | expect(res.toString()).to.equal(buf.toString()); 171 | done(); 172 | }); 173 | }); 174 | 175 | it('prompts slave to return its build version', done => { 176 | const buf = [0x0, 0x8, 0x5]; 177 | 178 | bleMeshSerialInterfaceAPI.buildVersionGet((err, res) => { 179 | checkError(err); 180 | expect(res.toString()).to.equal(buf.toString()); 181 | done(); 182 | }); 183 | }); 184 | 185 | it('prompts slave to initialize the mesh', done => { 186 | bleMeshSerialInterfaceAPI.init(MESH_ACCESS_ADDR, MESH_INTERVAL_MIN_MS, MESH_ADVERTISING_CHANNEL, err => { 187 | if (err) { 188 | console.log(err); 189 | assert(false, 'error initializing the device'); 190 | } 191 | done(); 192 | }); 193 | }); 194 | 195 | it('prompts slave to initialize the mesh, already initialize so should fail with status code error', done => { 196 | bleMeshSerialInterfaceAPI.init(MESH_ACCESS_ADDR, MESH_INTERVAL_MIN_MS, MESH_ADVERTISING_CHANNEL, err => { 197 | if (err) { 198 | console.log(err); 199 | done(); 200 | } 201 | assert(false, 'error, should not have succeeded to initialize an already initialized device'); 202 | }); 203 | }); 204 | 205 | it('prompts slave to set the value of handle 0', done => { 206 | bleMeshSerialInterfaceAPI.valueSet(0, [0x00, 0x01, 0x02], err => { 207 | if (err) { 208 | console.log(err); 209 | assert(false, 'error setting the value of a handle on the mesh'); 210 | } 211 | done(); 212 | }); 213 | }); 214 | 215 | it('prompts slave to get the value of handle 0', done => { 216 | const buf = [0, 1, 2]; 217 | 218 | bleMeshSerialInterfaceAPI.valueGet(0, (err, res) => { 219 | checkError(err); 220 | expect(0).to.equal(res.handle); 221 | assert(arraysEqual(buf, res.data), 'incorrect value for handle 0'); 222 | done(); 223 | }); 224 | }); 225 | 226 | it('set the value of a handle, and then get it directly after', done => { 227 | const buf = [0, 1, 2]; 228 | 229 | bleMeshSerialInterfaceAPI.valueSet(0, buf, err => { 230 | if (err) { 231 | console.log(err); 232 | assert(false, 'failed to set the value of handle 0'); 233 | } 234 | 235 | bleMeshSerialInterfaceAPI.valueGet(0, (err, res) => { 236 | checkError(err); 237 | assert(arraysEqual(0, res.handle), 'incorrect handle'); 238 | assert(arraysEqual(buf, res.data), 'incorrect value for handle 0'); 239 | done(); 240 | }); 241 | }); 242 | }); 243 | 244 | it('prompts slave to set the persistence of handle 0', done => { 245 | bleMeshSerialInterfaceAPI.flagSet(0, 1, err => { 246 | if (err) { 247 | console.log(err); 248 | assert(false, 'failed to set the persistence flag of handle 1'); 249 | } 250 | done(); 251 | }); 252 | }); 253 | 254 | it('prompts slave to get the persistence of handle 0', done => { 255 | bleMeshSerialInterfaceAPI.flagGet(0, (err, res) => { 256 | checkError(err); 257 | assert(arraysEqual(res.handle, 0), 'persistence of handle 1 has not been set yet'); 258 | assert(res.flagIndex == 0, 'incorrect flagIndex'); 259 | assert(res.flagValue == 1, 'incorrect flagValue'); 260 | done(); 261 | }); 262 | }); 263 | 264 | it('prompts slave to set the persistence of handle 0', done => { 265 | bleMeshSerialInterfaceAPI.flagSet(0, 0, err => { 266 | if (err) { 267 | console.log(err); 268 | assert(false, 'failed to set the persistence flag of handle 1'); 269 | } 270 | done(); 271 | }); 272 | }); 273 | 274 | it('prompts slave to get the persistence of handle 0', done => { 275 | bleMeshSerialInterfaceAPI.flagGet(0, (err, res) => { 276 | checkError(err); 277 | assert(arraysEqual(res.handle, 0), 'persistence of handle 1 has not been set yet'); 278 | assert(res.flagIndex == 0, 'incorrect flagIndex'); 279 | assert(res.flagValue == 0, 'incorrect flagValue'); 280 | done(); 281 | }); 282 | }); 283 | 284 | it('prompts slave to set the tx event on handle 0', done => { 285 | bleMeshSerialInterfaceAPI.txEventSet(0, 1, err => { 286 | if (err) { 287 | console.log(err); 288 | assert(false, 'failed to set the tx event on handle 0'); 289 | } 290 | done(); 291 | }); 292 | }); 293 | 294 | it('prompts slave to get the tx event of handle 0', done => { 295 | bleMeshSerialInterfaceAPI.txEventGet(0, (err, res) => { 296 | checkError(err); 297 | assert(arraysEqual(res, [0, 0, 0, 1]), 'tx event on handle 0 has not been set yet'); 298 | done(); 299 | }); 300 | }); 301 | 302 | it('prompts slave to enable handle 1', done => { 303 | bleMeshSerialInterfaceAPI.valueEnable(1, err => { 304 | if (err) { 305 | console.log(err); 306 | assert(false, 'failed to enable handle 1'); 307 | } 308 | done(); 309 | }); 310 | }); 311 | 312 | it('prompts slave to disable handle 1', done => { 313 | bleMeshSerialInterfaceAPI.valueDisable(1, err => { 314 | if (err) { 315 | console.log(err); 316 | assert(false, 'failed to disable handle 1'); 317 | } 318 | done(); 319 | }); 320 | }); 321 | 322 | it('prompts slave to return its access address', done => { 323 | bleMeshSerialInterfaceAPI.accessAddrGet((err, res) => { 324 | checkError(err); 325 | assert(arraysEqual(MESH_ACCESS_ADDR, res.accessAddr), 'incorrect mesh access address'); 326 | done(); 327 | }); 328 | }); 329 | 330 | it('prompts slave to return its advertising channel', done => { 331 | bleMeshSerialInterfaceAPI.channelGet((err, res) => { 332 | console.log(res.channel) 333 | checkError(err); 334 | assert(MESH_ADVERTISING_CHANNEL == res.channel, 'incorrect mesh advertising channel'); 335 | done(); 336 | }); 337 | }); 338 | 339 | it('prompts slave to return its minimum rebroadcasting interval', done => { 340 | bleMeshSerialInterfaceAPI.intervalMinGet((err, res) => { 341 | checkError(err); 342 | assert(arraysEqual(MESH_INTERVAL_MIN_MS, res.intervalMin), 'incorrect minimum rebroadcasting interval'); 343 | done(); 344 | }); 345 | }); 346 | 347 | it('prompts slave to stop the mesh from broadcasting', done => { 348 | bleMeshSerialInterfaceAPI.stop(err => { 349 | if (err) { 350 | console.log(err); 351 | assert(false, 'failed to stop the mesh from broadcasting'); 352 | } 353 | done(); 354 | }); 355 | }); 356 | 357 | it('prompts slave to start broadcasting on the mesh', done => { 358 | bleMeshSerialInterfaceAPI.start(err => { 359 | if (err) { 360 | console.log(err); 361 | assert(false, 'failed to start broadcasting on the mesh'); 362 | } 363 | done(); 364 | }); 365 | }); 366 | 367 | it('prompts the slave to perform a radio reset', done => { 368 | bleMeshSerialInterfaceAPI.once('deviceStarted', () => { 369 | done(); 370 | }); 371 | bleMeshSerialInterfaceAPI.radioReset(err => { 372 | if (err) { 373 | console.log(err); 374 | assert(false, 'failed to reset the slave'); 375 | } 376 | }); 377 | }); 378 | 379 | it('prompts slave to echo two bytes back to host', done => { 380 | const buf = [0x01, 0x02]; 381 | 382 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 383 | checkError(err); 384 | assert(arraysEqual(buf, res), 'echoed data is not equal to what was sent'); 385 | done(); 386 | }); 387 | }); 388 | 389 | it('sends dfu data packet', done => { // This should fail since the FW doesn't have a bootloader/isn't configured for DFU. 390 | const buf = new Array(23).fill(0xff); 391 | 392 | bleMeshSerialInterfaceAPI.dfuData(buf, (err, res) => { 393 | if (err) { 394 | console.log(err); 395 | done(); 396 | } 397 | }); 398 | }); 399 | }); 400 | 401 | 402 | describe('nRF Open Mesh self contained serial interface unit tests', () => { 403 | 404 | beforeEach(function(done) { 405 | bleMeshSerialInterfaceAPI.openSerialPort(FIRST_COM_PORT, err => { 406 | 407 | bleMeshSerialInterfaceAPI.once('deviceStarted', data => { 408 | done(); 409 | }); 410 | 411 | bleMeshSerialInterfaceAPI.radioReset(err => { 412 | checkError(err) 413 | }); 414 | }); 415 | }); 416 | 417 | after(function(done) { 418 | bleMeshSerialInterfaceAPI.closeSerialPort(err => { 419 | checkError(err); 420 | done(); 421 | }); 422 | }); 423 | 424 | it('prompts slave to echo one byte back to host', done => { 425 | const buf = [0x01]; 426 | 427 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 428 | checkError(err); 429 | assert(arraysEqual(buf, res), 'echoed data is not equal to what was sent'); 430 | done(); 431 | }); 432 | }); 433 | 434 | it('prompts slave to echo two bytes back to host', done => { 435 | const buf = [0x01, 0x02]; 436 | 437 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 438 | checkError(err); 439 | assert(arraysEqual(buf, res), 'echoed data is not equal to what was sent'); 440 | done(); 441 | }); 442 | }); 443 | }); 444 | 445 | 446 | /*describe('nRF Open Mesh self contained DFU serial interface unit tests', () => { 447 | 448 | beforeEach(function(done) { 449 | const fwid = [0x11, 0x78, 0xfe, 0xff, 0x64, 0, 1, 1, 0x59, 0, 0, 0, 1, 0, 1, 0, 0, 0]; 450 | bleMeshSerialInterfaceAPI.openSerialPort(FIRST_COM_PORT, err => { 451 | 452 | bleMeshSerialInterfaceAPI.once('eventDFU', data => { 453 | assert(arraysEqual(fwid, data), 'incorrect DFU Beacon (FWID) received from device'); 454 | done(); 455 | }); 456 | 457 | bleMeshSerialInterfaceAPI.radioReset(err => { 458 | checkError(err) 459 | }); 460 | }); 461 | }); 462 | 463 | afterEach(function(done) { 464 | bleMeshSerialInterfaceAPI.closeSerialPort(err => { 465 | checkError(err); 466 | bleMeshSerialInterfaceAPI = null; 467 | done(); 468 | }); 469 | }); 470 | 471 | it('prompts slave to echo one byte back to host', done => { 472 | const buf = [0x01]; 473 | 474 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 475 | checkError(err); 476 | assert(arraysEqual(buf, res), 'echoed data is not equal to what was sent'); 477 | done(); 478 | }); 479 | }); 480 | 481 | it('sends dfu fwid data packet', done => { 482 | const fwid = [0xfe, 0xff, 0x64, 0, 1, 1, 0x59, 0, 0, 0, 1, 0, 2, 0, 0, 0]; 483 | const ackFWID = [0xfe, 0xff]; 484 | const expectedEvent = [0xfd, 0xff]; 485 | 486 | bleMeshSerialInterfaceAPI.once('eventDFU', data => { 487 | assert(arraysEqual(expectedEvent, data.slice(2, 4)), 'incorrect DFU event received in protocol'); 488 | done(); 489 | }); 490 | 491 | bleMeshSerialInterfaceAPI.dfuData(fwid, (err, res) => { 492 | checkError(err); 493 | assert(arraysEqual(ackFWID, res), 'incorrect DFU FWID ACK received from device'); 494 | }); 495 | }); 496 | });*/ 497 | 498 | /*describe('BLE Smart Mesh serial interface command unit tests -- tests are not self-contained', () => { 499 | 500 | before(function(done) { 501 | bleMeshSerialInterfaceAPI.openSerialPort(FIRST_COM_PORT, err => { 502 | checkError(err); 503 | bleMeshSerialInterfaceAPI.on('deviceStarted', data => { 504 | }); 505 | done(); 506 | }); 507 | }); 508 | 509 | after(function(done) { 510 | bleMeshSerialInterfaceAPI.closeSerialPort(err => { 511 | checkError(err); 512 | bleMeshSerialInterfaceAPI = null; 513 | done(); 514 | }); 515 | }); 516 | 517 | it('prompts slave to echo one byte back to host', done => { 518 | const buf = [0x01]; 519 | 520 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 521 | checkError(err); 522 | assert(arraysEqual(buf, res), 'echoed data is not equal to what was sent'); 523 | done(); 524 | }); 525 | }); 526 | 527 | it('prompts slave to echo two bytes back to host', done => { 528 | const buf = [0x01, 0x02]; 529 | 530 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 531 | checkError(err); 532 | assert(arraysEqual(buf, res), 'echoed data is not equal to what was sent'); 533 | done(); 534 | }); 535 | }); 536 | 537 | it('prompts slave to echo too many bytes back to host', done => { 538 | const buf = new Array(30).fill(0xff); 539 | 540 | bleMeshSerialInterfaceAPI.echo(buf, (err, res) => { 541 | checkError(err); 542 | assert(arraysEqual(buf, res), 'echoed data is not equal to what was sent'); 543 | done(); 544 | }); 545 | }); 546 | 547 | it('prompts slave to return its build version', done => { 548 | const buf = [1, 0]; 549 | 550 | bleMeshSerialInterfaceAPI.getVersion((err, res) => { 551 | checkError(err); 552 | assert(arraysEqual(buf, res), 'unexpected build version returned'); 553 | done(); 554 | }); 555 | }); 556 | 557 | it('prompts slave to set its key-pair for use in encrypting provisioning data', done => { 558 | bleMeshSerialInterfaceAPI.setKeyPair(err => { 559 | if (err) { 560 | console.log(err); 561 | assert(false, 'failed to set key-pair'); 562 | } 563 | done(); 564 | }); 565 | }); 566 | 567 | it('prompts slave to set its provisioning capabilities', done => { 568 | bleMeshSerialInterfaceAPI.setCapabilities(err => { 569 | if (err) { 570 | console.log(err); 571 | assert(false, 'failed to set key-pair'); 572 | } 573 | done(); 574 | }); 575 | }); 576 | 577 | it('prompts slave to initialize a provisioning context', done => { 578 | const contextID = 2; 579 | 580 | bleMeshSerialInterfaceAPI.provInitContext(contextID, (err, res) => { 581 | checkError(err); 582 | assert(arraysEqual(contextID, res[0]), 'failed to initialize a provisioning context'); 583 | done(); 584 | }); 585 | }); 586 | 587 | it('prompts slave to start scanning for un-provisioned devices', done => { 588 | bleMeshSerialInterfaceAPI.provStartScan(err => { 589 | if (err) { 590 | console.log(err); 591 | assert(false, 'failed to start scanning'); 592 | } 593 | done(); 594 | }); 595 | }); 596 | 597 | it('prompts slave to stop scanning for un-provisioned devices', done => { 598 | bleMeshSerialInterfaceAPI.provStopScan(err => { 599 | if (err) { 600 | console.log(err); 601 | assert(false, 'failed to stop scanning'); 602 | } 603 | done(); 604 | }); 605 | }); 606 | 607 | }); 608 | */ --------------------------------------------------------------------------------