diff --git a/blockchain/build/contracts/ProofOfPhysicalAddress.json b/blockchain/build/contracts/ProofOfPhysicalAddress.json index 9488a702..c3ec6e41 100644 --- a/blockchain/build/contracts/ProofOfPhysicalAddress.json +++ b/blockchain/build/contracts/ProofOfPhysicalAddress.json @@ -759,18 +759,18 @@ "type": "function" } ], - "bytecode": "0x6060604052341561000f57600080fd5b6040516020806148ce83398101604052808051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506147b08061011e6000396000f30060606040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063058317761461016f5780630e666e49146101db578063238ac9331461022c5780632c2a178e146102815780634028a0f11461045e57806369ffa08a1461049b5780636c19e783146104f35780637b1039991461052c578063853828b61461058157806389bff0b9146105965780638da5cb5b14610606578063a5db3d021461065b578063a87430ba146106de578063a91ee0dc1461072b578063ae9b051c14610764578063b4778e2d14610787578063b55fbd04146109f2578063bff1f9e114610aa4578063c0fe077f14610ae1578063c228251b14610b60578063c94f2c1b14610cc9578063cfad527714610d16578063d673560414610d53578063d956be1014610e05578063de3d702e14610e6a578063e585332e14610eb7578063f0486ab414611069578063feea9808146110c3575b600080fd5b341561017a57600080fd5b6101af600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061119b565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b34156101e657600080fd5b610212600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112ad565b604051808215151515815260200191505060405180910390f35b341561023757600080fd5b61023f6112fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61045c600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080359060200190919080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611321565b005b341561046957600080fd5b610471611b60565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b34156104a657600080fd5b6104f1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b7a565b005b34156104fe57600080fd5b61052a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e7f565b005b341561053757600080fd5b61053f611f81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561058c57600080fd5b610594611fa7565b005b34156105a157600080fd5b6105da600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506120a2565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b341561061157600080fd5b6106196121bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066657600080fd5b6106dc600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506121e1565b005b34156106e957600080fd5b610715600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612584565b6040518082815260200191505060405180910390f35b341561073657600080fd5b610762600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506125a2565b005b341561076f57600080fd5b61078560048080359060200190919050506126a4565b005b341561079257600080fd5b6107c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612789565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019080838360005b838110156108175780820151818401526020810190506107fc565b50505050905090810190601f1680156108445780820380516001836020036101000a031916815260200191505b5086810385528a818151815260200191508051906020019080838360005b8381101561087d578082015181840152602081019050610862565b50505050905090810190601f1680156108aa5780820380516001836020036101000a031916815260200191505b50868103845289818151815260200191508051906020019080838360005b838110156108e35780820151818401526020810190506108c8565b50505050905090810190601f1680156109105780820380516001836020036101000a031916815260200191505b50868103835288818151815260200191508051906020019080838360005b8381101561094957808201518184015260208101905061092e565b50505050905090810190601f1680156109765780820380516001836020036101000a031916815260200191505b50868103825287818151815260200191508051906020019080838360005b838110156109af578082015181840152602081019050610994565b50505050905090810190601f1680156109dc5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b34156109fd57600080fd5b610a29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d1e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a69578082015181840152602081019050610a4e565b50505050905090810190601f168015610a965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610aaf57600080fd5b610ab7612ec7565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610aec57600080fd5b610b25600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050612ee1565b604051808515151515815260200184815260200183151515158152602001826000191660001916815260200194505050505060405180910390f35b3415610b6b57600080fd5b610cc7600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061306b565b005b3415610cd457600080fd5b610d00600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613781565b6040518082815260200191505060405180910390f35b3415610d2157600080fd5b610d29613808565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610d5e57600080fd5b610d8a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613822565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dca578082015181840152602081019050610daf565b50505050905090810190601f168015610df75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610e1057600080fd5b610e5060048080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050613988565b604051808215151515815260200191505060405180910390f35b3415610e7557600080fd5b610ea1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613b24565b6040518082815260200191505060405180910390f35b3415610ec257600080fd5b61103d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613b73565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b341561107457600080fd5b6110a9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613d65565b604051808215151515815260200191505060405180910390f35b34156110ce57600080fd5b611103600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050614031565b60405180806020018581526020018481526020018360001916600019168152602001828103825286818151815260200191508051906020019080838360005b8381101561115d578082015181840152602081019050611142565b50505050905090810190601f16801561118a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b600080600080856111ab816112ad565b15156111b657600080fd5b600091505b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508210156112955785600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561125857fe5b90600052602060002090600902016006015414156112885760018261127d8985613d65565b9450945094506112a4565b81806001019250506111bb565b60008060008191509450945094505b50509250925092565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154119050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061132c61443e565b60008e5111151561133c57600080fd5b60008d5111151561134c57600080fd5b60008c5111151561135c57600080fd5b60008b5111151561136c57600080fd5b60008a5111151561137c57600080fd5b6000895111151561138c57600080fd5b87341015151561139b57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905010151561140e57600080fd5b338e8e8e8e8e8e8e8e604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189805190602001908083835b60208310151561148d5780518252602082019150602081019050602083039250611468565b6001836020036101000a03801982511681845116808217855250505050505090500188805190602001908083835b6020831015156114e057805182526020820191506020810190506020830392506114bb565b6001836020036101000a03801982511681845116808217855250505050505090500187805190602001908083835b602083101515611533578051825260208201915060208101905060208303925061150e565b6001836020036101000a03801982511681845116808217855250505050505090500186805190602001908083835b6020831015156115865780518252602082019150602081019050602083039250611561565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b6020831015156115d957805182526020820191506020810190506020830392506115b4565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b60208310151561162c5780518252602082019150602081019050602083039250611607565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001826000191660001916815260200199505050505050505050506040518091039020925061168383878787613988565b151561168e57600080fd5b611697336112ad565b156116c3576116aa338e8e8e8e8e613b73565b90505080925050811515156116be57600080fd5b61174e565b43600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506001600460008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b8d81600001819052508c81602001819052508b81604001819052508a8160600181905250898160800181905250888160a00181905250438160c00181815250508681610100019060001916908160001916815250508c8c8c8c8c6040518086805190602001908083835b6020831015156117dd57805182526020820191506020810190506020830392506117b8565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515611830578051825260208201915060208101905060208303925061180b565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515611883578051825260208201915060208101905060208303925061185e565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b6020831015156118d657805182526020820191506020810190506020830392506118b1565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156119295780518252602082019150602081019050602083039250611904565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405180910390208160e001906000191690816000191681525050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180548060010182816119c191906144b5565b9160005260206000209060090201600083909190915060008201518160000190805190602001906119f39291906144e7565b506020820151816001019080519060200190611a109291906144e7565b506040820151816002019080519060200190611a2d9291906144e7565b506060820151816003019080519060200190611a4a9291906144e7565b506080820151816004019080519060200190611a679291906144e7565b5060a0820151816005019080519060200190611a849291906144e7565b5060c0820151816006015560e0820151816007019060001916905561010082015181600801906000191690555050506001600460088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe7c91dadc713049bfb35a5b137524bc4546369091366d48bb185433127b9f26b8260e0015160405180826000191660001916815260200191505060405180910390a25050505050505050505050505050565b600460109054906101000a900467ffffffffffffffff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611c1457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611c5057600080fd5b8391508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515611cf657600080fd5b6102c65a03f11515611d0757600080fd5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611dbe57600080fd5b6102c65a03f11515611dcf57600080fd5b50505060405180519050507fbade9c303f5a400b6706b3cbea82197948f018cd82138ea9bafcada571831967848483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eda57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fee87a28570c895f7da676d522308fff544b84e34ac47fcb36b53f5ef848e5e3281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200257600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111151561202857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156120a057600080fd5b565b600080600080856120b2816112ad565b15156120bd57600080fd5b600091505b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508210156121a4578560001916600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561216357fe5b9060005260206000209060090201600701546000191614156121975760018261218c8985613d65565b9450945094506121b3565b81806001019250506120c2565b60008060008191509450945094505b50509250925092565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000336121f3816112ad565b15156121fe57600080fd5b60008a5111151561220e57600080fd5b338a604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182805190602001908083835b6020831015156122865780518252602082019150602081019050602083039250612261565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051809103902095506122c2868a8a8a613988565b15156122cd57600080fd5b612339338b6040518082805190602001908083835b60208310151561230757805182526020820191506020810190506020830392506122e2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020612ee1565b8095508196508297508398505050505084151561235557600080fd5b8215151561236257600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639918925d338473__PhysicalAddressClaim__________________63deb21fa2436000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b151561241557600080fd5b6102c65a03f4151561242657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200182600019166000191681526020019350505050600060405180830381600087803b15156124cb57600080fd5b6102c65a03f115156124dc57600080fd5b5050506001600460108282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fcb5c5ab258abc7b8cafdc09ca97a09fa4d98a46a9a83f0462061e78fcb198cb98360405180826000191660001916815260200191505060405180910390a250505050505050505050565b60036020528060005260406000206000915090508060000154905081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125fd57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffd9ec64cd3990d58d48617f2750d82ea8ea105c84989b7f77c5242178ba4aeb81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126ff57600080fd5b803073ffffffffffffffffffffffffffffffffffffffff16311015151561272557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561278657600080fd5b50565b612791614567565b612799614567565b6127a1614567565b6127a9614567565b6127b1614567565b866127bb816112ad565b15156127c657600080fd5b8787600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110151561281b57600080fd5b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018981548110151561286a57fe5b9060005260206000209060090201600101600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a8154811015156128ca57fe5b9060005260206000209060090201600201600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b81548110151561292a57fe5b9060005260206000209060090201600301600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018c81548110151561298a57fe5b9060005260206000209060090201600401600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018d8154811015156129ea57fe5b9060005260206000209060090201600501848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a905780601f10612a6557610100808354040283529160200191612a90565b820191906000526020600020905b815481529060010190602001808311612a7357829003601f168201915b50505050509450838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b2c5780601f10612b0157610100808354040283529160200191612b2c565b820191906000526020600020905b815481529060010190602001808311612b0f57829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612bc85780601f10612b9d57610100808354040283529160200191612bc8565b820191906000526020600020905b815481529060010190602001808311612bab57829003601f168201915b50505050509250818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c645780601f10612c3957610100808354040283529160200191612c64565b820191906000526020600020905b815481529060010190602001808311612c4757829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d005780601f10612cd557610100808354040283529160200191612d00565b820191906000526020600020905b815481529060010190602001808311612ce357829003601f168201915b50505050509050975097509750975097505050509295509295909350565b612d26614567565b600082612d32816112ad565b1515612d3d57600080fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905091505b6000821115612eac57818060019003925050612da28483613d65565b15612ea757600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515612df657fe5b90600052602060002090600902016000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e9b5780601f10612e7057610100808354040283529160200191612e9b565b820191906000526020600020905b815481529060010190602001808311612e7e57829003601f168201915b50505050509250612ec0565b612d86565b602060405190810160405280600081525092505b5050919050565b600460009054906101000a900467ffffffffffffffff1681565b600080600080600086612ef3816112ad565b1515612efe57600080fd5b600091505b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050821015613048578660001916600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010183815481101515612fa457fe5b90600052602060002090600902016008015460001916141561303b57600182612fcd8a85613d65565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018581548110151561301c57fe5b9060005260206000209060090201600701549550955095509550613060565b8180600101925050612f03565b60008060008082925080600102905095509550955095505b505092959194509250565b6000806000806000803361307e816112ad565b151561308957600080fd5b613097338d8d8d8d8d613b73565b8097508198508299505050508615156130af57600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101868154811015156130fe57fe5b9060005260206000209060090201600701549350600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7508ec73033876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561321257600080fd5b6102c65a03f1151561322357600080fd5b505050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905092508591505b6001830382101561346457600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600183018154811015156132cf57fe5b9060005260206000209060090201600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561332c57fe5b90600052602060002090600902016000820181600001908054600181600116156101000203166002900461336192919061457b565b506001820181600101908054600181600116156101000203166002900461338992919061457b565b50600282018160020190805460018160011615610100020316600290046133b192919061457b565b50600382018160030190805460018160011615610100020316600290046133d992919061457b565b506004820181600401908054600181600116156101000203166002900461340192919061457b565b506005820181600501908054600181600116156101000203166002900461342992919061457b565b506006820154816006015560078201548160070190600019169055600882015481600801906000191690559050508180600101925050613272565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600184038154811015156134b657fe5b9060005260206000209060090201600080820160006134d59190614602565b6001820160006134e59190614602565b6002820160006134f59190614602565b6003820160006135059190614602565b6004820160006135159190614602565b6005820160006135259190614602565b6006820160009055600782016000905560088201600090555050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805480919060019003613594919061464a565b506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050141561368657600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061363b919061467c565b50506004600081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b6004600881819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050841561371d576004601081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b3373ffffffffffffffffffffffffffffffffffffffff167ff205ce75791437944181c7d5b0da9fc3f03171ae90ec93e4dc4f3ddf2982eb018560405180826000191660001916815260200191505060405180910390a2505050505050505050505050565b6000806000809150600090505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110156137fe576137e58482613d65565b156137f1576001820191505b808060010191505061378e565b8192505050919050565b600460089054906101000a900467ffffffffffffffff1681565b61382a614567565b81613834816112ad565b151561383f57600080fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050038154811015156138d657fe5b90600052602060002090600902016000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561397b5780601f106139505761010080835404028352916020019161397b565b820191906000526020600020905b81548152906001019060200180831161395e57829003601f168201915b5050505050915050919050565b60006139926146a0565b60006040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250915081876040518083805190602001908083835b602083101515613a0357805182526020820191506020810190506020830392506139de565b6001836020036101000a03801982511681845116808217855250505050505090500182600019166000191681526020019250505060405180910390209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600182888888604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515613af857600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff161492505050949350505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490509050919050565b60008060008089613b83816112ad565b1515613b8e57600080fd5b89898989896040518086805190602001908083835b602083101515613bc85780518252602082019150602081019050602083039250613ba3565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515613c1b5780518252602082019150602081019050602083039250613bf6565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515613c6e5780518252602082019150602081019050602083039250613c49565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515613cc15780518252602082019150602081019050602083039250613c9c565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083101515613d145780518252602082019150602081019050602083039250613cef565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405180910390209150613d518b836120a2565b945094509450505096509650969350505050565b600080600084613d74816112ad565b1515613d7f57600080fd5b8585600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905081101515613dd457600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515613e2357fe5b90600052602060002090600902016007015494506000600102856000191614151515613e4b57fe5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1661eff308a886000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b1515613f5457600080fd5b6102c65a03f11515613f6557600080fd5b505050604051805190509350600060010284600019161415613f8a5760009550614026565b600073__PhysicalAddressClaim__________________637194df0d866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505060206040518083038186803b151561400757600080fd5b6102c65a03f4151561401857600080fd5b505050604051805190501195505b505050505092915050565b614039614567565b60008060008060008761404b816112ad565b151561405657600080fd5b8888600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050811015156140ab57600080fd5b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a8154811015156140fa57fe5b906000526020600020906009020160070154945073__PhysicalAddressClaim__________________637194df0d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1661eff308f8a6000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b151561423157600080fd5b6102c65a03f1151561424257600080fd5b505050604051805190506000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505060206040518083038186803b15156142ac57600080fd5b6102c65a03f415156142bd57600080fd5b505050604051805190509350600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a81548110151561431857fe5b9060005260206000209060090201600001600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b81548110151561437857fe5b9060005260206000209060090201600601548587838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156144215780601f106143f657610100808354040283529160200191614421565b820191906000526020600020905b81548152906001019060200180831161440457829003601f168201915b505050505093509850985098509850505050505092959194509250565b610120604051908101604052806144536146b4565b81526020016144606146b4565b815260200161446d6146b4565b815260200161447a6146b4565b81526020016144876146b4565b81526020016144946146b4565b81526020016000815260200160008019168152602001600080191681525090565b8154818355818115116144e2576009028160090283600052602060002091820191016144e191906146c8565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061452857805160ff1916838001178555614556565b82800160010185558215614556579182015b8281111561455557825182559160200191906001019061453a565b5b509050614563919061475f565b5090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106145b457805485556145f1565b828001600101855582156145f157600052602060002091601f016020900482015b828111156145f05782548255916001019190600101906145d5565b5b5090506145fe919061475f565b5090565b50805460018160011615610100020316600290046000825580601f106146285750614647565b601f016020900490600052602060002090810190614646919061475f565b5b50565b8154818355818115116146775760090281600902836000526020600020918201910161467691906146c8565b5b505050565b508054600082556009029060005260206000209081019061469d91906146c8565b50565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b61475c91905b8082111561475857600080820160006146e79190614602565b6001820160006146f79190614602565b6002820160006147079190614602565b6003820160006147179190614602565b6004820160006147279190614602565b6005820160006147379190614602565b600682016000905560078201600090556008820160009055506009016146ce565b5090565b90565b61478191905b8082111561477d576000816000905550600101614765565b5090565b905600a165627a7a72305820d30fcefe5bc51a61caeedf49275621760a76e47e3431b1cc6147b4a16f1e97fb0029", - "deployedBytecode": "0x60606040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063058317761461016f5780630e666e49146101db578063238ac9331461022c5780632c2a178e146102815780634028a0f11461045e57806369ffa08a1461049b5780636c19e783146104f35780637b1039991461052c578063853828b61461058157806389bff0b9146105965780638da5cb5b14610606578063a5db3d021461065b578063a87430ba146106de578063a91ee0dc1461072b578063ae9b051c14610764578063b4778e2d14610787578063b55fbd04146109f2578063bff1f9e114610aa4578063c0fe077f14610ae1578063c228251b14610b60578063c94f2c1b14610cc9578063cfad527714610d16578063d673560414610d53578063d956be1014610e05578063de3d702e14610e6a578063e585332e14610eb7578063f0486ab414611069578063feea9808146110c3575b600080fd5b341561017a57600080fd5b6101af600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061119b565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b34156101e657600080fd5b610212600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112ad565b604051808215151515815260200191505060405180910390f35b341561023757600080fd5b61023f6112fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61045c600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080359060200190919080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611321565b005b341561046957600080fd5b610471611b60565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b34156104a657600080fd5b6104f1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b7a565b005b34156104fe57600080fd5b61052a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e7f565b005b341561053757600080fd5b61053f611f81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561058c57600080fd5b610594611fa7565b005b34156105a157600080fd5b6105da600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506120a2565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b341561061157600080fd5b6106196121bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066657600080fd5b6106dc600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506121e1565b005b34156106e957600080fd5b610715600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612584565b6040518082815260200191505060405180910390f35b341561073657600080fd5b610762600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506125a2565b005b341561076f57600080fd5b61078560048080359060200190919050506126a4565b005b341561079257600080fd5b6107c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612789565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019080838360005b838110156108175780820151818401526020810190506107fc565b50505050905090810190601f1680156108445780820380516001836020036101000a031916815260200191505b5086810385528a818151815260200191508051906020019080838360005b8381101561087d578082015181840152602081019050610862565b50505050905090810190601f1680156108aa5780820380516001836020036101000a031916815260200191505b50868103845289818151815260200191508051906020019080838360005b838110156108e35780820151818401526020810190506108c8565b50505050905090810190601f1680156109105780820380516001836020036101000a031916815260200191505b50868103835288818151815260200191508051906020019080838360005b8381101561094957808201518184015260208101905061092e565b50505050905090810190601f1680156109765780820380516001836020036101000a031916815260200191505b50868103825287818151815260200191508051906020019080838360005b838110156109af578082015181840152602081019050610994565b50505050905090810190601f1680156109dc5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b34156109fd57600080fd5b610a29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d1e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a69578082015181840152602081019050610a4e565b50505050905090810190601f168015610a965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610aaf57600080fd5b610ab7612ec7565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610aec57600080fd5b610b25600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050612ee1565b604051808515151515815260200184815260200183151515158152602001826000191660001916815260200194505050505060405180910390f35b3415610b6b57600080fd5b610cc7600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061306b565b005b3415610cd457600080fd5b610d00600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613781565b6040518082815260200191505060405180910390f35b3415610d2157600080fd5b610d29613808565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610d5e57600080fd5b610d8a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613822565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dca578082015181840152602081019050610daf565b50505050905090810190601f168015610df75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610e1057600080fd5b610e5060048080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050613988565b604051808215151515815260200191505060405180910390f35b3415610e7557600080fd5b610ea1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613b24565b6040518082815260200191505060405180910390f35b3415610ec257600080fd5b61103d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613b73565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b341561107457600080fd5b6110a9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613d65565b604051808215151515815260200191505060405180910390f35b34156110ce57600080fd5b611103600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050614031565b60405180806020018581526020018481526020018360001916600019168152602001828103825286818151815260200191508051906020019080838360005b8381101561115d578082015181840152602081019050611142565b50505050905090810190601f16801561118a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b600080600080856111ab816112ad565b15156111b657600080fd5b600091505b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508210156112955785600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561125857fe5b90600052602060002090600902016006015414156112885760018261127d8985613d65565b9450945094506112a4565b81806001019250506111bb565b60008060008191509450945094505b50509250925092565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154119050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061132c61443e565b60008e5111151561133c57600080fd5b60008d5111151561134c57600080fd5b60008c5111151561135c57600080fd5b60008b5111151561136c57600080fd5b60008a5111151561137c57600080fd5b6000895111151561138c57600080fd5b87341015151561139b57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905010151561140e57600080fd5b338e8e8e8e8e8e8e8e604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189805190602001908083835b60208310151561148d5780518252602082019150602081019050602083039250611468565b6001836020036101000a03801982511681845116808217855250505050505090500188805190602001908083835b6020831015156114e057805182526020820191506020810190506020830392506114bb565b6001836020036101000a03801982511681845116808217855250505050505090500187805190602001908083835b602083101515611533578051825260208201915060208101905060208303925061150e565b6001836020036101000a03801982511681845116808217855250505050505090500186805190602001908083835b6020831015156115865780518252602082019150602081019050602083039250611561565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b6020831015156115d957805182526020820191506020810190506020830392506115b4565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b60208310151561162c5780518252602082019150602081019050602083039250611607565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001826000191660001916815260200199505050505050505050506040518091039020925061168383878787613988565b151561168e57600080fd5b611697336112ad565b156116c3576116aa338e8e8e8e8e613b73565b90505080925050811515156116be57600080fd5b61174e565b43600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506001600460008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b8d81600001819052508c81602001819052508b81604001819052508a8160600181905250898160800181905250888160a00181905250438160c00181815250508681610100019060001916908160001916815250508c8c8c8c8c6040518086805190602001908083835b6020831015156117dd57805182526020820191506020810190506020830392506117b8565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515611830578051825260208201915060208101905060208303925061180b565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515611883578051825260208201915060208101905060208303925061185e565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b6020831015156118d657805182526020820191506020810190506020830392506118b1565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156119295780518252602082019150602081019050602083039250611904565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405180910390208160e001906000191690816000191681525050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180548060010182816119c191906144b5565b9160005260206000209060090201600083909190915060008201518160000190805190602001906119f39291906144e7565b506020820151816001019080519060200190611a109291906144e7565b506040820151816002019080519060200190611a2d9291906144e7565b506060820151816003019080519060200190611a4a9291906144e7565b506080820151816004019080519060200190611a679291906144e7565b5060a0820151816005019080519060200190611a849291906144e7565b5060c0820151816006015560e0820151816007019060001916905561010082015181600801906000191690555050506001600460088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe7c91dadc713049bfb35a5b137524bc4546369091366d48bb185433127b9f26b8260e0015160405180826000191660001916815260200191505060405180910390a25050505050505050505050505050565b600460109054906101000a900467ffffffffffffffff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611c1457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611c5057600080fd5b8391508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515611cf657600080fd5b6102c65a03f11515611d0757600080fd5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611dbe57600080fd5b6102c65a03f11515611dcf57600080fd5b50505060405180519050507fbade9c303f5a400b6706b3cbea82197948f018cd82138ea9bafcada571831967848483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eda57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fee87a28570c895f7da676d522308fff544b84e34ac47fcb36b53f5ef848e5e3281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200257600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111151561202857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156120a057600080fd5b565b600080600080856120b2816112ad565b15156120bd57600080fd5b600091505b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508210156121a4578560001916600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561216357fe5b9060005260206000209060090201600701546000191614156121975760018261218c8985613d65565b9450945094506121b3565b81806001019250506120c2565b60008060008191509450945094505b50509250925092565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000336121f3816112ad565b15156121fe57600080fd5b60008a5111151561220e57600080fd5b338a604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182805190602001908083835b6020831015156122865780518252602082019150602081019050602083039250612261565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051809103902095506122c2868a8a8a613988565b15156122cd57600080fd5b612339338b6040518082805190602001908083835b60208310151561230757805182526020820191506020810190506020830392506122e2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020612ee1565b8095508196508297508398505050505084151561235557600080fd5b8215151561236257600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639918925d338473__PhysicalAddressClaim__________________63deb21fa2436000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b151561241557600080fd5b6102c65a03f4151561242657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200182600019166000191681526020019350505050600060405180830381600087803b15156124cb57600080fd5b6102c65a03f115156124dc57600080fd5b5050506001600460108282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fcb5c5ab258abc7b8cafdc09ca97a09fa4d98a46a9a83f0462061e78fcb198cb98360405180826000191660001916815260200191505060405180910390a250505050505050505050565b60036020528060005260406000206000915090508060000154905081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125fd57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffd9ec64cd3990d58d48617f2750d82ea8ea105c84989b7f77c5242178ba4aeb81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126ff57600080fd5b803073ffffffffffffffffffffffffffffffffffffffff16311015151561272557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561278657600080fd5b50565b612791614567565b612799614567565b6127a1614567565b6127a9614567565b6127b1614567565b866127bb816112ad565b15156127c657600080fd5b8787600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110151561281b57600080fd5b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018981548110151561286a57fe5b9060005260206000209060090201600101600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a8154811015156128ca57fe5b9060005260206000209060090201600201600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b81548110151561292a57fe5b9060005260206000209060090201600301600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018c81548110151561298a57fe5b9060005260206000209060090201600401600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018d8154811015156129ea57fe5b9060005260206000209060090201600501848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a905780601f10612a6557610100808354040283529160200191612a90565b820191906000526020600020905b815481529060010190602001808311612a7357829003601f168201915b50505050509450838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b2c5780601f10612b0157610100808354040283529160200191612b2c565b820191906000526020600020905b815481529060010190602001808311612b0f57829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612bc85780601f10612b9d57610100808354040283529160200191612bc8565b820191906000526020600020905b815481529060010190602001808311612bab57829003601f168201915b50505050509250818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c645780601f10612c3957610100808354040283529160200191612c64565b820191906000526020600020905b815481529060010190602001808311612c4757829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d005780601f10612cd557610100808354040283529160200191612d00565b820191906000526020600020905b815481529060010190602001808311612ce357829003601f168201915b50505050509050975097509750975097505050509295509295909350565b612d26614567565b600082612d32816112ad565b1515612d3d57600080fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905091505b6000821115612eac57818060019003925050612da28483613d65565b15612ea757600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515612df657fe5b90600052602060002090600902016000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e9b5780601f10612e7057610100808354040283529160200191612e9b565b820191906000526020600020905b815481529060010190602001808311612e7e57829003601f168201915b50505050509250612ec0565b612d86565b602060405190810160405280600081525092505b5050919050565b600460009054906101000a900467ffffffffffffffff1681565b600080600080600086612ef3816112ad565b1515612efe57600080fd5b600091505b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050821015613048578660001916600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010183815481101515612fa457fe5b90600052602060002090600902016008015460001916141561303b57600182612fcd8a85613d65565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018581548110151561301c57fe5b9060005260206000209060090201600701549550955095509550613060565b8180600101925050612f03565b60008060008082925080600102905095509550955095505b505092959194509250565b6000806000806000803361307e816112ad565b151561308957600080fd5b613097338d8d8d8d8d613b73565b8097508198508299505050508615156130af57600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101868154811015156130fe57fe5b9060005260206000209060090201600701549350600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7508ec73033876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561321257600080fd5b6102c65a03f1151561322357600080fd5b505050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905092508591505b6001830382101561346457600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600183018154811015156132cf57fe5b9060005260206000209060090201600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561332c57fe5b90600052602060002090600902016000820181600001908054600181600116156101000203166002900461336192919061457b565b506001820181600101908054600181600116156101000203166002900461338992919061457b565b50600282018160020190805460018160011615610100020316600290046133b192919061457b565b50600382018160030190805460018160011615610100020316600290046133d992919061457b565b506004820181600401908054600181600116156101000203166002900461340192919061457b565b506005820181600501908054600181600116156101000203166002900461342992919061457b565b506006820154816006015560078201548160070190600019169055600882015481600801906000191690559050508180600101925050613272565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600184038154811015156134b657fe5b9060005260206000209060090201600080820160006134d59190614602565b6001820160006134e59190614602565b6002820160006134f59190614602565b6003820160006135059190614602565b6004820160006135159190614602565b6005820160006135259190614602565b6006820160009055600782016000905560088201600090555050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805480919060019003613594919061464a565b506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050141561368657600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061363b919061467c565b50506004600081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b6004600881819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050841561371d576004601081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b3373ffffffffffffffffffffffffffffffffffffffff167ff205ce75791437944181c7d5b0da9fc3f03171ae90ec93e4dc4f3ddf2982eb018560405180826000191660001916815260200191505060405180910390a2505050505050505050505050565b6000806000809150600090505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110156137fe576137e58482613d65565b156137f1576001820191505b808060010191505061378e565b8192505050919050565b600460089054906101000a900467ffffffffffffffff1681565b61382a614567565b81613834816112ad565b151561383f57600080fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050038154811015156138d657fe5b90600052602060002090600902016000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561397b5780601f106139505761010080835404028352916020019161397b565b820191906000526020600020905b81548152906001019060200180831161395e57829003601f168201915b5050505050915050919050565b60006139926146a0565b60006040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250915081876040518083805190602001908083835b602083101515613a0357805182526020820191506020810190506020830392506139de565b6001836020036101000a03801982511681845116808217855250505050505090500182600019166000191681526020019250505060405180910390209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600182888888604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515613af857600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff161492505050949350505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490509050919050565b60008060008089613b83816112ad565b1515613b8e57600080fd5b89898989896040518086805190602001908083835b602083101515613bc85780518252602082019150602081019050602083039250613ba3565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515613c1b5780518252602082019150602081019050602083039250613bf6565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515613c6e5780518252602082019150602081019050602083039250613c49565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515613cc15780518252602082019150602081019050602083039250613c9c565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083101515613d145780518252602082019150602081019050602083039250613cef565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405180910390209150613d518b836120a2565b945094509450505096509650969350505050565b600080600084613d74816112ad565b1515613d7f57600080fd5b8585600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905081101515613dd457600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515613e2357fe5b90600052602060002090600902016007015494506000600102856000191614151515613e4b57fe5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1661eff308a886000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b1515613f5457600080fd5b6102c65a03f11515613f6557600080fd5b505050604051805190509350600060010284600019161415613f8a5760009550614026565b600073__PhysicalAddressClaim__________________637194df0d866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505060206040518083038186803b151561400757600080fd5b6102c65a03f4151561401857600080fd5b505050604051805190501195505b505050505092915050565b614039614567565b60008060008060008761404b816112ad565b151561405657600080fd5b8888600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050811015156140ab57600080fd5b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a8154811015156140fa57fe5b906000526020600020906009020160070154945073__PhysicalAddressClaim__________________637194df0d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1661eff308f8a6000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b151561423157600080fd5b6102c65a03f1151561424257600080fd5b505050604051805190506000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505060206040518083038186803b15156142ac57600080fd5b6102c65a03f415156142bd57600080fd5b505050604051805190509350600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a81548110151561431857fe5b9060005260206000209060090201600001600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b81548110151561437857fe5b9060005260206000209060090201600601548587838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156144215780601f106143f657610100808354040283529160200191614421565b820191906000526020600020905b81548152906001019060200180831161440457829003601f168201915b505050505093509850985098509850505050505092959194509250565b610120604051908101604052806144536146b4565b81526020016144606146b4565b815260200161446d6146b4565b815260200161447a6146b4565b81526020016144876146b4565b81526020016144946146b4565b81526020016000815260200160008019168152602001600080191681525090565b8154818355818115116144e2576009028160090283600052602060002091820191016144e191906146c8565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061452857805160ff1916838001178555614556565b82800160010185558215614556579182015b8281111561455557825182559160200191906001019061453a565b5b509050614563919061475f565b5090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106145b457805485556145f1565b828001600101855582156145f157600052602060002091601f016020900482015b828111156145f05782548255916001019190600101906145d5565b5b5090506145fe919061475f565b5090565b50805460018160011615610100020316600290046000825580601f106146285750614647565b601f016020900490600052602060002090810190614646919061475f565b5b50565b8154818355818115116146775760090281600902836000526020600020918201910161467691906146c8565b5b505050565b508054600082556009029060005260206000209081019061469d91906146c8565b50565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b61475c91905b8082111561475857600080820160006146e79190614602565b6001820160006146f79190614602565b6002820160006147079190614602565b6003820160006147179190614602565b6004820160006147279190614602565b6005820160006147379190614602565b600682016000905560078201600090556008820160009055506009016146ce565b5090565b90565b61478191905b8082111561477d576000816000905550600101614765565b5090565b905600a165627a7a72305820d30fcefe5bc51a61caeedf49275621760a76e47e3431b1cc6147b4a16f1e97fb0029", - "sourceMap": "171:13011:3:-;;;614:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:10;686:5;;:18;;;;;;;;;;;;;;;;;;723:5;;;;;;;;;;;714:6;;:14;;;;;;;;;;;;;;;;;;781:9;738:8;;:53;;;;;;;;;;;;;;;;;;614:184;171:13011;;;;;;", - "deployedSourceMap": "171:13011:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:455;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;235:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8890:1830;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1029:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12858:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2295:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2854:146;;;;;;;;;;;;;;5558:466;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;209:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11989:863;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2428:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;2653:161;;;;;;;;;;;;;;;;;;;;;;;;;;7469:591;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6397:374:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:24:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4317:694;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10726:1257;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7138:325;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;995:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6082:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1870:289:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6873:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5106:357;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3144:528;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8066:797;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:455:3;3895:4;3901:7;3910:4;3935:10;3878:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;3948:1;3935:14;;3930:252;3956:5;:13;3962:6;3956:13;;;;;;;;;;;;;;;:31;;:38;;;;3951:2;:43;3930:252;;;4073:13;4020:5;:13;4026:6;4020:13;;;;;;;;;;;;;;;:31;;4052:2;4020:35;;;;;;;;;;;;;;;;;;;;:49;;;:66;4016:156;;;4114:4;4120:2;4124:32;4145:6;4153:2;4124:20;:32::i;:::-;4106:51;;;;;;;;4016:156;3996:4;;;;;;;3930:252;;;4199:5;4206:1;4209:5;4191:24;;;;;;;;;1686:1;3767:455;;;;;;;:::o;3006:132::-;3071:4;3129:1;3099:5;:13;3105:6;3099:13;;;;;;;;;;;;;;;:27;;;:31;3091:40;;3006:132;;;:::o;235:21::-;;;;;;;;;;;;;:::o;8890:1830::-;9520:12;9917:10;10206:25;;:::i;:::-;9183:1;9168:4;9162:18;:22;9154:31;;;;;;;;9227:1;9209:7;9203:21;:25;9195:34;;;;;;;;9269:1;9253:5;9247:19;:23;9239:32;;;;;;;;9310:1;9295:4;9289:18;:22;9281:31;;;;;;;;9355:1;9336:8;9330:22;:26;9322:35;;;;;;;;9395:1;9381:3;9375:17;:21;9367:30;;;;;;;;9428:8;9415:9;:21;;9407:30;;;;;;;;9500:8;9455:5;:17;9461:10;9455:17;;;;;;;;;;;;;;;:35;;:42;;;;:53;9447:62;;;;;;;;9558:10;9582:4;9600:7;9621:5;9640:4;9658:8;9680:3;9697:8;9719:20;9535:214;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9520:229:3;;9767:37;9781:4;9787;9793;9799;9767:13;:37::i;:::-;9759:46;;;;;;;;9820:22;9831:10;9820;:22::i;:::-;9816:380;;;9955:69;9976:10;9988:7;9997:5;10004:4;10010:8;10020:3;9955:20;:69::i;:::-;9941:83;;;;;;;10048:5;10047:6;10039:15;;;;;;;;9816:380;;;10143:12;10109:5;:17;10115:10;10109:17;;;;;;;;;;;;;;;:31;;:46;;;;10184:1;10170:10;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9816:380;10252:4;10242:2;:7;;:14;;;;10279:7;10266:2;:10;;:20;;;;10307:5;10296:2;:8;;:16;;;;10332:4;10322:2;:7;;:14;;;;10360:8;10346:2;:11;;:22;;;;10387:3;10378:2;:6;;:12;;;;10419;10400:2;:16;;:31;;;;;10467:20;10441:2;:23;;:46;;;;;;;;;;;;;10529:7;10538:5;10545:4;10551:8;10561:3;10519:46;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;10497:2:3;:19;;:68;;;;;;;;;;;;;10575:5;:17;10581:10;10575:17;;;;;;;;;;;;;;;:35;;:44;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;10616:2;10575:44;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10648:1;10630:14;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10681:10;10660:53;;;10693:2;:19;;;10660:53;;;;;;;;;;;;;;;;;;;;;;;;8890:1830;;;;;;;;;;;;;;:::o;1029:28::-;;;;;;;;;;;;;:::o;12858:322::-;13011:11;13048:15;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;12961:1;12943:20;;:6;:20;;;;12935:29;;;;;;;;12997:1;12982:17;;:3;:17;;;;12974:26;;;;;;;;13031:6;13011:27;;13066:5;:15;;;13082:4;13066:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13048:39;;13097:5;:14;;;13112:3;13117:7;13097:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13135:38;13152:6;13160:3;13165:7;13135:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12858:322;;;;:::o;2295:127::-;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;2369:9;2360:6;;:18;;;;;;;;;;;;;;;;;;2388:27;2405:9;2388:27;;;;;;;;;;;;;;;;;;;;;;2295:127;:::o;262:47::-;;;;;;;;;;;;;:::o;2854:146::-;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;2944:1;2928:4;2920:21;;;:25;2912:34;;;;;;;;2956:5;;;;;;;;;;;:14;;:37;2979:4;2971:21;;;2956:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2854:146::o;5558:466::-;5691:4;5697:7;5706:4;5731:10;5675:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;5744:1;5731:14;;5726:258;5752:5;:13;5758:6;5752:13;;;;;;;;;;;;;;;:31;;:38;;;;5747:2;:43;5726:258;;;5872:16;5816:72;;;:5;:13;5822:6;5816:13;;;;;;;;;;;;;;;:31;;5848:2;5816:35;;;;;;;;;;;;;;;;;;;;:52;;;:72;;;;5812:162;;;5916:4;5922:2;5926:32;5947:6;5955:2;5926:20;:32::i;:::-;5908:51;;;;;;;;5812:162;5792:4;;;;;;;5726:258;;;6001:5;6008:1;6011:5;5993:24;;;;;;;;;1686:1;5558:466;;;;;;;:::o;209:20::-;;;;;;;;;;;;;:::o;11989:863::-;12195:12;12355:10;12375:7;12392:14;12416:24;12110:10;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;12182:1;12150:21;12144:35;:39;12136:48;;;;;;;;12233:10;12257:21;12210:78;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;12195:93:3;;12306:37;12320:4;12326;12332;12338;12306:13;:37::i;:::-;12298:46;;;;;;;;12493:109;12536:10;12570:21;12560:32;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;12493:29:3;:109::i;:::-;12450:152;;;;;;;;;;;;;;;;12620:5;12612:14;;;;;;;;12645:9;12644:10;12636:19;;;;;;;;12666:8;;;;;;;;;;;:17;;;12684:10;12696:16;12714:20;:27;12742:12;12714:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12666:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:1;12766:14;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12816:10;12796:49;;;12828:16;12796:49;;;;;;;;;;;;;;;;;;;;;;;;11989:863;;;;;;;;;;:::o;905:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;2428:172::-;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;2540:11;2497:8;;:55;;;;;;;;;;;;;;;;;;2562:31;2581:11;2562:31;;;;;;;;;;;;;;;;;;;;;;2428:172;:::o;2653:161::-;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;2762:9;2745:4;2737:21;;;:34;;2729:43;;;;;;;;2782:5;;;;;;;;;;;:14;;:25;2797:9;2782:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2653:161;:::o;7469:591::-;7623:14;;:::i;:::-;7639:12;;:::i;:::-;7653:11;;:::i;:::-;7666:15;;:::i;:::-;7683:10;;:::i;:::-;7564:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;7583:6;7591:12;1791:5;:13;1797:6;1791:13;;;;;;;;;;;;;;;:31;;:38;;;;1776:12;:53;1768:62;;;;;;;;7730:5;:13;7736:6;7730:13;;;;;;;;;;;;;;;:31;;7762:12;7730:45;;;;;;;;;;;;;;;;;;;;:53;;7797:5;:13;7803:6;7797:13;;;;;;;;;;;;;;;:31;;7829:12;7797:45;;;;;;;;;;;;;;;;;;;;:51;;7862:5;:13;7868:6;7862:13;;;;;;;;;;;;;;;:31;;7894:12;7862:45;;;;;;;;;;;;;;;;;;;;:50;;7926:5;:13;7932:6;7926:13;;;;;;;;;;;;;;;:31;;7958:12;7926:45;;;;;;;;;;;;;;;;;;;;:54;;7994:5;:13;8000:6;7994:13;;;;;;;;;;;;;;;:31;;8026:12;7994:45;;;;;;;;;;;;;;;;;;;;:49;;7709:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:1;;7469:591;;;;;;;;;:::o;6397:374::-;6497:6;;:::i;:::-;6524:10;6480:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;6537:5;:13;6543:6;6537:13;;;;;;;;;;;;;;;:31;;:38;;;;6524:51;;6519:227;6582:1;6577:2;:6;6519:227;;;6600:4;;;;;;;;6622:32;6643:6;6651:2;6622:20;:32::i;:::-;6618:118;;;6681:5;:13;6687:6;6681:13;;;;;;;;;;;;;;;:31;;6713:2;6681:35;;;;;;;;;;;;;;;;;;;;:40;;6674:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6618:118;6519:227;;;6755:9;;;;;;;;;;;;;;;1686:1;6397:374;;;;;:::o;965:24::-;;;;;;;;;;;;;:::o;4317:694::-;4504:4;4510:7;4519:4;4525:7;4553:10;4480:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;4566:1;4553:14;;4548:418;4574:5;:13;4580:6;4574:13;;;;;;;;;;;;;;;:31;;:38;;;;4569:2;:43;4548:418;;;4698:20;4638:80;;;:5;:13;4644:6;4638:13;;;;;;;;;;;;;;;:31;;4670:2;4638:35;;;;;;;;;;;;;;;;;;;;:56;;;:80;;;;4634:322;;;4767:4;4793:2;4817:32;4838:6;4846:2;4817:20;:32::i;:::-;4871:5;:13;4877:6;4871:13;;;;;;;;;;;;;;;:31;;4903:2;4871:35;;;;;;;;;;;;;;;;;;;;:52;;;4738:203;;;;;;;;;;4634:322;4614:4;;;;;;;4548:418;;;4983:5;4990:1;4993:5;5000:3;4975:29;;;;;;;;;;;;;;;;1686:1;4317:694;;;;;;;;;:::o;10726:1257::-;10882:10;10902:13;10925:14;11081:24;11344:14;11419:9;10856:10;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;10977:69;10998:10;11010:7;11019:5;11026:4;11032:8;11042:3;10977:20;:69::i;:::-;10949:97;;;;;;;;;;;;11064:5;11056:14;;;;;;;;11108:5;:17;11114:10;11108:17;;;;;;;;;;;;;;;:35;;11144:5;11108:42;;;;;;;;;;;;;;;;;;;;:59;;;11081:86;;11177:8;;;;;;;;;;;:20;;;11219:4;11238:10;11262:16;11177:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11361:5;:17;11367:10;11361:17;;;;;;;;;;;;;;;:35;;:42;;;;11344:59;;11431:5;11419:17;;11414:151;11451:1;11442:6;:10;11438:1;:14;11414:151;;;11514:5;:17;11520:10;11514:17;;;;;;;;;;;;;;;:35;;11552:1;11550;:3;11514:40;;;;;;;;;;;;;;;;;;;;11473:5;:17;11479:10;11473:17;;;;;;;;;;;;;;;:35;;11509:1;11473:38;;;;;;;;;;;;;;;;;;;;:81;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11454:3;;;;;;;11414:151;;;11582:5;:17;11588:10;11582:17;;;;;;;;;;;;;;;:35;;11627:1;11618:6;:10;11582:47;;;;;;;;;;;;;;;;;;;;;11575:54;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11639:5;:17;11645:10;11639:17;;;;;;;;;;;;;;;:35;;:44;;;;;;;;;;;;:::i;:::-;;11744:1;11698:5;:17;11704:10;11698:17;;;;;;;;;;;;;;;:35;;:42;;;;:47;11694:128;;;11768:5;:17;11774:10;11768:17;;;;;;;;;;;;;;;;11761:24;;;;;;;;;;;;;;:::i;:::-;;;11799:10;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11694:128;11832:14;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11862:9;11858:56;;;11887:14;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11858:56;11947:10;11924:52;;;11959:16;11924:52;;;;;;;;;;;;;;;;;;;;;;;;10726:1257;;;;;;;;;;;;:::o;7138:325::-;7220:7;7243:9;7271:10;7255:1;7243:13;;7284:1;7271:14;;7266:173;7292:5;:13;7298:6;7292:13;;;;;;;;;;;;;;;:31;;:38;;;;7287:2;:43;7266:173;;;7356:32;7377:6;7385:2;7356:20;:32::i;:::-;7352:77;;;7413:1;7408:6;;;;7352:77;7332:4;;;;;;;7266:173;;;7455:1;7448:8;;7138:325;;;;;:::o;995:28::-;;;;;;;;;;;;;:::o;6082:214::-;6182:6;;:::i;:::-;6165;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;6211:5;:13;6217:6;6211:13;;;;;;;;;;;;;;;:31;;6282:1;6243:5;:13;6249:6;6243:13;;;;;;;;;;;;;;;:31;;:38;;;;:40;6211:73;;;;;;;;;;;;;;;;;;;;:78;;6204:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6082:214;;;;:::o;1870:289::-;1967:4;1987:19;;:::i;:::-;2053:16;1987:56;;;;;;;;;;;;;;;;;;;;2082:6;2090:4;2072:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2053:42:3;;2145:6;;;;;;;;;;;2113:38;;:28;2123:8;2133:1;2136;2139;2113:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2105:47;;1870:289;;;;;;;;:::o;6873:157::-;6955:7;6985:5;:13;6991:6;6985:13;;;;;;;;;;;;;;;:31;;:38;;;;6978:45;;6873:157;;;:::o;5106:357::-;5276:4;5282:7;5291:4;5311:24;5260:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;5348:7;5357:5;5364:4;5370:8;5380:3;5338:46;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;5311:73:3;;5401:55;5431:6;5439:16;5401:29;:55::i;:::-;5394:62;;;;;;5106:357;;;;;;;;;;;;:::o;3144:528::-;3298:4;3318:24;3460:13;3248:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;3267:6;3275:12;1791:5;:13;1797:6;1791:13;;;;;;;;;;;;;;;:31;;:38;;;;1776:12;:53;1768:62;;;;;;;;3345:5;:13;3351:6;3345:13;;;;;;;;;;;;;;;:31;;3377:12;3345:45;;;;;;;;;;;;;;;;;;;;:62;;;3318:89;;3445:3;3425:23;;:16;:23;;;;;3418:31;;;;;;3476:8;;;;;;;;;;;:17;;;3502:4;3509:6;3517:16;3476:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3460:74;;3558:1;3549:10;;:5;:10;;;;3545:53;;;3582:5;3575:12;;;;3545:53;3664:1;3615:20;:39;3655:5;3615:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:50;3608:57;;1840:1;1686;;3144:528;;;;;;;:::o;8066:797::-;8224:11;;:::i;:::-;8245:21;8276:25;8311:24;8352:25;8453:26;8165:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;8184:6;8192:12;1791:5;:13;1797:6;1791:13;;;;;;;;;;;;;;;:31;;:38;;;;1776:12;:53;1768:62;;;;;;;;8380:5;:13;8386:6;8380:13;;;;;;;;;;;;;;;:31;;8412:12;8380:45;;;;;;;;;;;;;;;;;;;;:62;;;8352:90;;8482:20;:39;8522:8;;;;;;;;;;;:17;;;8561:4;8580:6;8600:17;8522:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8482:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8453:175;;8660:5;:13;8666:6;8660:13;;;;;;;;;;;;;;;:31;;8692:12;8660:45;;;;;;;;;;;;;;;;;;;;:50;;8724:5;:13;8730:6;8724:13;;;;;;;;;;;;;;;:31;;8756:12;8724:45;;;;;;;;;;;;;;;;;;;;:59;;;8797:18;8829:17;8639:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:1;;8066:797;;;;;;;;;;:::o;171:13011::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\n\nimport \"./EthereumClaimsRegistryInterface.sol\";\nimport \"./PhysicalAddressClaim.sol\";\nimport \"./ERC20.sol\";\n\n\n// Checks -> Effects -> Interactions\ncontract ProofOfPhysicalAddress {\n address public owner;\n address public signer;\n EthereumClaimsRegistryInterface public registry;\n\n // Main structures:\n struct PhysicalAddress {\n string name;\n\n string country;\n string state;\n string city;\n string location;\n string zip;\n\n uint256 creationBlock;\n bytes32 keccakIdentifier;\n bytes32 confirmationCodeSha3;\n }\n\n function ProofOfPhysicalAddress(address _registry) public\n {\n owner = msg.sender;\n signer = owner;\n registry = EthereumClaimsRegistryInterface(_registry);\n }\n\n struct User {\n uint256 creationBlock;\n PhysicalAddress[] physicalAddresses;\n }\n\n mapping (address => User) public users;\n\n // Stats:\n\n uint64 public totalUsers;\n uint64 public totalAddresses;\n uint64 public totalConfirmed;\n\n // Events:\n\n event LogSignerChanged(address newSigner);\n event LogRegistryChanged(address newRegistry);\n event LogAddressRegistered(address indexed wallet, bytes32 keccakIdentifier);\n event LogAddressUnregistered(address indexed wallet, bytes32 keccakIdentifier);\n event LogAddressConfirmed(address indexed wallet, bytes32 keccakIdentifier);\n event LogClaimedTokens(address token, address to, uint256 amount);\n\n // Modifiers:\n modifier onlyOwner() {\n require(msg.sender == owner);\n _;\n }\n\n modifier checkUserExists(address wallet) {\n require(userExists(wallet));\n _;\n }\n\n modifier validIndex(address wallet, uint256 addressIndex) {\n require(addressIndex < users[wallet].physicalAddresses.length);\n _;\n }\n\n // Helpers:\n function signerIsValid(bytes32 data, uint8 v, bytes32 r, bytes32 s)\n public constant returns (bool)\n {\n bytes memory prefix = \"\\x19Ethereum Signed Message:\\n32\";\n bytes32 prefixed = keccak256(prefix, data);\n return (ecrecover(prefixed, v, r, s) == signer);\n }\n\n // Methods:\n // set address that is used on server-side to calculate signatures\n // and on contract-side to verify them\n function setSigner(address newSigner) public onlyOwner {\n signer = newSigner;\n LogSignerChanged(newSigner);\n }\n\n function setRegistry(address newRegistry) public onlyOwner {\n registry = EthereumClaimsRegistryInterface(newRegistry);\n LogRegistryChanged(newRegistry);\n }\n\n // withdraw specified amount of eth in wei\n function withdrawSome(uint256 amountWei)\n public onlyOwner\n {\n require(address(this).balance >= amountWei);\n owner.transfer(amountWei);\n }\n\n // withdraw all available eth\n function withdrawAll()\n public onlyOwner\n {\n require(address(this).balance > 0);\n owner.transfer(address(this).balance);\n }\n\n function userExists(address wallet)\n public constant returns (bool)\n {\n return (users[wallet].creationBlock > 0);\n }\n\n function userAddressConfirmed(address wallet, uint256 addressIndex)\n public constant checkUserExists(wallet) validIndex(wallet, addressIndex) returns (bool)\n {\n bytes32 keccakIdentifier = users[wallet].physicalAddresses[addressIndex].keccakIdentifier;\n\n assert(keccakIdentifier != 0x0);\n\n bytes32 claim = registry.getClaim(address(this), wallet, keccakIdentifier);\n\n if (claim == 0) {\n return false;\n }\n\n return PhysicalAddressClaim.decodeConfirmation(claim) > 0;\n }\n\n // returns (found/not found, index if found/0 if not found, confirmed/not confirmed)\n function userAddressByCreationBlock(address wallet, uint256 creationBlock)\n public constant checkUserExists(wallet) returns (bool, uint256, bool)\n {\n for (uint256 ai = 0; ai < users[wallet].physicalAddresses.length; ai++) {\n if (users[wallet].physicalAddresses[ai].creationBlock == creationBlock) {\n return (true, ai, userAddressConfirmed(wallet, ai));\n }\n }\n return (false, 0, false);\n }\n\n // returns (found/not found, index if found/0 if not found, confirmed/not confirmed)\n function userAddressByConfirmationCode(\n address wallet,\n bytes32 confirmationCodeSha3\n )\n public\n constant\n checkUserExists(wallet)\n returns(bool, uint256, bool, bytes32)\n {\n for (uint256 ai = 0; ai < users[wallet].physicalAddresses.length; ai++) {\n if (users[wallet].physicalAddresses[ai].confirmationCodeSha3 == confirmationCodeSha3) {\n return (\n true,\n ai,\n userAddressConfirmed(wallet, ai),\n users[wallet].physicalAddresses[ai].keccakIdentifier\n );\n }\n }\n return (false, 0, false, 0x0);\n }\n\n // returns (found/not found, index if found/0 if not found, confirmed/not confirmed)\n function userAddressByAddress(address wallet, string country, string state, string city, string location, string zip)\n public constant checkUserExists(wallet) returns(bool, uint256, bool)\n {\n bytes32 keccakIdentifier = keccak256(country, state, city, location, zip);\n return userAddressByKeccakIdentifier(wallet, keccakIdentifier);\n }\n\n // returns (found/not found, index if found/0 if not found, confirmed/not confirmed)\n function userAddressByKeccakIdentifier(address wallet, bytes32 keccakIdentifier)\n public constant checkUserExists(wallet) returns(bool, uint256, bool)\n {\n for (uint256 ai = 0; ai < users[wallet].physicalAddresses.length; ai++) {\n if (users[wallet].physicalAddresses[ai].keccakIdentifier == keccakIdentifier) {\n return (true, ai, userAddressConfirmed(wallet, ai));\n }\n }\n return (false, 0, false);\n }\n\n // returns last name submitted to PoPA contract\n function userLastSubmittedName(address wallet)\n public constant checkUserExists(wallet) returns (string)\n {\n return users[wallet].physicalAddresses[users[wallet].physicalAddresses.length-1].name;\n }\n\n // returns name from the last confirmed address. If no addresses were confirmed returns ''\n function userLastConfirmedName(address wallet)\n public constant checkUserExists(wallet) returns (string)\n {\n for (uint256 ai = users[wallet].physicalAddresses.length; ai > 0;) {\n ai--;\n if (userAddressConfirmed(wallet, ai)) {\n return users[wallet].physicalAddresses[ai].name;\n }\n }\n return \"\";\n }\n\n // returns how many addresses there are in PoPA contract. If user does not exist, returns 0\n function userSubmittedAddressesCount(address wallet)\n public constant returns (uint256)\n {\n return users[wallet].physicalAddresses.length;\n }\n\n // returns how many addresses from PoPA contract are confirmed. If user does not exist, returns 0\n function userConfirmedAddressesCount(address wallet)\n public constant returns (uint256)\n {\n uint256 c = 0;\n for (uint256 ai = 0; ai < users[wallet].physicalAddresses.length; ai++) {\n if (userAddressConfirmed(wallet, ai)) {\n c += 1;\n }\n }\n return c;\n }\n\n function userAddress(address wallet, uint256 addressIndex)\n public constant checkUserExists(wallet) validIndex(wallet, addressIndex) returns (\n string country, string state, string city, string location, string zip)\n {\n return (\n users[wallet].physicalAddresses[addressIndex].country,\n users[wallet].physicalAddresses[addressIndex].state,\n users[wallet].physicalAddresses[addressIndex].city,\n users[wallet].physicalAddresses[addressIndex].location,\n users[wallet].physicalAddresses[addressIndex].zip\n );\n }\n\n function userAddressInfo(address wallet, uint256 addressIndex)\n public constant checkUserExists(wallet) validIndex(wallet, addressIndex) returns (\n string name,\n uint256 creationBlock,\n uint256 confirmationBlock,\n bytes32 keccakIdentifier\n ) {\n bytes32 _keccakIdentifier = users[wallet].physicalAddresses[addressIndex].keccakIdentifier;\n\n uint256 _confirmationBlock = PhysicalAddressClaim.decodeConfirmation(registry.getClaim(\n address(this),\n wallet,\n _keccakIdentifier)\n );\n\n return (\n users[wallet].physicalAddresses[addressIndex].name,\n users[wallet].physicalAddresses[addressIndex].creationBlock,\n _confirmationBlock,\n _keccakIdentifier\n );\n }\n\n // Main methods:\n function registerAddress(\n string name,\n string country, string state, string city, string location, string zip,\n uint256 priceWei,\n bytes32 confirmationCodeSha3, uint8 sigV, bytes32 sigR, bytes32 sigS)\n public payable\n {\n require(bytes(name).length > 0);\n require(bytes(country).length > 0);\n require(bytes(state).length > 0);\n require(bytes(city).length > 0);\n require(bytes(location).length > 0);\n require(bytes(zip).length > 0);\n require(msg.value >= priceWei);\n require(users[msg.sender].physicalAddresses.length < 2**256-1);\n\n bytes32 data = keccak256(\n msg.sender,\n name,\n country,\n state,\n city,\n location,\n zip,\n priceWei,\n confirmationCodeSha3\n );\n require(signerIsValid(data, sigV, sigR, sigS));\n\n if (userExists(msg.sender)) {\n // check if this address is already registered\n bool found;\n (found, , ) = userAddressByAddress(msg.sender, country, state, city, location, zip);\n\n require(!found);\n } else {\n // new user\n users[msg.sender].creationBlock = block.number;\n\n totalUsers += 1;\n }\n\n PhysicalAddress memory pa;\n\n pa.name = name;\n pa.country = country;\n pa.state = state;\n pa.city = city;\n pa.location = location;\n pa.zip = zip;\n pa.creationBlock = block.number;\n pa.confirmationCodeSha3 = confirmationCodeSha3;\n pa.keccakIdentifier = keccak256(country, state, city, location, zip);\n users[msg.sender].physicalAddresses.push(pa);\n\n totalAddresses += 1;\n\n LogAddressRegistered(msg.sender, pa.keccakIdentifier);\n }\n\n function unregisterAddress(string country, string state, string city, string location, string zip)\n public checkUserExists(msg.sender)\n {\n bool found;\n uint256 index;\n bool confirmed;\n (found, index, confirmed) = userAddressByAddress(msg.sender, country, state, city, location, zip);\n require(found);\n\n bytes32 keccakIdentifier = users[msg.sender].physicalAddresses[index].keccakIdentifier;\n registry.removeClaim(\n address(this),\n msg.sender,\n keccakIdentifier\n );\n\n // Remove physical address from list\n uint256 length = users[msg.sender].physicalAddresses.length;\n\n for (uint256 i = index; i < length - 1; i++) {\n users[msg.sender].physicalAddresses[i] = users[msg.sender].physicalAddresses[i+1];\n }\n\n delete users[msg.sender].physicalAddresses[length - 1];\n users[msg.sender].physicalAddresses.length--;\n\n if (users[msg.sender].physicalAddresses.length == 0) {\n delete users[msg.sender];\n totalUsers--;\n }\n\n totalAddresses--;\n if (confirmed) {\n totalConfirmed--;\n }\n\n LogAddressUnregistered(msg.sender, keccakIdentifier);\n }\n\n function confirmAddress(string confirmationCodePlain, uint8 sigV, bytes32 sigR, bytes32 sigS)\n public checkUserExists(msg.sender)\n {\n require(bytes(confirmationCodePlain).length > 0);\n\n bytes32 data = keccak256(\n msg.sender,\n confirmationCodePlain\n );\n require(signerIsValid(data, sigV, sigR, sigS));\n\n bool found;\n uint ai;\n bool confirmed;\n bytes32 keccakIdentifier;\n (found, ai, confirmed, keccakIdentifier) = userAddressByConfirmationCode(\n msg.sender,\n keccak256(confirmationCodePlain)\n );\n require(found);\n require(!confirmed);\n\n registry.setClaim(msg.sender, keccakIdentifier, PhysicalAddressClaim.encode(block.number));\n totalConfirmed += 1;\n\n LogAddressConfirmed(msg.sender, keccakIdentifier);\n }\n\n function claimTokens(address _token, address _to) public onlyOwner {\n require(_token != address(0));\n require(_to != address(0));\n\n ERC20 token = ERC20(_token);\n uint256 balance = token.balanceOf(this);\n token.transfer(_to, balance);\n LogClaimedTokens(_token, _to, balance);\n }\n}\n", + "bytecode": "0x6060604052341561000f57600080fd5b6040516020806147e283398101604052808051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506146c48061011e6000396000f30060606040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063058317761461016f5780630e666e49146101db578063238ac9331461022c5780632c2a178e146102815780634028a0f11461045e57806369ffa08a1461049b5780636c19e783146104f35780637b1039991461052c578063853828b61461058157806389bff0b9146105965780638da5cb5b14610606578063a5db3d021461065b578063a87430ba146106de578063a91ee0dc1461072b578063ae9b051c14610764578063b4778e2d14610787578063b55fbd04146109f2578063bff1f9e114610aa4578063c0fe077f14610ae1578063c228251b14610b60578063c94f2c1b14610cc9578063cfad527714610d16578063d673560414610d53578063d956be1014610e05578063de3d702e14610e6a578063e585332e14610eb7578063f0486ab414611069578063feea9808146110c3575b600080fd5b341561017a57600080fd5b6101af600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061119b565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b34156101e657600080fd5b610212600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112ad565b604051808215151515815260200191505060405180910390f35b341561023757600080fd5b61023f6112fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61045c600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080359060200190919080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611321565b005b341561046957600080fd5b610471611b60565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b34156104a657600080fd5b6104f1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b7a565b005b34156104fe57600080fd5b61052a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e7f565b005b341561053757600080fd5b61053f611f81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561058c57600080fd5b610594611fa7565b005b34156105a157600080fd5b6105da600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506120a2565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b341561061157600080fd5b6106196121bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066657600080fd5b6106dc600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506121e1565b005b34156106e957600080fd5b610715600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612584565b6040518082815260200191505060405180910390f35b341561073657600080fd5b610762600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506125a2565b005b341561076f57600080fd5b61078560048080359060200190919050506126a4565b005b341561079257600080fd5b6107c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612789565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019080838360005b838110156108175780820151818401526020810190506107fc565b50505050905090810190601f1680156108445780820380516001836020036101000a031916815260200191505b5086810385528a818151815260200191508051906020019080838360005b8381101561087d578082015181840152602081019050610862565b50505050905090810190601f1680156108aa5780820380516001836020036101000a031916815260200191505b50868103845289818151815260200191508051906020019080838360005b838110156108e35780820151818401526020810190506108c8565b50505050905090810190601f1680156109105780820380516001836020036101000a031916815260200191505b50868103835288818151815260200191508051906020019080838360005b8381101561094957808201518184015260208101905061092e565b50505050905090810190601f1680156109765780820380516001836020036101000a031916815260200191505b50868103825287818151815260200191508051906020019080838360005b838110156109af578082015181840152602081019050610994565b50505050905090810190601f1680156109dc5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b34156109fd57600080fd5b610a29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d1e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a69578082015181840152602081019050610a4e565b50505050905090810190601f168015610a965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610aaf57600080fd5b610ab7612ec7565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610aec57600080fd5b610b25600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050612ee1565b604051808515151515815260200184815260200183151515158152602001826000191660001916815260200194505050505060405180910390f35b3415610b6b57600080fd5b610cc7600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061306b565b005b3415610cd457600080fd5b610d00600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613695565b6040518082815260200191505060405180910390f35b3415610d2157600080fd5b610d2961371c565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610d5e57600080fd5b610d8a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613736565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dca578082015181840152602081019050610daf565b50505050905090810190601f168015610df75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610e1057600080fd5b610e5060048080356000191690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190505061389c565b604051808215151515815260200191505060405180910390f35b3415610e7557600080fd5b610ea1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613a38565b6040518082815260200191505060405180910390f35b3415610ec257600080fd5b61103d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613a87565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b341561107457600080fd5b6110a9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613c79565b604051808215151515815260200191505060405180910390f35b34156110ce57600080fd5b611103600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613f45565b60405180806020018581526020018481526020018360001916600019168152602001828103825286818151815260200191508051906020019080838360005b8381101561115d578082015181840152602081019050611142565b50505050905090810190601f16801561118a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b600080600080856111ab816112ad565b15156111b657600080fd5b600091505b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508210156112955785600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561125857fe5b90600052602060002090600902016006015414156112885760018261127d8985613c79565b9450945094506112a4565b81806001019250506111bb565b60008060008191509450945094505b50509250925092565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154119050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061132c614352565b60008e5111151561133c57600080fd5b60008d5111151561134c57600080fd5b60008c5111151561135c57600080fd5b60008b5111151561136c57600080fd5b60008a5111151561137c57600080fd5b6000895111151561138c57600080fd5b87341015151561139b57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905010151561140e57600080fd5b338e8e8e8e8e8e8e8e604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189805190602001908083835b60208310151561148d5780518252602082019150602081019050602083039250611468565b6001836020036101000a03801982511681845116808217855250505050505090500188805190602001908083835b6020831015156114e057805182526020820191506020810190506020830392506114bb565b6001836020036101000a03801982511681845116808217855250505050505090500187805190602001908083835b602083101515611533578051825260208201915060208101905060208303925061150e565b6001836020036101000a03801982511681845116808217855250505050505090500186805190602001908083835b6020831015156115865780518252602082019150602081019050602083039250611561565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b6020831015156115d957805182526020820191506020810190506020830392506115b4565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b60208310151561162c5780518252602082019150602081019050602083039250611607565b6001836020036101000a03801982511681845116808217855250505050505090500183815260200182600019166000191681526020019950505050505050505050604051809103902092506116838387878761389c565b151561168e57600080fd5b611697336112ad565b156116c3576116aa338e8e8e8e8e613a87565b90505080925050811515156116be57600080fd5b61174e565b43600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506001600460008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b8d81600001819052508c81602001819052508b81604001819052508a8160600181905250898160800181905250888160a00181905250438160c00181815250508681610100019060001916908160001916815250508c8c8c8c8c6040518086805190602001908083835b6020831015156117dd57805182526020820191506020810190506020830392506117b8565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515611830578051825260208201915060208101905060208303925061180b565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515611883578051825260208201915060208101905060208303925061185e565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b6020831015156118d657805182526020820191506020810190506020830392506118b1565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156119295780518252602082019150602081019050602083039250611904565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405180910390208160e001906000191690816000191681525050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180548060010182816119c191906143c9565b9160005260206000209060090201600083909190915060008201518160000190805190602001906119f39291906143fb565b506020820151816001019080519060200190611a109291906143fb565b506040820151816002019080519060200190611a2d9291906143fb565b506060820151816003019080519060200190611a4a9291906143fb565b506080820151816004019080519060200190611a679291906143fb565b5060a0820151816005019080519060200190611a849291906143fb565b5060c0820151816006015560e0820151816007019060001916905561010082015181600801906000191690555050506001600460088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe7c91dadc713049bfb35a5b137524bc4546369091366d48bb185433127b9f26b8260e0015160405180826000191660001916815260200191505060405180910390a25050505050505050505050505050565b600460109054906101000a900467ffffffffffffffff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611c1457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611c5057600080fd5b8391508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515611cf657600080fd5b6102c65a03f11515611d0757600080fd5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611dbe57600080fd5b6102c65a03f11515611dcf57600080fd5b50505060405180519050507fbade9c303f5a400b6706b3cbea82197948f018cd82138ea9bafcada571831967848483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eda57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fee87a28570c895f7da676d522308fff544b84e34ac47fcb36b53f5ef848e5e3281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200257600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111151561202857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156120a057600080fd5b565b600080600080856120b2816112ad565b15156120bd57600080fd5b600091505b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508210156121a4578560001916600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561216357fe5b9060005260206000209060090201600701546000191614156121975760018261218c8985613c79565b9450945094506121b3565b81806001019250506120c2565b60008060008191509450945094505b50509250925092565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000336121f3816112ad565b15156121fe57600080fd5b60008a5111151561220e57600080fd5b338a604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182805190602001908083835b6020831015156122865780518252602082019150602081019050602083039250612261565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051809103902095506122c2868a8a8a61389c565b15156122cd57600080fd5b612339338b6040518082805190602001908083835b60208310151561230757805182526020820191506020810190506020830392506122e2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020612ee1565b8095508196508297508398505050505084151561235557600080fd5b8215151561236257600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639918925d338473__PhysicalAddressClaim__________________63deb21fa2436000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b151561241557600080fd5b6102c65a03f4151561242657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200182600019166000191681526020019350505050600060405180830381600087803b15156124cb57600080fd5b6102c65a03f115156124dc57600080fd5b5050506001600460108282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fcb5c5ab258abc7b8cafdc09ca97a09fa4d98a46a9a83f0462061e78fcb198cb98360405180826000191660001916815260200191505060405180910390a250505050505050505050565b60036020528060005260406000206000915090508060000154905081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125fd57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffd9ec64cd3990d58d48617f2750d82ea8ea105c84989b7f77c5242178ba4aeb81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126ff57600080fd5b803073ffffffffffffffffffffffffffffffffffffffff16311015151561272557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561278657600080fd5b50565b61279161447b565b61279961447b565b6127a161447b565b6127a961447b565b6127b161447b565b866127bb816112ad565b15156127c657600080fd5b8787600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110151561281b57600080fd5b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018981548110151561286a57fe5b9060005260206000209060090201600101600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a8154811015156128ca57fe5b9060005260206000209060090201600201600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b81548110151561292a57fe5b9060005260206000209060090201600301600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018c81548110151561298a57fe5b9060005260206000209060090201600401600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018d8154811015156129ea57fe5b9060005260206000209060090201600501848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a905780601f10612a6557610100808354040283529160200191612a90565b820191906000526020600020905b815481529060010190602001808311612a7357829003601f168201915b50505050509450838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b2c5780601f10612b0157610100808354040283529160200191612b2c565b820191906000526020600020905b815481529060010190602001808311612b0f57829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612bc85780601f10612b9d57610100808354040283529160200191612bc8565b820191906000526020600020905b815481529060010190602001808311612bab57829003601f168201915b50505050509250818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c645780601f10612c3957610100808354040283529160200191612c64565b820191906000526020600020905b815481529060010190602001808311612c4757829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d005780601f10612cd557610100808354040283529160200191612d00565b820191906000526020600020905b815481529060010190602001808311612ce357829003601f168201915b50505050509050975097509750975097505050509295509295909350565b612d2661447b565b600082612d32816112ad565b1515612d3d57600080fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905091505b6000821115612eac57818060019003925050612da28483613c79565b15612ea757600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515612df657fe5b90600052602060002090600902016000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e9b5780601f10612e7057610100808354040283529160200191612e9b565b820191906000526020600020905b815481529060010190602001808311612e7e57829003601f168201915b50505050509250612ec0565b612d86565b602060405190810160405280600081525092505b5050919050565b600460009054906101000a900467ffffffffffffffff1681565b600080600080600086612ef3816112ad565b1515612efe57600080fd5b600091505b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050821015613048578660001916600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010183815481101515612fa457fe5b90600052602060002090600902016008015460001916141561303b57600182612fcd8a85613c79565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018581548110151561301c57fe5b9060005260206000209060090201600701549550955095509550613060565b8180600101925050612f03565b60008060008082925080600102905095509550955095505b505092959194509250565b60008060008060003361307d816112ad565b151561308857600080fd5b613096338c8c8c8c8c613a87565b8096508197508298505050508515156130ae57600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101858154811015156130fd57fe5b9060005260206000209060090201600701549250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7508ec73033866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561321157600080fd5b6102c65a03f1151561322257600080fd5b505050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490509150600182038514151561345457600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600183038154811015156132cb57fe5b9060005260206000209060090201600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018681548110151561332857fe5b90600052602060002090600902016000820181600001908054600181600116156101000203166002900461335d92919061448f565b506001820181600101908054600181600116156101000203166002900461338592919061448f565b50600282018160020190805460018160011615610100020316600290046133ad92919061448f565b50600382018160030190805460018160011615610100020316600290046133d592919061448f565b50600482018160040190805460018160011615610100020316600290046133fd92919061448f565b506005820181600501908054600181600116156101000203166002900461342592919061448f565b506006820154816006015560078201548160070190600019169055600882015481600801906000191690559050505b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054809190600190036134a99190614516565b506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050141561359b57600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006135509190614548565b50506004600081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b6004600881819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508315613632576004601081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b3373ffffffffffffffffffffffffffffffffffffffff167ff205ce75791437944181c7d5b0da9fc3f03171ae90ec93e4dc4f3ddf2982eb018460405180826000191660001916815260200191505060405180910390a25050505050505050505050565b6000806000809150600090505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050811015613712576136f98482613c79565b15613705576001820191505b80806001019150506136a2565b8192505050919050565b600460089054906101000a900467ffffffffffffffff1681565b61373e61447b565b81613748816112ad565b151561375357600080fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050038154811015156137ea57fe5b90600052602060002090600902016000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561388f5780601f106138645761010080835404028352916020019161388f565b820191906000526020600020905b81548152906001019060200180831161387257829003601f168201915b5050505050915050919050565b60006138a661456c565b60006040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250915081876040518083805190602001908083835b60208310151561391757805182526020820191506020810190506020830392506138f2565b6001836020036101000a03801982511681845116808217855250505050505090500182600019166000191681526020019250505060405180910390209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600182888888604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515613a0c57600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff161492505050949350505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490509050919050565b60008060008089613a97816112ad565b1515613aa257600080fd5b89898989896040518086805190602001908083835b602083101515613adc5780518252602082019150602081019050602083039250613ab7565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515613b2f5780518252602082019150602081019050602083039250613b0a565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515613b825780518252602082019150602081019050602083039250613b5d565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515613bd55780518252602082019150602081019050602083039250613bb0565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083101515613c285780518252602082019150602081019050602083039250613c03565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405180910390209150613c658b836120a2565b945094509450505096509650969350505050565b600080600084613c88816112ad565b1515613c9357600080fd5b8585600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905081101515613ce857600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515613d3757fe5b90600052602060002090600902016007015494506000600102856000191614151515613d5f57fe5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1661eff308a886000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b1515613e6857600080fd5b6102c65a03f11515613e7957600080fd5b505050604051805190509350600060010284600019161415613e9e5760009550613f3a565b600073__PhysicalAddressClaim__________________637194df0d866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505060206040518083038186803b1515613f1b57600080fd5b6102c65a03f41515613f2c57600080fd5b505050604051805190501195505b505050505092915050565b613f4d61447b565b600080600080600087613f5f816112ad565b1515613f6a57600080fd5b8888600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905081101515613fbf57600080fd5b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a81548110151561400e57fe5b906000526020600020906009020160070154945073__PhysicalAddressClaim__________________637194df0d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1661eff308f8a6000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b151561414557600080fd5b6102c65a03f1151561415657600080fd5b505050604051805190506000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505060206040518083038186803b15156141c057600080fd5b6102c65a03f415156141d157600080fd5b505050604051805190509350600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a81548110151561422c57fe5b9060005260206000209060090201600001600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b81548110151561428c57fe5b9060005260206000209060090201600601548587838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156143355780601f1061430a57610100808354040283529160200191614335565b820191906000526020600020905b81548152906001019060200180831161431857829003601f168201915b505050505093509850985098509850505050505092959194509250565b61012060405190810160405280614367614580565b8152602001614374614580565b8152602001614381614580565b815260200161438e614580565b815260200161439b614580565b81526020016143a8614580565b81526020016000815260200160008019168152602001600080191681525090565b8154818355818115116143f6576009028160090283600052602060002091820191016143f59190614594565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061443c57805160ff191683800117855561446a565b8280016001018555821561446a579182015b8281111561446957825182559160200191906001019061444e565b5b509050614477919061462b565b5090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106144c85780548555614505565b8280016001018555821561450557600052602060002091601f016020900482015b828111156145045782548255916001019190600101906144e9565b5b509050614512919061462b565b5090565b815481835581811511614543576009028160090283600052602060002091820191016145429190614594565b5b505050565b50805460008255600902906000526020600020908101906145699190614594565b50565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b61462891905b8082111561462457600080820160006145b39190614650565b6001820160006145c39190614650565b6002820160006145d39190614650565b6003820160006145e39190614650565b6004820160006145f39190614650565b6005820160006146039190614650565b6006820160009055600782016000905560088201600090555060090161459a565b5090565b90565b61464d91905b80821115614649576000816000905550600101614631565b5090565b90565b50805460018160011615610100020316600290046000825580601f106146765750614695565b601f016020900490600052602060002090810190614694919061462b565b5b505600a165627a7a723058208a8c74f30aededd44accc69283219da13a4cf39001a8ed4c38870a6cf66365670029", + "deployedBytecode": "0x60606040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063058317761461016f5780630e666e49146101db578063238ac9331461022c5780632c2a178e146102815780634028a0f11461045e57806369ffa08a1461049b5780636c19e783146104f35780637b1039991461052c578063853828b61461058157806389bff0b9146105965780638da5cb5b14610606578063a5db3d021461065b578063a87430ba146106de578063a91ee0dc1461072b578063ae9b051c14610764578063b4778e2d14610787578063b55fbd04146109f2578063bff1f9e114610aa4578063c0fe077f14610ae1578063c228251b14610b60578063c94f2c1b14610cc9578063cfad527714610d16578063d673560414610d53578063d956be1014610e05578063de3d702e14610e6a578063e585332e14610eb7578063f0486ab414611069578063feea9808146110c3575b600080fd5b341561017a57600080fd5b6101af600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061119b565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b34156101e657600080fd5b610212600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112ad565b604051808215151515815260200191505060405180910390f35b341561023757600080fd5b61023f6112fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61045c600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080359060200190919080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611321565b005b341561046957600080fd5b610471611b60565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b34156104a657600080fd5b6104f1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b7a565b005b34156104fe57600080fd5b61052a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e7f565b005b341561053757600080fd5b61053f611f81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561058c57600080fd5b610594611fa7565b005b34156105a157600080fd5b6105da600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506120a2565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b341561061157600080fd5b6106196121bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066657600080fd5b6106dc600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506121e1565b005b34156106e957600080fd5b610715600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612584565b6040518082815260200191505060405180910390f35b341561073657600080fd5b610762600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506125a2565b005b341561076f57600080fd5b61078560048080359060200190919050506126a4565b005b341561079257600080fd5b6107c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612789565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019080838360005b838110156108175780820151818401526020810190506107fc565b50505050905090810190601f1680156108445780820380516001836020036101000a031916815260200191505b5086810385528a818151815260200191508051906020019080838360005b8381101561087d578082015181840152602081019050610862565b50505050905090810190601f1680156108aa5780820380516001836020036101000a031916815260200191505b50868103845289818151815260200191508051906020019080838360005b838110156108e35780820151818401526020810190506108c8565b50505050905090810190601f1680156109105780820380516001836020036101000a031916815260200191505b50868103835288818151815260200191508051906020019080838360005b8381101561094957808201518184015260208101905061092e565b50505050905090810190601f1680156109765780820380516001836020036101000a031916815260200191505b50868103825287818151815260200191508051906020019080838360005b838110156109af578082015181840152602081019050610994565b50505050905090810190601f1680156109dc5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b34156109fd57600080fd5b610a29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d1e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a69578082015181840152602081019050610a4e565b50505050905090810190601f168015610a965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610aaf57600080fd5b610ab7612ec7565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610aec57600080fd5b610b25600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050612ee1565b604051808515151515815260200184815260200183151515158152602001826000191660001916815260200194505050505060405180910390f35b3415610b6b57600080fd5b610cc7600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061306b565b005b3415610cd457600080fd5b610d00600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613695565b6040518082815260200191505060405180910390f35b3415610d2157600080fd5b610d2961371c565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610d5e57600080fd5b610d8a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613736565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dca578082015181840152602081019050610daf565b50505050905090810190601f168015610df75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610e1057600080fd5b610e5060048080356000191690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190505061389c565b604051808215151515815260200191505060405180910390f35b3415610e7557600080fd5b610ea1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613a38565b6040518082815260200191505060405180910390f35b3415610ec257600080fd5b61103d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613a87565b604051808415151515815260200183815260200182151515158152602001935050505060405180910390f35b341561107457600080fd5b6110a9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613c79565b604051808215151515815260200191505060405180910390f35b34156110ce57600080fd5b611103600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613f45565b60405180806020018581526020018481526020018360001916600019168152602001828103825286818151815260200191508051906020019080838360005b8381101561115d578082015181840152602081019050611142565b50505050905090810190601f16801561118a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b600080600080856111ab816112ad565b15156111b657600080fd5b600091505b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508210156112955785600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561125857fe5b90600052602060002090600902016006015414156112885760018261127d8985613c79565b9450945094506112a4565b81806001019250506111bb565b60008060008191509450945094505b50509250925092565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154119050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061132c614352565b60008e5111151561133c57600080fd5b60008d5111151561134c57600080fd5b60008c5111151561135c57600080fd5b60008b5111151561136c57600080fd5b60008a5111151561137c57600080fd5b6000895111151561138c57600080fd5b87341015151561139b57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905010151561140e57600080fd5b338e8e8e8e8e8e8e8e604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189805190602001908083835b60208310151561148d5780518252602082019150602081019050602083039250611468565b6001836020036101000a03801982511681845116808217855250505050505090500188805190602001908083835b6020831015156114e057805182526020820191506020810190506020830392506114bb565b6001836020036101000a03801982511681845116808217855250505050505090500187805190602001908083835b602083101515611533578051825260208201915060208101905060208303925061150e565b6001836020036101000a03801982511681845116808217855250505050505090500186805190602001908083835b6020831015156115865780518252602082019150602081019050602083039250611561565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b6020831015156115d957805182526020820191506020810190506020830392506115b4565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b60208310151561162c5780518252602082019150602081019050602083039250611607565b6001836020036101000a03801982511681845116808217855250505050505090500183815260200182600019166000191681526020019950505050505050505050604051809103902092506116838387878761389c565b151561168e57600080fd5b611697336112ad565b156116c3576116aa338e8e8e8e8e613a87565b90505080925050811515156116be57600080fd5b61174e565b43600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506001600460008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b8d81600001819052508c81602001819052508b81604001819052508a8160600181905250898160800181905250888160a00181905250438160c00181815250508681610100019060001916908160001916815250508c8c8c8c8c6040518086805190602001908083835b6020831015156117dd57805182526020820191506020810190506020830392506117b8565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515611830578051825260208201915060208101905060208303925061180b565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515611883578051825260208201915060208101905060208303925061185e565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b6020831015156118d657805182526020820191506020810190506020830392506118b1565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156119295780518252602082019150602081019050602083039250611904565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405180910390208160e001906000191690816000191681525050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180548060010182816119c191906143c9565b9160005260206000209060090201600083909190915060008201518160000190805190602001906119f39291906143fb565b506020820151816001019080519060200190611a109291906143fb565b506040820151816002019080519060200190611a2d9291906143fb565b506060820151816003019080519060200190611a4a9291906143fb565b506080820151816004019080519060200190611a679291906143fb565b5060a0820151816005019080519060200190611a849291906143fb565b5060c0820151816006015560e0820151816007019060001916905561010082015181600801906000191690555050506001600460088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe7c91dadc713049bfb35a5b137524bc4546369091366d48bb185433127b9f26b8260e0015160405180826000191660001916815260200191505060405180910390a25050505050505050505050505050565b600460109054906101000a900467ffffffffffffffff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611c1457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611c5057600080fd5b8391508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515611cf657600080fd5b6102c65a03f11515611d0757600080fd5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611dbe57600080fd5b6102c65a03f11515611dcf57600080fd5b50505060405180519050507fbade9c303f5a400b6706b3cbea82197948f018cd82138ea9bafcada571831967848483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eda57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fee87a28570c895f7da676d522308fff544b84e34ac47fcb36b53f5ef848e5e3281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200257600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111151561202857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156120a057600080fd5b565b600080600080856120b2816112ad565b15156120bd57600080fd5b600091505b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508210156121a4578560001916600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018381548110151561216357fe5b9060005260206000209060090201600701546000191614156121975760018261218c8985613c79565b9450945094506121b3565b81806001019250506120c2565b60008060008191509450945094505b50509250925092565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000336121f3816112ad565b15156121fe57600080fd5b60008a5111151561220e57600080fd5b338a604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182805190602001908083835b6020831015156122865780518252602082019150602081019050602083039250612261565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051809103902095506122c2868a8a8a61389c565b15156122cd57600080fd5b612339338b6040518082805190602001908083835b60208310151561230757805182526020820191506020810190506020830392506122e2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020612ee1565b8095508196508297508398505050505084151561235557600080fd5b8215151561236257600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639918925d338473__PhysicalAddressClaim__________________63deb21fa2436000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b151561241557600080fd5b6102c65a03f4151561242657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200182600019166000191681526020019350505050600060405180830381600087803b15156124cb57600080fd5b6102c65a03f115156124dc57600080fd5b5050506001600460108282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fcb5c5ab258abc7b8cafdc09ca97a09fa4d98a46a9a83f0462061e78fcb198cb98360405180826000191660001916815260200191505060405180910390a250505050505050505050565b60036020528060005260406000206000915090508060000154905081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125fd57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffd9ec64cd3990d58d48617f2750d82ea8ea105c84989b7f77c5242178ba4aeb81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126ff57600080fd5b803073ffffffffffffffffffffffffffffffffffffffff16311015151561272557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561278657600080fd5b50565b61279161447b565b61279961447b565b6127a161447b565b6127a961447b565b6127b161447b565b866127bb816112ad565b15156127c657600080fd5b8787600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110151561281b57600080fd5b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018981548110151561286a57fe5b9060005260206000209060090201600101600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a8154811015156128ca57fe5b9060005260206000209060090201600201600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b81548110151561292a57fe5b9060005260206000209060090201600301600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018c81548110151561298a57fe5b9060005260206000209060090201600401600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018d8154811015156129ea57fe5b9060005260206000209060090201600501848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a905780601f10612a6557610100808354040283529160200191612a90565b820191906000526020600020905b815481529060010190602001808311612a7357829003601f168201915b50505050509450838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b2c5780601f10612b0157610100808354040283529160200191612b2c565b820191906000526020600020905b815481529060010190602001808311612b0f57829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612bc85780601f10612b9d57610100808354040283529160200191612bc8565b820191906000526020600020905b815481529060010190602001808311612bab57829003601f168201915b50505050509250818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c645780601f10612c3957610100808354040283529160200191612c64565b820191906000526020600020905b815481529060010190602001808311612c4757829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d005780601f10612cd557610100808354040283529160200191612d00565b820191906000526020600020905b815481529060010190602001808311612ce357829003601f168201915b50505050509050975097509750975097505050509295509295909350565b612d2661447b565b600082612d32816112ad565b1515612d3d57600080fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905091505b6000821115612eac57818060019003925050612da28483613c79565b15612ea757600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515612df657fe5b90600052602060002090600902016000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e9b5780601f10612e7057610100808354040283529160200191612e9b565b820191906000526020600020905b815481529060010190602001808311612e7e57829003601f168201915b50505050509250612ec0565b612d86565b602060405190810160405280600081525092505b5050919050565b600460009054906101000a900467ffffffffffffffff1681565b600080600080600086612ef3816112ad565b1515612efe57600080fd5b600091505b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050821015613048578660001916600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010183815481101515612fa457fe5b90600052602060002090600902016008015460001916141561303b57600182612fcd8a85613c79565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018581548110151561301c57fe5b9060005260206000209060090201600701549550955095509550613060565b8180600101925050612f03565b60008060008082925080600102905095509550955095505b505092959194509250565b60008060008060003361307d816112ad565b151561308857600080fd5b613096338c8c8c8c8c613a87565b8096508197508298505050508515156130ae57600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101858154811015156130fd57fe5b9060005260206000209060090201600701549250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7508ec73033866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561321157600080fd5b6102c65a03f1151561322257600080fd5b505050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490509150600182038514151561345457600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600183038154811015156132cb57fe5b9060005260206000209060090201600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018681548110151561332857fe5b90600052602060002090600902016000820181600001908054600181600116156101000203166002900461335d92919061448f565b506001820181600101908054600181600116156101000203166002900461338592919061448f565b50600282018160020190805460018160011615610100020316600290046133ad92919061448f565b50600382018160030190805460018160011615610100020316600290046133d592919061448f565b50600482018160040190805460018160011615610100020316600290046133fd92919061448f565b506005820181600501908054600181600116156101000203166002900461342592919061448f565b506006820154816006015560078201548160070190600019169055600882015481600801906000191690559050505b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054809190600190036134a99190614516565b506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050141561359b57600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006135509190614548565b50506004600081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b6004600881819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508315613632576004601081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b3373ffffffffffffffffffffffffffffffffffffffff167ff205ce75791437944181c7d5b0da9fc3f03171ae90ec93e4dc4f3ddf2982eb018460405180826000191660001916815260200191505060405180910390a25050505050505050505050565b6000806000809150600090505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050811015613712576136f98482613c79565b15613705576001820191505b80806001019150506136a2565b8192505050919050565b600460089054906101000a900467ffffffffffffffff1681565b61373e61447b565b81613748816112ad565b151561375357600080fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050038154811015156137ea57fe5b90600052602060002090600902016000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561388f5780601f106138645761010080835404028352916020019161388f565b820191906000526020600020905b81548152906001019060200180831161387257829003601f168201915b5050505050915050919050565b60006138a661456c565b60006040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250915081876040518083805190602001908083835b60208310151561391757805182526020820191506020810190506020830392506138f2565b6001836020036101000a03801982511681845116808217855250505050505090500182600019166000191681526020019250505060405180910390209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600182888888604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515613a0c57600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff161492505050949350505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490509050919050565b60008060008089613a97816112ad565b1515613aa257600080fd5b89898989896040518086805190602001908083835b602083101515613adc5780518252602082019150602081019050602083039250613ab7565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515613b2f5780518252602082019150602081019050602083039250613b0a565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515613b825780518252602082019150602081019050602083039250613b5d565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515613bd55780518252602082019150602081019050602083039250613bb0565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083101515613c285780518252602082019150602081019050602083039250613c03565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405180910390209150613c658b836120a2565b945094509450505096509650969350505050565b600080600084613c88816112ad565b1515613c9357600080fd5b8585600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905081101515613ce857600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515613d3757fe5b90600052602060002090600902016007015494506000600102856000191614151515613d5f57fe5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1661eff308a886000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b1515613e6857600080fd5b6102c65a03f11515613e7957600080fd5b505050604051805190509350600060010284600019161415613e9e5760009550613f3a565b600073__PhysicalAddressClaim__________________637194df0d866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505060206040518083038186803b1515613f1b57600080fd5b6102c65a03f41515613f2c57600080fd5b505050604051805190501195505b505050505092915050565b613f4d61447b565b600080600080600087613f5f816112ad565b1515613f6a57600080fd5b8888600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905081101515613fbf57600080fd5b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a81548110151561400e57fe5b906000526020600020906009020160070154945073__PhysicalAddressClaim__________________637194df0d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1661eff308f8a6000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b151561414557600080fd5b6102c65a03f1151561415657600080fd5b505050604051805190506000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505060206040518083038186803b15156141c057600080fd5b6102c65a03f415156141d157600080fd5b505050604051805190509350600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018a81548110151561422c57fe5b9060005260206000209060090201600001600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b81548110151561428c57fe5b9060005260206000209060090201600601548587838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156143355780601f1061430a57610100808354040283529160200191614335565b820191906000526020600020905b81548152906001019060200180831161431857829003601f168201915b505050505093509850985098509850505050505092959194509250565b61012060405190810160405280614367614580565b8152602001614374614580565b8152602001614381614580565b815260200161438e614580565b815260200161439b614580565b81526020016143a8614580565b81526020016000815260200160008019168152602001600080191681525090565b8154818355818115116143f6576009028160090283600052602060002091820191016143f59190614594565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061443c57805160ff191683800117855561446a565b8280016001018555821561446a579182015b8281111561446957825182559160200191906001019061444e565b5b509050614477919061462b565b5090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106144c85780548555614505565b8280016001018555821561450557600052602060002091601f016020900482015b828111156145045782548255916001019190600101906144e9565b5b509050614512919061462b565b5090565b815481835581811511614543576009028160090283600052602060002091820191016145429190614594565b5b505050565b50805460008255600902906000526020600020908101906145699190614594565b50565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b61462891905b8082111561462457600080820160006145b39190614650565b6001820160006145c39190614650565b6002820160006145d39190614650565b6003820160006145e39190614650565b6004820160006145f39190614650565b6005820160006146039190614650565b6006820160009055600782016000905560088201600090555060090161459a565b5090565b90565b61464d91905b80821115614649576000816000905550600101614631565b5090565b90565b50805460018160011615610100020316600290046000825580601f106146765750614695565b601f016020900490600052602060002090810190614694919061462b565b5b505600a165627a7a723058208a8c74f30aededd44accc69283219da13a4cf39001a8ed4c38870a6cf66365670029", + "sourceMap": "171:12937:3:-;;;614:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:10;686:5;;:18;;;;;;;;;;;;;;;;;;723:5;;;;;;;;;;;714:6;;:14;;;;;;;;;;;;;;;;;;781:9;738:8;;:53;;;;;;;;;;;;;;;;;;614:184;171:12937;;;;;;", + "deployedSourceMap": "171:12937:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:455;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;235:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8890:1830;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1029:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2295:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2854:146;;;;;;;;;;;;;;5558:466;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;209:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11915:863;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2428:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;2653:161;;;;;;;;;;;;;;;;;;;;;;;;;;7469:591;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6397:374:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:24:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4317:694;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10726:1183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7138:325;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;995:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6082:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1870:289:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6873:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5106:357;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3144:528;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8066:797;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:455:3;3895:4;3901:7;3910:4;3935:10;3878:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;3948:1;3935:14;;3930:252;3956:5;:13;3962:6;3956:13;;;;;;;;;;;;;;;:31;;:38;;;;3951:2;:43;3930:252;;;4073:13;4020:5;:13;4026:6;4020:13;;;;;;;;;;;;;;;:31;;4052:2;4020:35;;;;;;;;;;;;;;;;;;;;:49;;;:66;4016:156;;;4114:4;4120:2;4124:32;4145:6;4153:2;4124:20;:32::i;:::-;4106:51;;;;;;;;4016:156;3996:4;;;;;;;3930:252;;;4199:5;4206:1;4209:5;4191:24;;;;;;;;;1686:1;3767:455;;;;;;;:::o;3006:132::-;3071:4;3129:1;3099:5;:13;3105:6;3099:13;;;;;;;;;;;;;;;:27;;;:31;3091:40;;3006:132;;;:::o;235:21::-;;;;;;;;;;;;;:::o;8890:1830::-;9520:12;9917:10;10206:25;;:::i;:::-;9183:1;9168:4;9162:18;:22;9154:31;;;;;;;;9227:1;9209:7;9203:21;:25;9195:34;;;;;;;;9269:1;9253:5;9247:19;:23;9239:32;;;;;;;;9310:1;9295:4;9289:18;:22;9281:31;;;;;;;;9355:1;9336:8;9330:22;:26;9322:35;;;;;;;;9395:1;9381:3;9375:17;:21;9367:30;;;;;;;;9428:8;9415:9;:21;;9407:30;;;;;;;;9500:8;9455:5;:17;9461:10;9455:17;;;;;;;;;;;;;;;:35;;:42;;;;:53;9447:62;;;;;;;;9558:10;9582:4;9600:7;9621:5;9640:4;9658:8;9680:3;9697:8;9719:20;9535:214;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9520:229:3;;9767:37;9781:4;9787;9793;9799;9767:13;:37::i;:::-;9759:46;;;;;;;;9820:22;9831:10;9820;:22::i;:::-;9816:380;;;9955:69;9976:10;9988:7;9997:5;10004:4;10010:8;10020:3;9955:20;:69::i;:::-;9941:83;;;;;;;10048:5;10047:6;10039:15;;;;;;;;9816:380;;;10143:12;10109:5;:17;10115:10;10109:17;;;;;;;;;;;;;;;:31;;:46;;;;10184:1;10170:10;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9816:380;10252:4;10242:2;:7;;:14;;;;10279:7;10266:2;:10;;:20;;;;10307:5;10296:2;:8;;:16;;;;10332:4;10322:2;:7;;:14;;;;10360:8;10346:2;:11;;:22;;;;10387:3;10378:2;:6;;:12;;;;10419;10400:2;:16;;:31;;;;;10467:20;10441:2;:23;;:46;;;;;;;;;;;;;10529:7;10538:5;10545:4;10551:8;10561:3;10519:46;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;10497:2:3;:19;;:68;;;;;;;;;;;;;10575:5;:17;10581:10;10575:17;;;;;;;;;;;;;;;:35;;:44;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;10616:2;10575:44;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10648:1;10630:14;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10681:10;10660:53;;;10693:2;:19;;;10660:53;;;;;;;;;;;;;;;;;;;;;;;;8890:1830;;;;;;;;;;;;;;:::o;1029:28::-;;;;;;;;;;;;;:::o;12784:322::-;12937:11;12974:15;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;12887:1;12869:20;;:6;:20;;;;12861:29;;;;;;;;12923:1;12908:17;;:3;:17;;;;12900:26;;;;;;;;12957:6;12937:27;;12992:5;:15;;;13008:4;12992:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12974:39;;13023:5;:14;;;13038:3;13043:7;13023:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13061:38;13078:6;13086:3;13091:7;13061:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:322;;;;:::o;2295:127::-;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;2369:9;2360:6;;:18;;;;;;;;;;;;;;;;;;2388:27;2405:9;2388:27;;;;;;;;;;;;;;;;;;;;;;2295:127;:::o;262:47::-;;;;;;;;;;;;;:::o;2854:146::-;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;2944:1;2928:4;2920:21;;;:25;2912:34;;;;;;;;2956:5;;;;;;;;;;;:14;;:37;2979:4;2971:21;;;2956:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2854:146::o;5558:466::-;5691:4;5697:7;5706:4;5731:10;5675:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;5744:1;5731:14;;5726:258;5752:5;:13;5758:6;5752:13;;;;;;;;;;;;;;;:31;;:38;;;;5747:2;:43;5726:258;;;5872:16;5816:72;;;:5;:13;5822:6;5816:13;;;;;;;;;;;;;;;:31;;5848:2;5816:35;;;;;;;;;;;;;;;;;;;;:52;;;:72;;;;5812:162;;;5916:4;5922:2;5926:32;5947:6;5955:2;5926:20;:32::i;:::-;5908:51;;;;;;;;5812:162;5792:4;;;;;;;5726:258;;;6001:5;6008:1;6011:5;5993:24;;;;;;;;;1686:1;5558:466;;;;;;;:::o;209:20::-;;;;;;;;;;;;;:::o;11915:863::-;12121:12;12281:10;12301:7;12318:14;12342:24;12036:10;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;12108:1;12076:21;12070:35;:39;12062:48;;;;;;;;12159:10;12183:21;12136:78;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;12121:93:3;;12232:37;12246:4;12252;12258;12264;12232:13;:37::i;:::-;12224:46;;;;;;;;12419:109;12462:10;12496:21;12486:32;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;12419:29:3;:109::i;:::-;12376:152;;;;;;;;;;;;;;;;12546:5;12538:14;;;;;;;;12571:9;12570:10;12562:19;;;;;;;;12592:8;;;;;;;;;;;:17;;;12610:10;12622:16;12640:20;:27;12668:12;12640:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12592:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12710:1;12692:14;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12742:10;12722:49;;;12754:16;12722:49;;;;;;;;;;;;;;;;;;;;;;;;11915:863;;;;;;;;;;:::o;905:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;2428:172::-;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;2540:11;2497:8;;:55;;;;;;;;;;;;;;;;;;2562:31;2581:11;2562:31;;;;;;;;;;;;;;;;;;;;;;2428:172;:::o;2653:161::-;1568:5;;;;;;;;;;;1554:19;;:10;:19;;;1546:28;;;;;;;;2762:9;2745:4;2737:21;;;:34;;2729:43;;;;;;;;2782:5;;;;;;;;;;;:14;;:25;2797:9;2782:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2653:161;:::o;7469:591::-;7623:14;;:::i;:::-;7639:12;;:::i;:::-;7653:11;;:::i;:::-;7666:15;;:::i;:::-;7683:10;;:::i;:::-;7564:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;7583:6;7591:12;1791:5;:13;1797:6;1791:13;;;;;;;;;;;;;;;:31;;:38;;;;1776:12;:53;1768:62;;;;;;;;7730:5;:13;7736:6;7730:13;;;;;;;;;;;;;;;:31;;7762:12;7730:45;;;;;;;;;;;;;;;;;;;;:53;;7797:5;:13;7803:6;7797:13;;;;;;;;;;;;;;;:31;;7829:12;7797:45;;;;;;;;;;;;;;;;;;;;:51;;7862:5;:13;7868:6;7862:13;;;;;;;;;;;;;;;:31;;7894:12;7862:45;;;;;;;;;;;;;;;;;;;;:50;;7926:5;:13;7932:6;7926:13;;;;;;;;;;;;;;;:31;;7958:12;7926:45;;;;;;;;;;;;;;;;;;;;:54;;7994:5;:13;8000:6;7994:13;;;;;;;;;;;;;;;:31;;8026:12;7994:45;;;;;;;;;;;;;;;;;;;;:49;;7709:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:1;;7469:591;;;;;;;;;:::o;6397:374::-;6497:6;;:::i;:::-;6524:10;6480:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;6537:5;:13;6543:6;6537:13;;;;;;;;;;;;;;;:31;;:38;;;;6524:51;;6519:227;6582:1;6577:2;:6;6519:227;;;6600:4;;;;;;;;6622:32;6643:6;6651:2;6622:20;:32::i;:::-;6618:118;;;6681:5;:13;6687:6;6681:13;;;;;;;;;;;;;;;:31;;6713:2;6681:35;;;;;;;;;;;;;;;;;;;;:40;;6674:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6618:118;6519:227;;;6755:9;;;;;;;;;;;;;;;1686:1;6397:374;;;;;:::o;965:24::-;;;;;;;;;;;;;:::o;4317:694::-;4504:4;4510:7;4519:4;4525:7;4553:10;4480:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;4566:1;4553:14;;4548:418;4574:5;:13;4580:6;4574:13;;;;;;;;;;;;;;;:31;;:38;;;;4569:2;:43;4548:418;;;4698:20;4638:80;;;:5;:13;4644:6;4638:13;;;;;;;;;;;;;;;:31;;4670:2;4638:35;;;;;;;;;;;;;;;;;;;;:56;;;:80;;;;4634:322;;;4767:4;4793:2;4817:32;4838:6;4846:2;4817:20;:32::i;:::-;4871:5;:13;4877:6;4871:13;;;;;;;;;;;;;;;:31;;4903:2;4871:35;;;;;;;;;;;;;;;;;;;;:52;;;4738:203;;;;;;;;;;4634:322;4614:4;;;;;;;4548:418;;;4983:5;4990:1;4993:5;5000:3;4975:29;;;;;;;;;;;;;;;;1686:1;4317:694;;;;;;;;;:::o;10726:1183::-;10882:10;10902:13;10925:14;11081:24;11344:14;10856:10;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;10977:69;10998:10;11010:7;11019:5;11026:4;11032:8;11042:3;10977:20;:69::i;:::-;10949:97;;;;;;;;;;;;11064:5;11056:14;;;;;;;;11108:5;:17;11114:10;11108:17;;;;;;;;;;;;;;;:35;;11144:5;11108:42;;;;;;;;;;;;;;;;;;;;:59;;;11081:86;;11177:8;;;;;;;;;;;:20;;;11219:4;11238:10;11262:16;11177:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11361:5;:17;11367:10;11361:17;;;;;;;;;;;;;;;:35;;:42;;;;11344:59;;11436:1;11427:6;:10;11418:5;:19;;11414:142;;;11498:5;:17;11504:10;11498:17;;;;;;;;;;;;;;;:35;;11543:1;11534:6;:10;11498:47;;;;;;;;;;;;;;;;;;;;11453:5;:17;11459:10;11453:17;;;;;;;;;;;;;;;:35;;11489:5;11453:42;;;;;;;;;;;;;;;;;;;;:92;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11414:142;11565:5;:17;11571:10;11565:17;;;;;;;;;;;;;;;:35;;:44;;;;;;;;;;;;:::i;:::-;;11670:1;11624:5;:17;11630:10;11624:17;;;;;;;;;;;;;;;:35;;:42;;;;:47;11620:128;;;11694:5;:17;11700:10;11694:17;;;;;;;;;;;;;;;;11687:24;;;;;;;;;;;;;;:::i;:::-;;;11725:10;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11620:128;11758:14;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11788:9;11784:56;;;11813:14;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11784:56;11873:10;11850:52;;;11885:16;11850:52;;;;;;;;;;;;;;;;;;;;;;;;10726:1183;;;;;;;;;;;:::o;7138:325::-;7220:7;7243:9;7271:10;7255:1;7243:13;;7284:1;7271:14;;7266:173;7292:5;:13;7298:6;7292:13;;;;;;;;;;;;;;;:31;;:38;;;;7287:2;:43;7266:173;;;7356:32;7377:6;7385:2;7356:20;:32::i;:::-;7352:77;;;7413:1;7408:6;;;;7352:77;7332:4;;;;;;;7266:173;;;7455:1;7448:8;;7138:325;;;;;:::o;995:28::-;;;;;;;;;;;;;:::o;6082:214::-;6182:6;;:::i;:::-;6165;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;6211:5;:13;6217:6;6211:13;;;;;;;;;;;;;;;:31;;6282:1;6243:5;:13;6249:6;6243:13;;;;;;;;;;;;;;;:31;;:38;;;;:40;6211:73;;;;;;;;;;;;;;;;;;;;:78;;6204:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6082:214;;;;:::o;1870:289::-;1967:4;1987:19;;:::i;:::-;2053:16;1987:56;;;;;;;;;;;;;;;;;;;;2082:6;2090:4;2072:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2053:42:3;;2145:6;;;;;;;;;;;2113:38;;:28;2123:8;2133:1;2136;2139;2113:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2105:47;;1870:289;;;;;;;;:::o;6873:157::-;6955:7;6985:5;:13;6991:6;6985:13;;;;;;;;;;;;;;;:31;;:38;;;;6978:45;;6873:157;;;:::o;5106:357::-;5276:4;5282:7;5291:4;5311:24;5260:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;5348:7;5357:5;5364:4;5370:8;5380:3;5338:46;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;5311:73:3;;5401:55;5431:6;5439:16;5401:29;:55::i;:::-;5394:62;;;;;;5106:357;;;;;;;;;;;;:::o;3144:528::-;3298:4;3318:24;3460:13;3248:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;3267:6;3275:12;1791:5;:13;1797:6;1791:13;;;;;;;;;;;;;;;:31;;:38;;;;1776:12;:53;1768:62;;;;;;;;3345:5;:13;3351:6;3345:13;;;;;;;;;;;;;;;:31;;3377:12;3345:45;;;;;;;;;;;;;;;;;;;;:62;;;3318:89;;3445:3;3425:23;;:16;:23;;;;;3418:31;;;;;;3476:8;;;;;;;;;;;:17;;;3502:4;3509:6;3517:16;3476:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3460:74;;3558:1;3549:10;;:5;:10;;;;3545:53;;;3582:5;3575:12;;;;3545:53;3664:1;3615:20;:39;3655:5;3615:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:50;3608:57;;1840:1;1686;;3144:528;;;;;;;:::o;8066:797::-;8224:11;;:::i;:::-;8245:21;8276:25;8311:24;8352:25;8453:26;8165:6;1657:18;1668:6;1657:10;:18::i;:::-;1649:27;;;;;;;;8184:6;8192:12;1791:5;:13;1797:6;1791:13;;;;;;;;;;;;;;;:31;;:38;;;;1776:12;:53;1768:62;;;;;;;;8380:5;:13;8386:6;8380:13;;;;;;;;;;;;;;;:31;;8412:12;8380:45;;;;;;;;;;;;;;;;;;;;:62;;;8352:90;;8482:20;:39;8522:8;;;;;;;;;;;:17;;;8561:4;8580:6;8600:17;8522:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8482:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8453:175;;8660:5;:13;8666:6;8660:13;;;;;;;;;;;;;;;:31;;8692:12;8660:45;;;;;;;;;;;;;;;;;;;;:50;;8724:5;:13;8730:6;8724:13;;;;;;;;;;;;;;;:31;;8756:12;8724:45;;;;;;;;;;;;;;;;;;;;:59;;;8797:18;8829:17;8639:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:1;;8066:797;;;;;;;;;;:::o;171:12937::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o", + "source": "pragma solidity 0.4.19;\n\nimport \"./EthereumClaimsRegistryInterface.sol\";\nimport \"./PhysicalAddressClaim.sol\";\nimport \"./ERC20.sol\";\n\n\n// Checks -> Effects -> Interactions\ncontract ProofOfPhysicalAddress {\n address public owner;\n address public signer;\n EthereumClaimsRegistryInterface public registry;\n\n // Main structures:\n struct PhysicalAddress {\n string name;\n\n string country;\n string state;\n string city;\n string location;\n string zip;\n\n uint256 creationBlock;\n bytes32 keccakIdentifier;\n bytes32 confirmationCodeSha3;\n }\n\n function ProofOfPhysicalAddress(address _registry) public\n {\n owner = msg.sender;\n signer = owner;\n registry = EthereumClaimsRegistryInterface(_registry);\n }\n\n struct User {\n uint256 creationBlock;\n PhysicalAddress[] physicalAddresses;\n }\n\n mapping (address => User) public users;\n\n // Stats:\n\n uint64 public totalUsers;\n uint64 public totalAddresses;\n uint64 public totalConfirmed;\n\n // Events:\n\n event LogSignerChanged(address newSigner);\n event LogRegistryChanged(address newRegistry);\n event LogAddressRegistered(address indexed wallet, bytes32 keccakIdentifier);\n event LogAddressUnregistered(address indexed wallet, bytes32 keccakIdentifier);\n event LogAddressConfirmed(address indexed wallet, bytes32 keccakIdentifier);\n event LogClaimedTokens(address token, address to, uint256 amount);\n\n // Modifiers:\n modifier onlyOwner() {\n require(msg.sender == owner);\n _;\n }\n\n modifier checkUserExists(address wallet) {\n require(userExists(wallet));\n _;\n }\n\n modifier validIndex(address wallet, uint256 addressIndex) {\n require(addressIndex < users[wallet].physicalAddresses.length);\n _;\n }\n\n // Helpers:\n function signerIsValid(bytes32 data, uint8 v, bytes32 r, bytes32 s)\n public constant returns (bool)\n {\n bytes memory prefix = \"\\x19Ethereum Signed Message:\\n32\";\n bytes32 prefixed = keccak256(prefix, data);\n return (ecrecover(prefixed, v, r, s) == signer);\n }\n\n // Methods:\n // set address that is used on server-side to calculate signatures\n // and on contract-side to verify them\n function setSigner(address newSigner) public onlyOwner {\n signer = newSigner;\n LogSignerChanged(newSigner);\n }\n\n function setRegistry(address newRegistry) public onlyOwner {\n registry = EthereumClaimsRegistryInterface(newRegistry);\n LogRegistryChanged(newRegistry);\n }\n\n // withdraw specified amount of eth in wei\n function withdrawSome(uint256 amountWei)\n public onlyOwner\n {\n require(address(this).balance >= amountWei);\n owner.transfer(amountWei);\n }\n\n // withdraw all available eth\n function withdrawAll()\n public onlyOwner\n {\n require(address(this).balance > 0);\n owner.transfer(address(this).balance);\n }\n\n function userExists(address wallet)\n public constant returns (bool)\n {\n return (users[wallet].creationBlock > 0);\n }\n\n function userAddressConfirmed(address wallet, uint256 addressIndex)\n public constant checkUserExists(wallet) validIndex(wallet, addressIndex) returns (bool)\n {\n bytes32 keccakIdentifier = users[wallet].physicalAddresses[addressIndex].keccakIdentifier;\n\n assert(keccakIdentifier != 0x0);\n\n bytes32 claim = registry.getClaim(address(this), wallet, keccakIdentifier);\n\n if (claim == 0) {\n return false;\n }\n\n return PhysicalAddressClaim.decodeConfirmation(claim) > 0;\n }\n\n // returns (found/not found, index if found/0 if not found, confirmed/not confirmed)\n function userAddressByCreationBlock(address wallet, uint256 creationBlock)\n public constant checkUserExists(wallet) returns (bool, uint256, bool)\n {\n for (uint256 ai = 0; ai < users[wallet].physicalAddresses.length; ai++) {\n if (users[wallet].physicalAddresses[ai].creationBlock == creationBlock) {\n return (true, ai, userAddressConfirmed(wallet, ai));\n }\n }\n return (false, 0, false);\n }\n\n // returns (found/not found, index if found/0 if not found, confirmed/not confirmed)\n function userAddressByConfirmationCode(\n address wallet,\n bytes32 confirmationCodeSha3\n )\n public\n constant\n checkUserExists(wallet)\n returns(bool, uint256, bool, bytes32)\n {\n for (uint256 ai = 0; ai < users[wallet].physicalAddresses.length; ai++) {\n if (users[wallet].physicalAddresses[ai].confirmationCodeSha3 == confirmationCodeSha3) {\n return (\n true,\n ai,\n userAddressConfirmed(wallet, ai),\n users[wallet].physicalAddresses[ai].keccakIdentifier\n );\n }\n }\n return (false, 0, false, 0x0);\n }\n\n // returns (found/not found, index if found/0 if not found, confirmed/not confirmed)\n function userAddressByAddress(address wallet, string country, string state, string city, string location, string zip)\n public constant checkUserExists(wallet) returns(bool, uint256, bool)\n {\n bytes32 keccakIdentifier = keccak256(country, state, city, location, zip);\n return userAddressByKeccakIdentifier(wallet, keccakIdentifier);\n }\n\n // returns (found/not found, index if found/0 if not found, confirmed/not confirmed)\n function userAddressByKeccakIdentifier(address wallet, bytes32 keccakIdentifier)\n public constant checkUserExists(wallet) returns(bool, uint256, bool)\n {\n for (uint256 ai = 0; ai < users[wallet].physicalAddresses.length; ai++) {\n if (users[wallet].physicalAddresses[ai].keccakIdentifier == keccakIdentifier) {\n return (true, ai, userAddressConfirmed(wallet, ai));\n }\n }\n return (false, 0, false);\n }\n\n // returns last name submitted to PoPA contract\n function userLastSubmittedName(address wallet)\n public constant checkUserExists(wallet) returns (string)\n {\n return users[wallet].physicalAddresses[users[wallet].physicalAddresses.length-1].name;\n }\n\n // returns name from the last confirmed address. If no addresses were confirmed returns ''\n function userLastConfirmedName(address wallet)\n public constant checkUserExists(wallet) returns (string)\n {\n for (uint256 ai = users[wallet].physicalAddresses.length; ai > 0;) {\n ai--;\n if (userAddressConfirmed(wallet, ai)) {\n return users[wallet].physicalAddresses[ai].name;\n }\n }\n return \"\";\n }\n\n // returns how many addresses there are in PoPA contract. If user does not exist, returns 0\n function userSubmittedAddressesCount(address wallet)\n public constant returns (uint256)\n {\n return users[wallet].physicalAddresses.length;\n }\n\n // returns how many addresses from PoPA contract are confirmed. If user does not exist, returns 0\n function userConfirmedAddressesCount(address wallet)\n public constant returns (uint256)\n {\n uint256 c = 0;\n for (uint256 ai = 0; ai < users[wallet].physicalAddresses.length; ai++) {\n if (userAddressConfirmed(wallet, ai)) {\n c += 1;\n }\n }\n return c;\n }\n\n function userAddress(address wallet, uint256 addressIndex)\n public constant checkUserExists(wallet) validIndex(wallet, addressIndex) returns (\n string country, string state, string city, string location, string zip)\n {\n return (\n users[wallet].physicalAddresses[addressIndex].country,\n users[wallet].physicalAddresses[addressIndex].state,\n users[wallet].physicalAddresses[addressIndex].city,\n users[wallet].physicalAddresses[addressIndex].location,\n users[wallet].physicalAddresses[addressIndex].zip\n );\n }\n\n function userAddressInfo(address wallet, uint256 addressIndex)\n public constant checkUserExists(wallet) validIndex(wallet, addressIndex) returns (\n string name,\n uint256 creationBlock,\n uint256 confirmationBlock,\n bytes32 keccakIdentifier\n ) {\n bytes32 _keccakIdentifier = users[wallet].physicalAddresses[addressIndex].keccakIdentifier;\n\n uint256 _confirmationBlock = PhysicalAddressClaim.decodeConfirmation(registry.getClaim(\n address(this),\n wallet,\n _keccakIdentifier)\n );\n\n return (\n users[wallet].physicalAddresses[addressIndex].name,\n users[wallet].physicalAddresses[addressIndex].creationBlock,\n _confirmationBlock,\n _keccakIdentifier\n );\n }\n\n // Main methods:\n function registerAddress(\n string name,\n string country, string state, string city, string location, string zip,\n uint256 priceWei,\n bytes32 confirmationCodeSha3, uint8 sigV, bytes32 sigR, bytes32 sigS)\n public payable\n {\n require(bytes(name).length > 0);\n require(bytes(country).length > 0);\n require(bytes(state).length > 0);\n require(bytes(city).length > 0);\n require(bytes(location).length > 0);\n require(bytes(zip).length > 0);\n require(msg.value >= priceWei);\n require(users[msg.sender].physicalAddresses.length < 2**256-1);\n\n bytes32 data = keccak256(\n msg.sender,\n name,\n country,\n state,\n city,\n location,\n zip,\n priceWei,\n confirmationCodeSha3\n );\n require(signerIsValid(data, sigV, sigR, sigS));\n\n if (userExists(msg.sender)) {\n // check if this address is already registered\n bool found;\n (found, , ) = userAddressByAddress(msg.sender, country, state, city, location, zip);\n\n require(!found);\n } else {\n // new user\n users[msg.sender].creationBlock = block.number;\n\n totalUsers += 1;\n }\n\n PhysicalAddress memory pa;\n\n pa.name = name;\n pa.country = country;\n pa.state = state;\n pa.city = city;\n pa.location = location;\n pa.zip = zip;\n pa.creationBlock = block.number;\n pa.confirmationCodeSha3 = confirmationCodeSha3;\n pa.keccakIdentifier = keccak256(country, state, city, location, zip);\n users[msg.sender].physicalAddresses.push(pa);\n\n totalAddresses += 1;\n\n LogAddressRegistered(msg.sender, pa.keccakIdentifier);\n }\n\n function unregisterAddress(string country, string state, string city, string location, string zip)\n public checkUserExists(msg.sender)\n {\n bool found;\n uint256 index;\n bool confirmed;\n (found, index, confirmed) = userAddressByAddress(msg.sender, country, state, city, location, zip);\n require(found);\n\n bytes32 keccakIdentifier = users[msg.sender].physicalAddresses[index].keccakIdentifier;\n registry.removeClaim(\n address(this),\n msg.sender,\n keccakIdentifier\n );\n\n // Remove physical address from list\n uint256 length = users[msg.sender].physicalAddresses.length;\n\n if (index != length - 1) {\n users[msg.sender].physicalAddresses[index] = users[msg.sender].physicalAddresses[length - 1];\n }\n users[msg.sender].physicalAddresses.length--;\n\n if (users[msg.sender].physicalAddresses.length == 0) {\n delete users[msg.sender];\n totalUsers--;\n }\n\n totalAddresses--;\n if (confirmed) {\n totalConfirmed--;\n }\n\n LogAddressUnregistered(msg.sender, keccakIdentifier);\n }\n\n function confirmAddress(string confirmationCodePlain, uint8 sigV, bytes32 sigR, bytes32 sigS)\n public checkUserExists(msg.sender)\n {\n require(bytes(confirmationCodePlain).length > 0);\n\n bytes32 data = keccak256(\n msg.sender,\n confirmationCodePlain\n );\n require(signerIsValid(data, sigV, sigR, sigS));\n\n bool found;\n uint ai;\n bool confirmed;\n bytes32 keccakIdentifier;\n (found, ai, confirmed, keccakIdentifier) = userAddressByConfirmationCode(\n msg.sender,\n keccak256(confirmationCodePlain)\n );\n require(found);\n require(!confirmed);\n\n registry.setClaim(msg.sender, keccakIdentifier, PhysicalAddressClaim.encode(block.number));\n totalConfirmed += 1;\n\n LogAddressConfirmed(msg.sender, keccakIdentifier);\n }\n\n function claimTokens(address _token, address _to) public onlyOwner {\n require(_token != address(0));\n require(_to != address(0));\n\n ERC20 token = ERC20(_token);\n uint256 balance = token.balanceOf(this);\n token.transfer(_to, balance);\n LogClaimedTokens(_token, _to, balance);\n }\n}\n", "sourcePath": "/home/fvictorio/repos/poa-popa/blockchain/contracts/ProofOfPhysicalAddress.sol", "ast": { "attributes": { "absolutePath": "/home/fvictorio/repos/poa-popa/blockchain/contracts/ProofOfPhysicalAddress.sol", "exportedSymbols": { "ProofOfPhysicalAddress": [ - 1592 + 1574 ] } }, @@ -792,7 +792,7 @@ "SourceUnit": 108, "absolutePath": "/home/fvictorio/repos/poa-popa/blockchain/contracts/EthereumClaimsRegistryInterface.sol", "file": "./EthereumClaimsRegistryInterface.sol", - "scope": 1593, + "scope": 1575, "symbolAliases": [ null ], @@ -807,7 +807,7 @@ "SourceUnit": 225, "absolutePath": "/home/fvictorio/repos/poa-popa/blockchain/contracts/PhysicalAddressClaim.sol", "file": "./PhysicalAddressClaim.sol", - "scope": 1593, + "scope": 1575, "symbolAliases": [ null ], @@ -822,7 +822,7 @@ "SourceUnit": 69, "absolutePath": "/home/fvictorio/repos/poa-popa/blockchain/contracts/ERC20.sol", "file": "./ERC20.sol", - "scope": 1593, + "scope": 1575, "symbolAliases": [ null ], @@ -844,17 +844,17 @@ "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 1592 + 1574 ], "name": "ProofOfPhysicalAddress", - "scope": 1593 + "scope": 1575 }, "children": [ { "attributes": { "constant": false, "name": "owner", - "scope": 1592, + "scope": 1574, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -880,7 +880,7 @@ "attributes": { "constant": false, "name": "signer", - "scope": 1592, + "scope": 1574, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -906,7 +906,7 @@ "attributes": { "constant": false, "name": "registry", - "scope": 1592, + "scope": 1574, "stateVariable": true, "storageLocation": "default", "type": "contract EthereumClaimsRegistryInterface", @@ -934,7 +934,7 @@ "attributes": { "canonicalName": "ProofOfPhysicalAddress.PhysicalAddress", "name": "PhysicalAddress", - "scope": 1592, + "scope": 1574, "visibility": "public" }, "children": [ @@ -1187,7 +1187,7 @@ ], "name": "ProofOfPhysicalAddress", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1284,7 +1284,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -1462,7 +1462,7 @@ "attributes": { "canonicalName": "ProofOfPhysicalAddress.User", "name": "User", - "scope": 1592, + "scope": 1574, "visibility": "public" }, "children": [ @@ -1540,7 +1540,7 @@ "attributes": { "constant": false, "name": "users", - "scope": 1592, + "scope": 1574, "stateVariable": true, "storageLocation": "default", "type": "mapping(address => struct ProofOfPhysicalAddress.User storage ref)", @@ -1587,7 +1587,7 @@ "attributes": { "constant": false, "name": "totalUsers", - "scope": 1592, + "scope": 1574, "stateVariable": true, "storageLocation": "default", "type": "uint64", @@ -1613,7 +1613,7 @@ "attributes": { "constant": false, "name": "totalAddresses", - "scope": 1592, + "scope": 1574, "stateVariable": true, "storageLocation": "default", "type": "uint64", @@ -1639,7 +1639,7 @@ "attributes": { "constant": false, "name": "totalConfirmed", - "scope": 1592, + "scope": 1574, "stateVariable": true, "storageLocation": "default", "type": "uint64", @@ -2113,7 +2113,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -2154,7 +2154,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -2280,7 +2280,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -2461,7 +2461,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -2615,7 +2615,7 @@ ], "name": "signerIsValid", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -2885,7 +2885,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1598, + "referencedDeclaration": 1580, "type": "function () pure returns (bytes32)", "value": "keccak256" }, @@ -3000,7 +3000,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1597, + "referencedDeclaration": 1579, "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)", "value": "ecrecover" }, @@ -3115,7 +3115,7 @@ "isConstructor": false, "name": "setSigner", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3321,7 +3321,7 @@ "isConstructor": false, "name": "setRegistry", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3566,7 +3566,7 @@ "isConstructor": false, "name": "withdrawSome", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3672,7 +3672,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -3726,7 +3726,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1592", + "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1574", "typeString": "contract ProofOfPhysicalAddress" } ], @@ -3747,7 +3747,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1621, + "referencedDeclaration": 1603, "type": "contract ProofOfPhysicalAddress", "value": "this" }, @@ -3888,7 +3888,7 @@ "isConstructor": false, "name": "withdrawAll", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3972,7 +3972,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -4026,7 +4026,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1592", + "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1574", "typeString": "contract ProofOfPhysicalAddress" } ], @@ -4047,7 +4047,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1621, + "referencedDeclaration": 1603, "type": "contract ProofOfPhysicalAddress", "value": "this" }, @@ -4181,7 +4181,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1592", + "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1574", "typeString": "contract ProofOfPhysicalAddress" } ], @@ -4202,7 +4202,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1621, + "referencedDeclaration": 1603, "type": "contract ProofOfPhysicalAddress", "value": "this" }, @@ -4250,7 +4250,7 @@ ], "name": "userExists", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -4464,7 +4464,7 @@ "isConstructor": false, "name": "userAddressConfirmed", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -4820,7 +4820,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1595, + "referencedDeclaration": 1577, "type": "function (bool) pure", "value": "assert" }, @@ -5000,7 +5000,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1592", + "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1574", "typeString": "contract ProofOfPhysicalAddress" } ], @@ -5021,7 +5021,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1621, + "referencedDeclaration": 1603, "type": "contract ProofOfPhysicalAddress", "value": "this" }, @@ -5301,7 +5301,7 @@ "isConstructor": false, "name": "userAddressByCreationBlock", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -6085,7 +6085,7 @@ "isConstructor": false, "name": "userAddressByConfirmationCode", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -7018,7 +7018,7 @@ "isConstructor": false, "name": "userAddressByAddress", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -7384,7 +7384,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1598, + "referencedDeclaration": 1580, "type": "function () pure returns (bytes32)", "value": "keccak256" }, @@ -7570,7 +7570,7 @@ "isConstructor": false, "name": "userAddressByKeccakIdentifier", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -8354,7 +8354,7 @@ "isConstructor": false, "name": "userLastSubmittedName", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -8696,7 +8696,7 @@ "isConstructor": false, "name": "userLastConfirmedName", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9277,7 +9277,7 @@ ], "name": "userSubmittedAddressesCount", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9458,7 +9458,7 @@ ], "name": "userConfirmedAddressesCount", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9988,7 +9988,7 @@ "isConstructor": false, "name": "userAddress", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -10849,7 +10849,7 @@ "isConstructor": false, "name": "userAddressInfo", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -11417,7 +11417,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1592", + "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1574", "typeString": "contract ProofOfPhysicalAddress" } ], @@ -11438,7 +11438,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1621, + "referencedDeclaration": 1603, "type": "contract ProofOfPhysicalAddress", "value": "this" }, @@ -11780,7 +11780,7 @@ ], "name": "registerAddress", "payable": true, - "scope": 1592, + "scope": 1574, "stateMutability": "payable", "superFunction": null, "visibility": "public" @@ -12120,7 +12120,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -12273,7 +12273,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -12426,7 +12426,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -12579,7 +12579,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -12732,7 +12732,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -12885,7 +12885,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -13038,7 +13038,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -13079,7 +13079,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -13149,7 +13149,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -13238,7 +13238,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -13463,7 +13463,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1598, + "referencedDeclaration": 1580, "type": "function () pure returns (bytes32)", "value": "keccak256" }, @@ -13489,7 +13489,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -13652,7 +13652,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -13831,7 +13831,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -14005,7 +14005,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -14131,7 +14131,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -14254,7 +14254,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -14295,7 +14295,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1596, + "referencedDeclaration": 1578, "type": "block", "value": "block" }, @@ -14893,7 +14893,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1596, + "referencedDeclaration": 1578, "type": "block", "value": "block" }, @@ -15070,7 +15070,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1598, + "referencedDeclaration": 1580, "type": "function () pure returns (bytes32)", "value": "keccak256" }, @@ -15251,7 +15251,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -15415,7 +15415,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -15486,7 +15486,7 @@ "isConstructor": false, "name": "unregisterAddress", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -15498,7 +15498,7 @@ "attributes": { "constant": false, "name": "country", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -15524,7 +15524,7 @@ "attributes": { "constant": false, "name": "state", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -15550,7 +15550,7 @@ "attributes": { "constant": false, "name": "city", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -15576,7 +15576,7 @@ "attributes": { "constant": false, "name": "location", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -15602,7 +15602,7 @@ "attributes": { "constant": false, "name": "zip", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -15674,7 +15674,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -15706,7 +15706,7 @@ "attributes": { "constant": false, "name": "found", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -15745,7 +15745,7 @@ "attributes": { "constant": false, "name": "index", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -15784,7 +15784,7 @@ "attributes": { "constant": false, "name": "confirmed", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -15954,7 +15954,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -16080,7 +16080,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, @@ -16123,7 +16123,7 @@ "attributes": { "constant": false, "name": "keccakIdentifier", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -16221,7 +16221,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -16353,7 +16353,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1592", + "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1574", "typeString": "contract ProofOfPhysicalAddress" } ], @@ -16374,7 +16374,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1621, + "referencedDeclaration": 1603, "type": "contract ProofOfPhysicalAddress", "value": "this" }, @@ -16405,7 +16405,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -16453,7 +16453,7 @@ "attributes": { "constant": false, "name": "length", - "scope": 1439, + "scope": 1421, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -16541,7 +16541,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, @@ -16575,59 +16575,10 @@ "src": "11344:59:3" }, { + "attributes": { + "falseBody": null + }, "children": [ - { - "attributes": { - "assignments": [ - 1354 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "i", - "scope": 1439, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1353, - "name": "ElementaryTypeName", - "src": "11419:7:3" - } - ], - "id": 1354, - "name": "VariableDeclaration", - "src": "11419:9:3" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1298, - "type": "uint256", - "value": "index" - }, - "id": 1355, - "name": "Identifier", - "src": "11431:5:3" - } - ], - "id": 1356, - "name": "VariableDeclarationStatement", - "src": "11419:17:3" - }, { "attributes": { "argumentTypes": null, @@ -16639,7 +16590,7 @@ "isLValue": false, "isPure": false, "lValueRequested": false, - "operator": "<", + "operator": "!=", "type": "bool" }, "children": [ @@ -16649,13 +16600,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1354, + "referencedDeclaration": 1298, "type": "uint256", - "value": "i" + "value": "index" }, - "id": 1357, + "id": 1353, "name": "Identifier", - "src": "11438:1:3" + "src": "11418:5:3" }, { "attributes": { @@ -16682,9 +16633,9 @@ "type": "uint256", "value": "length" }, - "id": 1358, + "id": 1354, "name": "Identifier", - "src": "11442:6:3" + "src": "11427:6:3" }, { "attributes": { @@ -16699,57 +16650,19 @@ "type": "int_const 1", "value": "1" }, - "id": 1359, + "id": 1355, "name": "Literal", - "src": "11451:1:3" + "src": "11436:1:3" } ], - "id": 1360, + "id": 1356, "name": "BinaryOperation", - "src": "11442:10:3" + "src": "11427:10:3" } ], - "id": 1361, + "id": 1357, "name": "BinaryOperation", - "src": "11438:14:3" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1354, - "type": "uint256", - "value": "i" - }, - "id": 1362, - "name": "Identifier", - "src": "11454:1:3" - } - ], - "id": 1363, - "name": "UnaryOperation", - "src": "11454:3:3" - } - ], - "id": 1364, - "name": "ExpressionStatement", - "src": "11454:3:3" + "src": "11418:19:3" }, { "children": [ @@ -16808,9 +16721,9 @@ "type": "mapping(address => struct ProofOfPhysicalAddress.User storage ref)", "value": "users" }, - "id": 1365, + "id": 1358, "name": "Identifier", - "src": "11473:5:3" + "src": "11453:5:3" }, { "attributes": { @@ -16830,28 +16743,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1366, + "id": 1359, "name": "Identifier", - "src": "11479:3:3" + "src": "11459:3:3" } ], - "id": 1367, + "id": 1360, "name": "MemberAccess", - "src": "11479:10:3" + "src": "11459:10:3" } ], - "id": 1368, + "id": 1361, "name": "IndexAccess", - "src": "11473:17:3" + "src": "11453:17:3" } ], - "id": 1369, + "id": 1362, "name": "MemberAccess", - "src": "11473:35:3" + "src": "11453:35:3" }, { "attributes": { @@ -16859,18 +16772,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1354, + "referencedDeclaration": 1298, "type": "uint256", - "value": "i" + "value": "index" }, - "id": 1370, + "id": 1363, "name": "Identifier", - "src": "11509:1:3" + "src": "11489:5:3" } ], - "id": 1371, + "id": 1364, "name": "IndexAccess", - "src": "11473:38:3" + "src": "11453:42:3" }, { "attributes": { @@ -16914,9 +16827,9 @@ "type": "mapping(address => struct ProofOfPhysicalAddress.User storage ref)", "value": "users" }, - "id": 1372, + "id": 1365, "name": "Identifier", - "src": "11514:5:3" + "src": "11498:5:3" }, { "attributes": { @@ -16936,28 +16849,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1373, + "id": 1366, "name": "Identifier", - "src": "11520:3:3" + "src": "11504:3:3" } ], - "id": 1374, + "id": 1367, "name": "MemberAccess", - "src": "11520:10:3" + "src": "11504:10:3" } ], - "id": 1375, + "id": 1368, "name": "IndexAccess", - "src": "11514:17:3" + "src": "11498:17:3" } ], - "id": 1376, + "id": 1369, "name": "MemberAccess", - "src": "11514:35:3" + "src": "11498:35:3" }, { "attributes": { @@ -16970,7 +16883,7 @@ "isLValue": false, "isPure": false, "lValueRequested": false, - "operator": "+", + "operator": "-", "type": "uint256" }, "children": [ @@ -16980,13 +16893,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1354, + "referencedDeclaration": 1345, "type": "uint256", - "value": "i" + "value": "length" }, - "id": 1377, + "id": 1370, "name": "Identifier", - "src": "11550:1:3" + "src": "11534:6:3" }, { "attributes": { @@ -17001,206 +16914,39 @@ "type": "int_const 1", "value": "1" }, - "id": 1378, + "id": 1371, "name": "Literal", - "src": "11552:1:3" + "src": "11543:1:3" } ], - "id": 1379, + "id": 1372, "name": "BinaryOperation", - "src": "11550:3:3" + "src": "11534:10:3" } ], - "id": 1380, + "id": 1373, "name": "IndexAccess", - "src": "11514:40:3" + "src": "11498:47:3" } ], - "id": 1381, + "id": 1374, "name": "Assignment", - "src": "11473:81:3" + "src": "11453:92:3" } ], - "id": 1382, + "id": 1375, "name": "ExpressionStatement", - "src": "11473:81:3" + "src": "11453:92:3" } ], - "id": 1383, + "id": 1376, "name": "Block", - "src": "11459:106:3" + "src": "11439:117:3" } ], - "id": 1384, - "name": "ForStatement", - "src": "11414:151:3" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "delete", - "prefix": true, - "type": "tuple()" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "struct ProofOfPhysicalAddress.PhysicalAddress storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "physicalAddresses", - "referencedDeclaration": 280, - "type": "struct ProofOfPhysicalAddress.PhysicalAddress storage ref[] storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct ProofOfPhysicalAddress.User storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 285, - "type": "mapping(address => struct ProofOfPhysicalAddress.User storage ref)", - "value": "users" - }, - "id": 1385, - "name": "Identifier", - "src": "11582:5:3" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1604, - "type": "msg", - "value": "msg" - }, - "id": 1386, - "name": "Identifier", - "src": "11588:3:3" - } - ], - "id": 1387, - "name": "MemberAccess", - "src": "11588:10:3" - } - ], - "id": 1388, - "name": "IndexAccess", - "src": "11582:17:3" - } - ], - "id": 1389, - "name": "MemberAccess", - "src": "11582:35:3" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1345, - "type": "uint256", - "value": "length" - }, - "id": 1390, - "name": "Identifier", - "src": "11618:6:3" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 1391, - "name": "Literal", - "src": "11627:1:3" - } - ], - "id": 1392, - "name": "BinaryOperation", - "src": "11618:10:3" - } - ], - "id": 1393, - "name": "IndexAccess", - "src": "11582:47:3" - } - ], - "id": 1394, - "name": "UnaryOperation", - "src": "11575:54:3" - } - ], - "id": 1395, - "name": "ExpressionStatement", - "src": "11575:54:3" + "id": 1377, + "name": "IfStatement", + "src": "11414:142:3" }, { "children": [ @@ -17260,9 +17006,9 @@ "type": "mapping(address => struct ProofOfPhysicalAddress.User storage ref)", "value": "users" }, - "id": 1396, + "id": 1378, "name": "Identifier", - "src": "11639:5:3" + "src": "11565:5:3" }, { "attributes": { @@ -17282,43 +17028,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1397, + "id": 1379, "name": "Identifier", - "src": "11645:3:3" + "src": "11571:3:3" } ], - "id": 1398, + "id": 1380, "name": "MemberAccess", - "src": "11645:10:3" + "src": "11571:10:3" } ], - "id": 1399, + "id": 1381, "name": "IndexAccess", - "src": "11639:17:3" + "src": "11565:17:3" } ], - "id": 1400, + "id": 1382, "name": "MemberAccess", - "src": "11639:35:3" + "src": "11565:35:3" } ], - "id": 1401, + "id": 1383, "name": "MemberAccess", - "src": "11639:42:3" + "src": "11565:42:3" } ], - "id": 1402, + "id": 1384, "name": "UnaryOperation", - "src": "11639:44:3" + "src": "11565:44:3" } ], - "id": 1403, + "id": 1385, "name": "ExpressionStatement", - "src": "11639:44:3" + "src": "11565:44:3" }, { "attributes": { @@ -17384,9 +17130,9 @@ "type": "mapping(address => struct ProofOfPhysicalAddress.User storage ref)", "value": "users" }, - "id": 1404, + "id": 1386, "name": "Identifier", - "src": "11698:5:3" + "src": "11624:5:3" }, { "attributes": { @@ -17406,33 +17152,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1405, + "id": 1387, "name": "Identifier", - "src": "11704:3:3" + "src": "11630:3:3" } ], - "id": 1406, + "id": 1388, "name": "MemberAccess", - "src": "11704:10:3" + "src": "11630:10:3" } ], - "id": 1407, + "id": 1389, "name": "IndexAccess", - "src": "11698:17:3" + "src": "11624:17:3" } ], - "id": 1408, + "id": 1390, "name": "MemberAccess", - "src": "11698:35:3" + "src": "11624:35:3" } ], - "id": 1409, + "id": 1391, "name": "MemberAccess", - "src": "11698:42:3" + "src": "11624:42:3" }, { "attributes": { @@ -17447,14 +17193,14 @@ "type": "int_const 0", "value": "0" }, - "id": 1410, + "id": 1392, "name": "Literal", - "src": "11744:1:3" + "src": "11670:1:3" } ], - "id": 1411, + "id": 1393, "name": "BinaryOperation", - "src": "11698:47:3" + "src": "11624:47:3" }, { "children": [ @@ -17492,9 +17238,9 @@ "type": "mapping(address => struct ProofOfPhysicalAddress.User storage ref)", "value": "users" }, - "id": 1412, + "id": 1394, "name": "Identifier", - "src": "11768:5:3" + "src": "11694:5:3" }, { "attributes": { @@ -17514,33 +17260,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1413, + "id": 1395, "name": "Identifier", - "src": "11774:3:3" + "src": "11700:3:3" } ], - "id": 1414, + "id": 1396, "name": "MemberAccess", - "src": "11774:10:3" + "src": "11700:10:3" } ], - "id": 1415, + "id": 1397, "name": "IndexAccess", - "src": "11768:17:3" + "src": "11694:17:3" } ], - "id": 1416, + "id": 1398, "name": "UnaryOperation", - "src": "11761:24:3" + "src": "11687:24:3" } ], - "id": 1417, + "id": 1399, "name": "ExpressionStatement", - "src": "11761:24:3" + "src": "11687:24:3" }, { "children": [ @@ -17566,29 +17312,29 @@ "type": "uint64", "value": "totalUsers" }, - "id": 1418, + "id": 1400, "name": "Identifier", - "src": "11799:10:3" + "src": "11725:10:3" } ], - "id": 1419, + "id": 1401, "name": "UnaryOperation", - "src": "11799:12:3" + "src": "11725:12:3" } ], - "id": 1420, + "id": 1402, "name": "ExpressionStatement", - "src": "11799:12:3" + "src": "11725:12:3" } ], - "id": 1421, + "id": 1403, "name": "Block", - "src": "11747:75:3" + "src": "11673:75:3" } ], - "id": 1422, + "id": 1404, "name": "IfStatement", - "src": "11694:128:3" + "src": "11620:128:3" }, { "children": [ @@ -17614,19 +17360,19 @@ "type": "uint64", "value": "totalAddresses" }, - "id": 1423, + "id": 1405, "name": "Identifier", - "src": "11832:14:3" + "src": "11758:14:3" } ], - "id": 1424, + "id": 1406, "name": "UnaryOperation", - "src": "11832:16:3" + "src": "11758:16:3" } ], - "id": 1425, + "id": 1407, "name": "ExpressionStatement", - "src": "11832:16:3" + "src": "11758:16:3" }, { "attributes": { @@ -17643,9 +17389,9 @@ "type": "bool", "value": "confirmed" }, - "id": 1426, + "id": 1408, "name": "Identifier", - "src": "11862:9:3" + "src": "11788:9:3" }, { "children": [ @@ -17673,29 +17419,29 @@ "type": "uint64", "value": "totalConfirmed" }, - "id": 1427, + "id": 1409, "name": "Identifier", - "src": "11887:14:3" + "src": "11813:14:3" } ], - "id": 1428, + "id": 1410, "name": "UnaryOperation", - "src": "11887:16:3" + "src": "11813:16:3" } ], - "id": 1429, + "id": 1411, "name": "ExpressionStatement", - "src": "11887:16:3" + "src": "11813:16:3" } ], - "id": 1430, + "id": 1412, "name": "Block", - "src": "11873:41:3" + "src": "11799:41:3" } ], - "id": 1431, + "id": 1413, "name": "IfStatement", - "src": "11858:56:3" + "src": "11784:56:3" }, { "children": [ @@ -17733,9 +17479,9 @@ "type": "function (address,bytes32)", "value": "LogAddressUnregistered" }, - "id": 1432, + "id": 1414, "name": "Identifier", - "src": "11924:22:3" + "src": "11850:22:3" }, { "attributes": { @@ -17755,18 +17501,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1433, + "id": 1415, "name": "Identifier", - "src": "11947:3:3" + "src": "11873:3:3" } ], - "id": 1434, + "id": 1416, "name": "MemberAccess", - "src": "11947:10:3" + "src": "11873:10:3" }, { "attributes": { @@ -17778,29 +17524,29 @@ "type": "bytes32", "value": "keccakIdentifier" }, - "id": 1435, + "id": 1417, "name": "Identifier", - "src": "11959:16:3" + "src": "11885:16:3" } ], - "id": 1436, + "id": 1418, "name": "FunctionCall", - "src": "11924:52:3" + "src": "11850:52:3" } ], - "id": 1437, + "id": 1419, "name": "ExpressionStatement", - "src": "11924:52:3" + "src": "11850:52:3" } ], - "id": 1438, + "id": 1420, "name": "Block", - "src": "10872:1111:3" + "src": "10872:1037:3" } ], - "id": 1439, + "id": 1421, "name": "FunctionDefinition", - "src": "10726:1257:3" + "src": "10726:1183:3" }, { "attributes": { @@ -17809,7 +17555,7 @@ "isConstructor": false, "name": "confirmAddress", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -17821,7 +17567,7 @@ "attributes": { "constant": false, "name": "confirmationCodePlain", - "scope": 1539, + "scope": 1521, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -17834,20 +17580,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 1440, + "id": 1422, "name": "ElementaryTypeName", - "src": "12013:6:3" + "src": "11939:6:3" } ], - "id": 1441, + "id": 1423, "name": "VariableDeclaration", - "src": "12013:28:3" + "src": "11939:28:3" }, { "attributes": { "constant": false, "name": "sigV", - "scope": 1539, + "scope": 1521, "stateVariable": false, "storageLocation": "default", "type": "uint8", @@ -17860,20 +17606,20 @@ "name": "uint8", "type": "uint8" }, - "id": 1442, + "id": 1424, "name": "ElementaryTypeName", - "src": "12043:5:3" + "src": "11969:5:3" } ], - "id": 1443, + "id": 1425, "name": "VariableDeclaration", - "src": "12043:10:3" + "src": "11969:10:3" }, { "attributes": { "constant": false, "name": "sigR", - "scope": 1539, + "scope": 1521, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -17886,20 +17632,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1444, + "id": 1426, "name": "ElementaryTypeName", - "src": "12055:7:3" + "src": "11981:7:3" } ], - "id": 1445, + "id": 1427, "name": "VariableDeclaration", - "src": "12055:12:3" + "src": "11981:12:3" }, { "attributes": { "constant": false, "name": "sigS", - "scope": 1539, + "scope": 1521, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -17912,19 +17658,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1446, + "id": 1428, "name": "ElementaryTypeName", - "src": "12069:7:3" + "src": "11995:7:3" } ], - "id": 1447, + "id": 1429, "name": "VariableDeclaration", - "src": "12069:12:3" + "src": "11995:12:3" } ], - "id": 1448, + "id": 1430, "name": "ParameterList", - "src": "12012:70:3" + "src": "11938:70:3" }, { "attributes": { @@ -17933,9 +17679,9 @@ ] }, "children": [], - "id": 1453, + "id": 1435, "name": "ParameterList", - "src": "12126:0:3" + "src": "12052:0:3" }, { "children": [ @@ -17949,9 +17695,9 @@ "type": "modifier (address)", "value": "checkUserExists" }, - "id": 1449, + "id": 1431, "name": "Identifier", - "src": "12094:15:3" + "src": "12020:15:3" }, { "attributes": { @@ -17971,23 +17717,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1450, + "id": 1432, "name": "Identifier", - "src": "12110:3:3" + "src": "12036:3:3" } ], - "id": 1451, + "id": 1433, "name": "MemberAccess", - "src": "12110:10:3" + "src": "12036:10:3" } ], - "id": 1452, + "id": 1434, "name": "ModifierInvocation", - "src": "12094:27:3" + "src": "12020:27:3" }, { "children": [ @@ -18019,13 +17765,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, - "id": 1454, + "id": 1436, "name": "Identifier", - "src": "12136:7:3" + "src": "12062:7:3" }, { "attributes": { @@ -18084,9 +17830,9 @@ "type": "type(bytes storage pointer)", "value": "bytes" }, - "id": 1455, + "id": 1437, "name": "ElementaryTypeNameExpression", - "src": "12144:5:3" + "src": "12070:5:3" }, { "attributes": { @@ -18094,23 +17840,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1441, + "referencedDeclaration": 1423, "type": "string memory", "value": "confirmationCodePlain" }, - "id": 1456, + "id": 1438, "name": "Identifier", - "src": "12150:21:3" + "src": "12076:21:3" } ], - "id": 1457, + "id": 1439, "name": "FunctionCall", - "src": "12144:28:3" + "src": "12070:28:3" } ], - "id": 1458, + "id": 1440, "name": "MemberAccess", - "src": "12144:35:3" + "src": "12070:35:3" }, { "attributes": { @@ -18125,29 +17871,29 @@ "type": "int_const 0", "value": "0" }, - "id": 1459, + "id": 1441, "name": "Literal", - "src": "12182:1:3" + "src": "12108:1:3" } ], - "id": 1460, + "id": 1442, "name": "BinaryOperation", - "src": "12144:39:3" + "src": "12070:39:3" } ], - "id": 1461, + "id": 1443, "name": "FunctionCall", - "src": "12136:48:3" + "src": "12062:48:3" } ], - "id": 1462, + "id": 1444, "name": "ExpressionStatement", - "src": "12136:48:3" + "src": "12062:48:3" }, { "attributes": { "assignments": [ - 1464 + 1446 ] }, "children": [ @@ -18155,7 +17901,7 @@ "attributes": { "constant": false, "name": "data", - "scope": 1539, + "scope": 1521, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -18168,14 +17914,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1463, + "id": 1445, "name": "ElementaryTypeName", - "src": "12195:7:3" + "src": "12121:7:3" } ], - "id": 1464, + "id": 1446, "name": "VariableDeclaration", - "src": "12195:12:3" + "src": "12121:12:3" }, { "attributes": { @@ -18207,13 +17953,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1598, + "referencedDeclaration": 1580, "type": "function () pure returns (bytes32)", "value": "keccak256" }, - "id": 1465, + "id": 1447, "name": "Identifier", - "src": "12210:9:3" + "src": "12136:9:3" }, { "attributes": { @@ -18233,18 +17979,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1466, + "id": 1448, "name": "Identifier", - "src": "12233:3:3" + "src": "12159:3:3" } ], - "id": 1467, + "id": 1449, "name": "MemberAccess", - "src": "12233:10:3" + "src": "12159:10:3" }, { "attributes": { @@ -18252,23 +17998,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1441, + "referencedDeclaration": 1423, "type": "string memory", "value": "confirmationCodePlain" }, - "id": 1468, + "id": 1450, "name": "Identifier", - "src": "12257:21:3" + "src": "12183:21:3" } ], - "id": 1469, + "id": 1451, "name": "FunctionCall", - "src": "12210:78:3" + "src": "12136:78:3" } ], - "id": 1470, + "id": 1452, "name": "VariableDeclarationStatement", - "src": "12195:93:3" + "src": "12121:93:3" }, { "children": [ @@ -18298,13 +18044,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, - "id": 1471, + "id": 1453, "name": "Identifier", - "src": "12298:7:3" + "src": "12224:7:3" }, { "attributes": { @@ -18348,9 +18094,9 @@ "type": "function (bytes32,uint8,bytes32,bytes32) view returns (bool)", "value": "signerIsValid" }, - "id": 1472, + "id": 1454, "name": "Identifier", - "src": "12306:13:3" + "src": "12232:13:3" }, { "attributes": { @@ -18358,13 +18104,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1464, + "referencedDeclaration": 1446, "type": "bytes32", "value": "data" }, - "id": 1473, + "id": 1455, "name": "Identifier", - "src": "12320:4:3" + "src": "12246:4:3" }, { "attributes": { @@ -18372,13 +18118,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1443, + "referencedDeclaration": 1425, "type": "uint8", "value": "sigV" }, - "id": 1474, + "id": 1456, "name": "Identifier", - "src": "12326:4:3" + "src": "12252:4:3" }, { "attributes": { @@ -18386,13 +18132,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1445, + "referencedDeclaration": 1427, "type": "bytes32", "value": "sigR" }, - "id": 1475, + "id": 1457, "name": "Identifier", - "src": "12332:4:3" + "src": "12258:4:3" }, { "attributes": { @@ -18400,28 +18146,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1447, + "referencedDeclaration": 1429, "type": "bytes32", "value": "sigS" }, - "id": 1476, + "id": 1458, "name": "Identifier", - "src": "12338:4:3" + "src": "12264:4:3" } ], - "id": 1477, + "id": 1459, "name": "FunctionCall", - "src": "12306:37:3" + "src": "12232:37:3" } ], - "id": 1478, + "id": 1460, "name": "FunctionCall", - "src": "12298:46:3" + "src": "12224:46:3" } ], - "id": 1479, + "id": 1461, "name": "ExpressionStatement", - "src": "12298:46:3" + "src": "12224:46:3" }, { "attributes": { @@ -18435,7 +18181,7 @@ "attributes": { "constant": false, "name": "found", - "scope": 1539, + "scope": 1521, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -18448,19 +18194,19 @@ "name": "bool", "type": "bool" }, - "id": 1480, + "id": 1462, "name": "ElementaryTypeName", - "src": "12355:4:3" + "src": "12281:4:3" } ], - "id": 1481, + "id": 1463, "name": "VariableDeclaration", - "src": "12355:10:3" + "src": "12281:10:3" } ], - "id": 1482, + "id": 1464, "name": "VariableDeclarationStatement", - "src": "12355:10:3" + "src": "12281:10:3" }, { "attributes": { @@ -18474,7 +18220,7 @@ "attributes": { "constant": false, "name": "ai", - "scope": 1539, + "scope": 1521, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -18487,19 +18233,19 @@ "name": "uint", "type": "uint256" }, - "id": 1483, + "id": 1465, "name": "ElementaryTypeName", - "src": "12375:4:3" + "src": "12301:4:3" } ], - "id": 1484, + "id": 1466, "name": "VariableDeclaration", - "src": "12375:7:3" + "src": "12301:7:3" } ], - "id": 1485, + "id": 1467, "name": "VariableDeclarationStatement", - "src": "12375:7:3" + "src": "12301:7:3" }, { "attributes": { @@ -18513,7 +18259,7 @@ "attributes": { "constant": false, "name": "confirmed", - "scope": 1539, + "scope": 1521, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -18526,19 +18272,19 @@ "name": "bool", "type": "bool" }, - "id": 1486, + "id": 1468, "name": "ElementaryTypeName", - "src": "12392:4:3" + "src": "12318:4:3" } ], - "id": 1487, + "id": 1469, "name": "VariableDeclaration", - "src": "12392:14:3" + "src": "12318:14:3" } ], - "id": 1488, + "id": 1470, "name": "VariableDeclarationStatement", - "src": "12392:14:3" + "src": "12318:14:3" }, { "attributes": { @@ -18552,7 +18298,7 @@ "attributes": { "constant": false, "name": "keccakIdentifier", - "scope": 1539, + "scope": 1521, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -18565,19 +18311,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1489, + "id": 1471, "name": "ElementaryTypeName", - "src": "12416:7:3" + "src": "12342:7:3" } ], - "id": 1490, + "id": 1472, "name": "VariableDeclaration", - "src": "12416:24:3" + "src": "12342:24:3" } ], - "id": 1491, + "id": 1473, "name": "VariableDeclarationStatement", - "src": "12416:24:3" + "src": "12342:24:3" }, { "children": [ @@ -18609,13 +18355,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1481, + "referencedDeclaration": 1463, "type": "bool", "value": "found" }, - "id": 1492, + "id": 1474, "name": "Identifier", - "src": "12451:5:3" + "src": "12377:5:3" }, { "attributes": { @@ -18623,13 +18369,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1484, + "referencedDeclaration": 1466, "type": "uint256", "value": "ai" }, - "id": 1493, + "id": 1475, "name": "Identifier", - "src": "12458:2:3" + "src": "12384:2:3" }, { "attributes": { @@ -18637,13 +18383,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1487, + "referencedDeclaration": 1469, "type": "bool", "value": "confirmed" }, - "id": 1494, + "id": 1476, "name": "Identifier", - "src": "12462:9:3" + "src": "12388:9:3" }, { "attributes": { @@ -18651,18 +18397,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1490, + "referencedDeclaration": 1472, "type": "bytes32", "value": "keccakIdentifier" }, - "id": 1495, + "id": 1477, "name": "Identifier", - "src": "12473:16:3" + "src": "12399:16:3" } ], - "id": 1496, + "id": 1478, "name": "TupleExpression", - "src": "12450:40:3" + "src": "12376:40:3" }, { "attributes": { @@ -18698,9 +18444,9 @@ "type": "function (address,bytes32) view returns (bool,uint256,bool,bytes32)", "value": "userAddressByConfirmationCode" }, - "id": 1497, + "id": 1479, "name": "Identifier", - "src": "12493:29:3" + "src": "12419:29:3" }, { "attributes": { @@ -18720,18 +18466,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1498, + "id": 1480, "name": "Identifier", - "src": "12536:3:3" + "src": "12462:3:3" } ], - "id": 1499, + "id": 1481, "name": "MemberAccess", - "src": "12536:10:3" + "src": "12462:10:3" }, { "attributes": { @@ -18759,13 +18505,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1598, + "referencedDeclaration": 1580, "type": "function () pure returns (bytes32)", "value": "keccak256" }, - "id": 1500, + "id": 1482, "name": "Identifier", - "src": "12560:9:3" + "src": "12486:9:3" }, { "attributes": { @@ -18773,33 +18519,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1441, + "referencedDeclaration": 1423, "type": "string memory", "value": "confirmationCodePlain" }, - "id": 1501, + "id": 1483, "name": "Identifier", - "src": "12570:21:3" + "src": "12496:21:3" } ], - "id": 1502, + "id": 1484, "name": "FunctionCall", - "src": "12560:32:3" + "src": "12486:32:3" } ], - "id": 1503, + "id": 1485, "name": "FunctionCall", - "src": "12493:109:3" + "src": "12419:109:3" } ], - "id": 1504, + "id": 1486, "name": "Assignment", - "src": "12450:152:3" + "src": "12376:152:3" } ], - "id": 1505, + "id": 1487, "name": "ExpressionStatement", - "src": "12450:152:3" + "src": "12376:152:3" }, { "children": [ @@ -18829,13 +18575,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, - "id": 1506, + "id": 1488, "name": "Identifier", - "src": "12612:7:3" + "src": "12538:7:3" }, { "attributes": { @@ -18843,23 +18589,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1481, + "referencedDeclaration": 1463, "type": "bool", "value": "found" }, - "id": 1507, + "id": 1489, "name": "Identifier", - "src": "12620:5:3" + "src": "12546:5:3" } ], - "id": 1508, + "id": 1490, "name": "FunctionCall", - "src": "12612:14:3" + "src": "12538:14:3" } ], - "id": 1509, + "id": 1491, "name": "ExpressionStatement", - "src": "12612:14:3" + "src": "12538:14:3" }, { "children": [ @@ -18889,13 +18635,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, - "id": 1510, + "id": 1492, "name": "Identifier", - "src": "12636:7:3" + "src": "12562:7:3" }, { "attributes": { @@ -18915,28 +18661,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1487, + "referencedDeclaration": 1469, "type": "bool", "value": "confirmed" }, - "id": 1511, + "id": 1493, "name": "Identifier", - "src": "12645:9:3" + "src": "12571:9:3" } ], - "id": 1512, + "id": 1494, "name": "UnaryOperation", - "src": "12644:10:3" + "src": "12570:10:3" } ], - "id": 1513, + "id": 1495, "name": "FunctionCall", - "src": "12636:19:3" + "src": "12562:19:3" } ], - "id": 1514, + "id": 1496, "name": "ExpressionStatement", - "src": "12636:19:3" + "src": "12562:19:3" }, { "children": [ @@ -18990,14 +18736,14 @@ "type": "contract EthereumClaimsRegistryInterface", "value": "registry" }, - "id": 1515, + "id": 1497, "name": "Identifier", - "src": "12666:8:3" + "src": "12592:8:3" } ], - "id": 1517, + "id": 1499, "name": "MemberAccess", - "src": "12666:17:3" + "src": "12592:17:3" }, { "attributes": { @@ -19017,18 +18763,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1518, + "id": 1500, "name": "Identifier", - "src": "12684:3:3" + "src": "12610:3:3" } ], - "id": 1519, + "id": 1501, "name": "MemberAccess", - "src": "12684:10:3" + "src": "12610:10:3" }, { "attributes": { @@ -19036,13 +18782,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1490, + "referencedDeclaration": 1472, "type": "bytes32", "value": "keccakIdentifier" }, - "id": 1520, + "id": 1502, "name": "Identifier", - "src": "12696:16:3" + "src": "12622:16:3" }, { "attributes": { @@ -19086,14 +18832,14 @@ "type": "type(library PhysicalAddressClaim)", "value": "PhysicalAddressClaim" }, - "id": 1521, + "id": 1503, "name": "Identifier", - "src": "12714:20:3" + "src": "12640:20:3" } ], - "id": 1522, + "id": 1504, "name": "MemberAccess", - "src": "12714:27:3" + "src": "12640:27:3" }, { "attributes": { @@ -19113,33 +18859,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1596, + "referencedDeclaration": 1578, "type": "block", "value": "block" }, - "id": 1523, + "id": 1505, "name": "Identifier", - "src": "12742:5:3" + "src": "12668:5:3" } ], - "id": 1524, + "id": 1506, "name": "MemberAccess", - "src": "12742:12:3" + "src": "12668:12:3" } ], - "id": 1525, + "id": 1507, "name": "FunctionCall", - "src": "12714:41:3" + "src": "12640:41:3" } ], - "id": 1526, + "id": 1508, "name": "FunctionCall", - "src": "12666:90:3" + "src": "12592:90:3" } ], - "id": 1527, + "id": 1509, "name": "ExpressionStatement", - "src": "12666:90:3" + "src": "12592:90:3" }, { "children": [ @@ -19164,9 +18910,9 @@ "type": "uint64", "value": "totalConfirmed" }, - "id": 1528, + "id": 1510, "name": "Identifier", - "src": "12766:14:3" + "src": "12692:14:3" }, { "attributes": { @@ -19181,19 +18927,19 @@ "type": "int_const 1", "value": "1" }, - "id": 1529, + "id": 1511, "name": "Literal", - "src": "12784:1:3" + "src": "12710:1:3" } ], - "id": 1530, + "id": 1512, "name": "Assignment", - "src": "12766:19:3" + "src": "12692:19:3" } ], - "id": 1531, + "id": 1513, "name": "ExpressionStatement", - "src": "12766:19:3" + "src": "12692:19:3" }, { "children": [ @@ -19231,9 +18977,9 @@ "type": "function (address,bytes32)", "value": "LogAddressConfirmed" }, - "id": 1532, + "id": 1514, "name": "Identifier", - "src": "12796:19:3" + "src": "12722:19:3" }, { "attributes": { @@ -19253,18 +18999,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1586, "type": "msg", "value": "msg" }, - "id": 1533, + "id": 1515, "name": "Identifier", - "src": "12816:3:3" + "src": "12742:3:3" } ], - "id": 1534, + "id": 1516, "name": "MemberAccess", - "src": "12816:10:3" + "src": "12742:10:3" }, { "attributes": { @@ -19272,33 +19018,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1490, + "referencedDeclaration": 1472, "type": "bytes32", "value": "keccakIdentifier" }, - "id": 1535, + "id": 1517, "name": "Identifier", - "src": "12828:16:3" + "src": "12754:16:3" } ], - "id": 1536, + "id": 1518, "name": "FunctionCall", - "src": "12796:49:3" + "src": "12722:49:3" } ], - "id": 1537, + "id": 1519, "name": "ExpressionStatement", - "src": "12796:49:3" + "src": "12722:49:3" } ], - "id": 1538, + "id": 1520, "name": "Block", - "src": "12126:726:3" + "src": "12052:726:3" } ], - "id": 1539, + "id": 1521, "name": "FunctionDefinition", - "src": "11989:863:3" + "src": "11915:863:3" }, { "attributes": { @@ -19307,7 +19053,7 @@ "isConstructor": false, "name": "claimTokens", "payable": false, - "scope": 1592, + "scope": 1574, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -19319,7 +19065,7 @@ "attributes": { "constant": false, "name": "_token", - "scope": 1591, + "scope": 1573, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -19332,20 +19078,20 @@ "name": "address", "type": "address" }, - "id": 1540, + "id": 1522, "name": "ElementaryTypeName", - "src": "12879:7:3" + "src": "12805:7:3" } ], - "id": 1541, + "id": 1523, "name": "VariableDeclaration", - "src": "12879:14:3" + "src": "12805:14:3" }, { "attributes": { "constant": false, "name": "_to", - "scope": 1591, + "scope": 1573, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -19358,19 +19104,19 @@ "name": "address", "type": "address" }, - "id": 1542, + "id": 1524, "name": "ElementaryTypeName", - "src": "12895:7:3" + "src": "12821:7:3" } ], - "id": 1543, + "id": 1525, "name": "VariableDeclaration", - "src": "12895:11:3" + "src": "12821:11:3" } ], - "id": 1544, + "id": 1526, "name": "ParameterList", - "src": "12878:29:3" + "src": "12804:29:3" }, { "attributes": { @@ -19379,9 +19125,9 @@ ] }, "children": [], - "id": 1547, + "id": 1529, "name": "ParameterList", - "src": "12925:0:3" + "src": "12851:0:3" }, { "attributes": { @@ -19400,14 +19146,14 @@ "type": "modifier ()", "value": "onlyOwner" }, - "id": 1545, + "id": 1527, "name": "Identifier", - "src": "12915:9:3" + "src": "12841:9:3" } ], - "id": 1546, + "id": 1528, "name": "ModifierInvocation", - "src": "12915:9:3" + "src": "12841:9:3" }, { "children": [ @@ -19439,13 +19185,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, - "id": 1548, + "id": 1530, "name": "Identifier", - "src": "12935:7:3" + "src": "12861:7:3" }, { "attributes": { @@ -19468,13 +19214,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1541, + "referencedDeclaration": 1523, "type": "address", "value": "_token" }, - "id": 1549, + "id": 1531, "name": "Identifier", - "src": "12943:6:3" + "src": "12869:6:3" }, { "attributes": { @@ -19506,9 +19252,9 @@ "type": "type(address)", "value": "address" }, - "id": 1550, + "id": 1532, "name": "ElementaryTypeNameExpression", - "src": "12953:7:3" + "src": "12879:7:3" }, { "attributes": { @@ -19523,29 +19269,29 @@ "type": "int_const 0", "value": "0" }, - "id": 1551, + "id": 1533, "name": "Literal", - "src": "12961:1:3" + "src": "12887:1:3" } ], - "id": 1552, + "id": 1534, "name": "FunctionCall", - "src": "12953:10:3" + "src": "12879:10:3" } ], - "id": 1553, + "id": 1535, "name": "BinaryOperation", - "src": "12943:20:3" + "src": "12869:20:3" } ], - "id": 1554, + "id": 1536, "name": "FunctionCall", - "src": "12935:29:3" + "src": "12861:29:3" } ], - "id": 1555, + "id": 1537, "name": "ExpressionStatement", - "src": "12935:29:3" + "src": "12861:29:3" }, { "children": [ @@ -19575,13 +19321,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1607, + "referencedDeclaration": 1589, "type": "function (bool) pure", "value": "require" }, - "id": 1556, + "id": 1538, "name": "Identifier", - "src": "12974:7:3" + "src": "12900:7:3" }, { "attributes": { @@ -19604,13 +19350,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1543, + "referencedDeclaration": 1525, "type": "address", "value": "_to" }, - "id": 1557, + "id": 1539, "name": "Identifier", - "src": "12982:3:3" + "src": "12908:3:3" }, { "attributes": { @@ -19642,9 +19388,9 @@ "type": "type(address)", "value": "address" }, - "id": 1558, + "id": 1540, "name": "ElementaryTypeNameExpression", - "src": "12989:7:3" + "src": "12915:7:3" }, { "attributes": { @@ -19659,34 +19405,34 @@ "type": "int_const 0", "value": "0" }, - "id": 1559, + "id": 1541, "name": "Literal", - "src": "12997:1:3" + "src": "12923:1:3" } ], - "id": 1560, + "id": 1542, "name": "FunctionCall", - "src": "12989:10:3" + "src": "12915:10:3" } ], - "id": 1561, + "id": 1543, "name": "BinaryOperation", - "src": "12982:17:3" + "src": "12908:17:3" } ], - "id": 1562, + "id": 1544, "name": "FunctionCall", - "src": "12974:26:3" + "src": "12900:26:3" } ], - "id": 1563, + "id": 1545, "name": "ExpressionStatement", - "src": "12974:26:3" + "src": "12900:26:3" }, { "attributes": { "assignments": [ - 1565 + 1547 ] }, "children": [ @@ -19694,7 +19440,7 @@ "attributes": { "constant": false, "name": "token", - "scope": 1591, + "scope": 1573, "stateVariable": false, "storageLocation": "default", "type": "contract ERC20", @@ -19709,14 +19455,14 @@ "referencedDeclaration": 68, "type": "contract ERC20" }, - "id": 1564, + "id": 1546, "name": "UserDefinedTypeName", - "src": "13011:5:3" + "src": "12937:5:3" } ], - "id": 1565, + "id": 1547, "name": "VariableDeclaration", - "src": "13011:11:3" + "src": "12937:11:3" }, { "attributes": { @@ -19748,9 +19494,9 @@ "type": "type(contract ERC20)", "value": "ERC20" }, - "id": 1566, + "id": 1548, "name": "Identifier", - "src": "13025:5:3" + "src": "12951:5:3" }, { "attributes": { @@ -19758,28 +19504,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1541, + "referencedDeclaration": 1523, "type": "address", "value": "_token" }, - "id": 1567, + "id": 1549, "name": "Identifier", - "src": "13031:6:3" + "src": "12957:6:3" } ], - "id": 1568, + "id": 1550, "name": "FunctionCall", - "src": "13025:13:3" + "src": "12951:13:3" } ], - "id": 1569, + "id": 1551, "name": "VariableDeclarationStatement", - "src": "13011:27:3" + "src": "12937:27:3" }, { "attributes": { "assignments": [ - 1571 + 1553 ] }, "children": [ @@ -19787,7 +19533,7 @@ "attributes": { "constant": false, "name": "balance", - "scope": 1591, + "scope": 1573, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -19800,14 +19546,14 @@ "name": "uint256", "type": "uint256" }, - "id": 1570, + "id": 1552, "name": "ElementaryTypeName", - "src": "13048:7:3" + "src": "12974:7:3" } ], - "id": 1571, + "id": 1553, "name": "VariableDeclaration", - "src": "13048:15:3" + "src": "12974:15:3" }, { "attributes": { @@ -19828,7 +19574,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1592", + "typeIdentifier": "t_contract$_ProofOfPhysicalAddress_$1574", "typeString": "contract ProofOfPhysicalAddress" } ], @@ -19847,18 +19593,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1565, + "referencedDeclaration": 1547, "type": "contract ERC20", "value": "token" }, - "id": 1572, + "id": 1554, "name": "Identifier", - "src": "13066:5:3" + "src": "12992:5:3" } ], - "id": 1573, + "id": 1555, "name": "MemberAccess", - "src": "13066:15:3" + "src": "12992:15:3" }, { "attributes": { @@ -19866,23 +19612,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1621, + "referencedDeclaration": 1603, "type": "contract ProofOfPhysicalAddress", "value": "this" }, - "id": 1574, + "id": 1556, "name": "Identifier", - "src": "13082:4:3" + "src": "13008:4:3" } ], - "id": 1575, + "id": 1557, "name": "FunctionCall", - "src": "13066:21:3" + "src": "12992:21:3" } ], - "id": 1576, + "id": 1558, "name": "VariableDeclarationStatement", - "src": "13048:39:3" + "src": "12974:39:3" }, { "children": [ @@ -19928,18 +19674,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1565, + "referencedDeclaration": 1547, "type": "contract ERC20", "value": "token" }, - "id": 1577, + "id": 1559, "name": "Identifier", - "src": "13097:5:3" + "src": "13023:5:3" } ], - "id": 1579, + "id": 1561, "name": "MemberAccess", - "src": "13097:14:3" + "src": "13023:14:3" }, { "attributes": { @@ -19947,13 +19693,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1543, + "referencedDeclaration": 1525, "type": "address", "value": "_to" }, - "id": 1580, + "id": 1562, "name": "Identifier", - "src": "13112:3:3" + "src": "13038:3:3" }, { "attributes": { @@ -19961,23 +19707,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1571, + "referencedDeclaration": 1553, "type": "uint256", "value": "balance" }, - "id": 1581, + "id": 1563, "name": "Identifier", - "src": "13117:7:3" + "src": "13043:7:3" } ], - "id": 1582, + "id": 1564, "name": "FunctionCall", - "src": "13097:28:3" + "src": "13023:28:3" } ], - "id": 1583, + "id": 1565, "name": "ExpressionStatement", - "src": "13097:28:3" + "src": "13023:28:3" }, { "children": [ @@ -20019,9 +19765,9 @@ "type": "function (address,address,uint256)", "value": "LogClaimedTokens" }, - "id": 1584, + "id": 1566, "name": "Identifier", - "src": "13135:16:3" + "src": "13061:16:3" }, { "attributes": { @@ -20029,13 +19775,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1541, + "referencedDeclaration": 1523, "type": "address", "value": "_token" }, - "id": 1585, + "id": 1567, "name": "Identifier", - "src": "13152:6:3" + "src": "13078:6:3" }, { "attributes": { @@ -20043,13 +19789,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1543, + "referencedDeclaration": 1525, "type": "address", "value": "_to" }, - "id": 1586, + "id": 1568, "name": "Identifier", - "src": "13160:3:3" + "src": "13086:3:3" }, { "attributes": { @@ -20057,43 +19803,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1571, + "referencedDeclaration": 1553, "type": "uint256", "value": "balance" }, - "id": 1587, + "id": 1569, "name": "Identifier", - "src": "13165:7:3" + "src": "13091:7:3" } ], - "id": 1588, + "id": 1570, "name": "FunctionCall", - "src": "13135:38:3" + "src": "13061:38:3" } ], - "id": 1589, + "id": 1571, "name": "ExpressionStatement", - "src": "13135:38:3" + "src": "13061:38:3" } ], - "id": 1590, + "id": 1572, "name": "Block", - "src": "12925:255:3" + "src": "12851:255:3" } ], - "id": 1591, + "id": 1573, "name": "FunctionDefinition", - "src": "12858:322:3" + "src": "12784:322:3" } ], - "id": 1592, + "id": 1574, "name": "ContractDefinition", - "src": "171:13011:3" + "src": "171:12937:3" } ], - "id": 1593, + "id": 1575, "name": "SourceUnit", - "src": "0:13183:3" + "src": "0:13109:3" }, "compiler": { "name": "solc", @@ -20101,5 +19847,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-05-30T04:12:35.089Z" + "updatedAt": "2018-05-30T17:44:18.908Z" } \ No newline at end of file diff --git a/blockchain/contracts/ProofOfPhysicalAddress.sol b/blockchain/contracts/ProofOfPhysicalAddress.sol index 3ccc8482..67fca697 100644 --- a/blockchain/contracts/ProofOfPhysicalAddress.sol +++ b/blockchain/contracts/ProofOfPhysicalAddress.sol @@ -342,11 +342,9 @@ contract ProofOfPhysicalAddress { // Remove physical address from list uint256 length = users[msg.sender].physicalAddresses.length; - for (uint256 i = index; i < length - 1; i++) { - users[msg.sender].physicalAddresses[i] = users[msg.sender].physicalAddresses[i+1]; + if (index != length - 1) { + users[msg.sender].physicalAddresses[index] = users[msg.sender].physicalAddresses[length - 1]; } - - delete users[msg.sender].physicalAddresses[length - 1]; users[msg.sender].physicalAddresses.length--; if (users[msg.sender].physicalAddresses.length == 0) { diff --git a/blockchain/migrations/1522104575_popa.js b/blockchain/migrations/1522104575_popa.js index 07fc9495..84248ad1 100644 --- a/blockchain/migrations/1522104575_popa.js +++ b/blockchain/migrations/1522104575_popa.js @@ -21,8 +21,8 @@ module.exports = function(deployer, network) { await deployer.deploy(TestERC20); } - await deployer.deploy(POPA, ethereumClaimsRegistryAddress, { - gas: '6000000', - }); + const gas = network === 'coverage' ? '0xfffffffffff' : '6000000'; + + await deployer.deploy(POPA, ethereumClaimsRegistryAddress, { gas }); }); }; diff --git a/blockchain/test/proof_of_physical_address.js b/blockchain/test/proof_of_physical_address.js index ec67fcd1..7ed95a60 100644 --- a/blockchain/test/proof_of_physical_address.js +++ b/blockchain/test/proof_of_physical_address.js @@ -551,6 +551,89 @@ contract('address removal', function(accounts) { }); }); + contract('', () => { + it('should allow to unregister an address (1 of 3)', async () => { + const popa = await ProofOfPhysicalAddress.deployed(); + const args1 = buildRegisterAddressArgs(accounts[0], { address: '742 evergreen terrace' }); + const args2 = buildRegisterAddressArgs(accounts[0], { address: '743 evergreen terrace' }); + const args3 = buildRegisterAddressArgs(accounts[0], { address: '744 evergreen terrace' }); + + await registerAddress(popa, args1, accounts[0]); + await registerAddress(popa, args2, accounts[0]); + await registerAddress(popa, args3, accounts[0]); + + let addressesCount = await popa.userSubmittedAddressesCount(accounts[0]); + assert.equal(+addressesCount, 3); + + await unregisterAddress(popa, args1, accounts[0]); + + addressesCount = await popa.userSubmittedAddressesCount(accounts[0]); + assert.equal(+addressesCount, 2); + + const [, , , location1] = await popa.userAddress(accounts[0], 0); + const [, , , location2] = await popa.userAddress(accounts[0], 1); + assert.equal(location1, '744 evergreen terrace'); + assert.equal(location2, '743 evergreen terrace'); + }); + }); + + contract('', () => { + it('should allow to unregister an address (2 of 3)', async () => { + const popa = await ProofOfPhysicalAddress.deployed(); + const args1 = buildRegisterAddressArgs(accounts[0], { address: '742 evergreen terrace' }); + const args2 = buildRegisterAddressArgs(accounts[0], { address: '743 evergreen terrace' }); + const args3 = buildRegisterAddressArgs(accounts[0], { address: '744 evergreen terrace' }); + + await registerAddress(popa, args1, accounts[0]); + await registerAddress(popa, args2, accounts[0]); + await registerAddress(popa, args3, accounts[0]); + + let addressesCount = await popa.userSubmittedAddressesCount(accounts[0]); + assert.equal(+addressesCount, 3); + + await unregisterAddress(popa, args2, accounts[0]); + + addressesCount = await popa.userSubmittedAddressesCount(accounts[0]); + assert.equal(+addressesCount, 2); + + const [, , , location1] = await popa.userAddress(accounts[0], 0); + const [, , , location2] = await popa.userAddress(accounts[0], 1); + assert.equal(location1, '742 evergreen terrace'); + assert.equal(location2, '744 evergreen terrace'); + }); + }); + + contract('', () => { + it('should allow to unregister an address (3 of 3)', async () => { + const popa = await ProofOfPhysicalAddress.deployed(); + const args1 = buildRegisterAddressArgs(accounts[0], { address: '742 evergreen terrace' }); + const args2 = buildRegisterAddressArgs(accounts[0], { address: '743 evergreen terrace' }); + const args3 = buildRegisterAddressArgs(accounts[0], { address: '744 evergreen terrace' }); + + await registerAddress(popa, args1, accounts[0]); + await registerAddress(popa, args2, accounts[0]); + await registerAddress(popa, args3, accounts[0]); + + let addressesCount = await popa.userSubmittedAddressesCount(accounts[0]); + assert.equal(+addressesCount, 3); + + await unregisterAddress(popa, args3, accounts[0]); + + addressesCount = await popa.userSubmittedAddressesCount(accounts[0]); + assert.equal(+addressesCount, 2); + + const [, , , location1] = await popa.userAddress(accounts[0], 0); + const [, , , location2] = await popa.userAddress(accounts[0], 1); + assert.equal(location1, '742 evergreen terrace'); + assert.equal(location2, '743 evergreen terrace'); + }); + }); + + + + + + contract('', () => { it('should not delete the user if the unregistered address was not their last one', async () => { const popa = await ProofOfPhysicalAddress.deployed();