60806040523480156200001157600080fd5b5060405162001db738038062001db78339818101604052810190620000379190620003ec565b8282816003908051906020019062000051929190620002b3565b5080600490805190602001906200006a929190620002b3565b50505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061038442620000be91906200057e565b6005819055506200010333620000d96200012760201b60201c565b60ff16600a620000ea919062000636565b83620000f7919062000773565b6200013060201b60201c565b6000600660146101000a81548160ff021916908315150217905550505050620008fe565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019a90620004c7565b60405180910390fd5b620001b760008383620002a960201b60201c565b8060026000828254620001cb91906200057e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200022291906200057e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002899190620004e9565b60405180910390a3620002a560008383620002ae60201b60201c565b5050565b505050565b505050565b828054620002c19062000814565b90600052602060002090601f016020900481019282620002e5576000855562000331565b82601f106200030057805160ff191683800117855562000331565b8280016001018555821562000331579182015b828111156200033057825182559160200191906001019062000313565b5b50905062000340919062000344565b5090565b5b808211156200035f57600081600090555060010162000345565b5090565b60006200037a62000374846200053a565b62000506565b9050828152602081018484840111156200039357600080fd5b620003a0848285620007de565b509392505050565b600082601f830112620003ba57600080fd5b8151620003cc84826020860162000363565b91505092915050565b600081519050620003e681620008e4565b92915050565b6000806000606084860312156200040257600080fd5b600084015167ffffffffffffffff8111156200041d57600080fd5b6200042b86828701620003a8565b935050602084015167ffffffffffffffff8111156200044957600080fd5b6200045786828701620003a8565b92505060406200046a86828701620003d5565b9150509250925092565b600062000483601f836200056d565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620004c181620007d4565b82525050565b60006020820190508181036000830152620004e28162000474565b9050919050565b6000602082019050620005006000830184620004b6565b92915050565b6000604051905081810181811067ffffffffffffffff8211171562000530576200052f620008a8565b5b8060405250919050565b600067ffffffffffffffff821115620005585762000557620008a8565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b60006200058b82620007d4565b91506200059883620007d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005d057620005cf6200084a565b5b828201905092915050565b6000808291508390505b60018511156200062d578086048111156200060557620006046200084a565b5b6001851615620006155780820291505b80810290506200062585620008d7565b9450620005e5565b94509492505050565b60006200064382620007d4565b91506200065083620007d4565b92506200067f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000687565b905092915050565b6000826200069957600190506200076c565b81620006a957600090506200076c565b8160018114620006c25760028114620006cd5762000703565b60019150506200076c565b60ff841115620006e257620006e16200084a565b5b8360020a915084821115620006fc57620006fb6200084a565b5b506200076c565b5060208310610133831016604e8410600b84101617156200073d5782820a9050838111156200073757620007366200084a565b5b6200076c565b6200074c8484846001620005db565b925090508184048111156200076657620007656200084a565b5b81810290505b9392505050565b60006200078082620007d4565b91506200078d83620007d4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007c957620007c86200084a565b5b828202905092915050565b6000819050919050565b60005b83811015620007fe578082015181840152602081019050620007e1565b838111156200080e576000848401525b50505050565b600060028204905060018216806200082d57607f821691505b6020821081141562000844576200084362000879565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008160011c9050919050565b620008ef81620007d4565b8114620008fb57600080fd5b50565b6114a9806200090e6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80633950935111610071578063395093511461019157806370a08231146101c157806395d89b41146101f1578063a457c2d71461020f578063a9059cbb1461023f578063dd62ed3e1461026f576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd146101255780632d7c3da614610155578063313ce56714610173575b600080fd5b6100c161029f565b6040516100ce919061113e565b60405180910390f35b6100f160048036038101906100ec9190610db7565b610331565b6040516100fe9190611123565b60405180910390f35b61010f61034f565b60405161011c9190611240565b60405180910390f35b61013f600480360381019061013a9190610d68565b610359565b60405161014c9190611123565b60405180910390f35b61015d6104c4565b60405161016a9190611123565b60405180910390f35b61017b61055c565b604051610188919061125b565b60405180910390f35b6101ab60048036038101906101a69190610db7565b610565565b6040516101b89190611123565b60405180910390f35b6101db60048036038101906101d69190610d03565b610611565b6040516101e89190611240565b60405180910390f35b6101f9610659565b604051610206919061113e565b60405180910390f35b61022960048036038101906102249190610db7565b6106eb565b6040516102369190611123565b60405180910390f35b61025960048036038101906102549190610db7565b6107d6565b6040516102669190611123565b60405180910390f35b61028960048036038101906102849190610d2c565b6107f4565b6040516102969190611240565b60405180910390f35b6060600380546102ae906113a4565b80601f01602080910402602001604051908101604052809291908181526020018280546102da906113a4565b80156103275780601f106102fc57610100808354040283529160200191610327565b820191906000526020600020905b81548152906001019060200180831161030a57829003601f168201915b5050505050905090565b600061034561033e61087b565b8484610883565b6001905092915050565b6000600254905090565b6000600660149054906101000a900460ff16158015610379575042600554115b806103d15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b806104295750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156104b457610439848484610a4e565b600061044c8561044761087b565b6107f4565b905082811015610491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610488906111c0565b60405180910390fd5b6104ae8561049d61087b565b85846104a991906112e8565b610883565b506104b9565b600080fd5b600190509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561054757600660149054906101000a900460ff1615600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff16905090565b60006012905090565b600061060761057261087b565b84846001600061058061087b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106029190611292565b610883565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054610668906113a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610694906113a4565b80156106e15780601f106106b6576101008083540402835291602001916106e1565b820191906000526020600020905b8154815290600101906020018083116106c457829003601f168201915b5050505050905090565b600080600160006106fa61087b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae90611220565b60405180910390fd5b6107cb6107c261087b565b85858403610883565b600191505092915050565b60006107ea6107e361087b565b8484610a4e565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ea90611200565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095a90611180565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a419190611240565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab5906111e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590611160565b60405180910390fd5b610b39838383610ccf565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb6906111a0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c529190611292565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cb69190611240565b60405180910390a3610cc9848484610cd4565b50505050565b505050565b505050565b600081359050610ce881611445565b92915050565b600081359050610cfd8161145c565b92915050565b600060208284031215610d1557600080fd5b6000610d2384828501610cd9565b91505092915050565b60008060408385031215610d3f57600080fd5b6000610d4d85828601610cd9565b9250506020610d5e85828601610cd9565b9150509250929050565b600080600060608486031215610d7d57600080fd5b6000610d8b86828701610cd9565b9350506020610d9c86828701610cd9565b9250506040610dad86828701610cee565b9150509250925092565b60008060408385031215610dca57600080fd5b6000610dd885828601610cd9565b9250506020610de985828601610cee565b9150509250929050565b610dfc8161132e565b82525050565b6000610e0d82611276565b610e178185611281565b9350610e27818560208601611371565b610e3081611434565b840191505092915050565b6000610e48602383611281565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610eae602283611281565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f14602683611281565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f7a602883611281565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610fe0602583611281565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611046602483611281565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006110ac602583611281565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61110e8161135a565b82525050565b61111d81611364565b82525050565b60006020820190506111386000830184610df3565b92915050565b600060208201905081810360008301526111588184610e02565b905092915050565b6000602082019050818103600083015261117981610e3b565b9050919050565b6000602082019050818103600083015261119981610ea1565b9050919050565b600060208201905081810360008301526111b981610f07565b9050919050565b600060208201905081810360008301526111d981610f6d565b9050919050565b600060208201905081810360008301526111f981610fd3565b9050919050565b6000602082019050818103600083015261121981611039565b9050919050565b600060208201905081810360008301526112398161109f565b9050919050565b60006020820190506112556000830184611105565b92915050565b60006020820190506112706000830184611114565b92915050565b600081519050919050565b600082825260208201905092915050565b600061129d8261135a565b91506112a88361135a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156112dd576112dc6113d6565b5b828201905092915050565b60006112f38261135a565b91506112fe8361135a565b925082821015611311576113106113d6565b5b828203905092915050565b60006113278261133a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561138f578082015181840152602081019050611374565b8381111561139e576000848401525b50505050565b600060028204905060018216806113bc57607f821691505b602082108114156113d0576113cf611405565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61144e8161131c565b811461145957600080fd5b50565b6114658161135a565b811461147057600080fd5b5056fea26469706673582212209b98d7d7140396275e194225ec23bfc4f4797da4d10bbb67c97ad14e2773ee0264736f6c63430008000033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000746a52880000000000000000000000000000000000000000000000000000000000000000056d616e676f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056d616e676f000000000000000000000000000000000000000000000000000000