content: package com.alipay.antchain.bridge.plugins.fiscobcos.abi;
  
  import java.math.BigInteger;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Collections;
  import java.util.List;
  import org.fisco.bcos.sdk.v3.client.Client;
  import org.fisco.bcos.sdk.v3.codec.datatypes.Address;
  import org.fisco.bcos.sdk.v3.codec.datatypes.Bool;
  import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes;
  import org.fisco.bcos.sdk.v3.codec.datatypes.Event;
  import org.fisco.bcos.sdk.v3.codec.datatypes.Function;
  import org.fisco.bcos.sdk.v3.codec.datatypes.Type;
  import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference;
  import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String;
  import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32;
  import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8;
  import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1;
  import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2;
  import org.fisco.bcos.sdk.v3.contract.Contract;
  import org.fisco.bcos.sdk.v3.crypto.CryptoSuite;
  import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair;
  import org.fisco.bcos.sdk.v3.eventsub.EventSubCallback;
  import org.fisco.bcos.sdk.v3.model.CryptoType;
  import org.fisco.bcos.sdk.v3.model.TransactionReceipt;
  import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback;
  import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException;
  
  @SuppressWarnings("unchecked")
  public class AuthMsg extends Contract {
      public static final String[] BINARY_ARRAY = {"60806040523480156200001157600080fd5b506200001d336200003f565b600180546001600160a01b03191633179055620000396200008f565b6200015e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600054600160a81b900460ff1615620000fe5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff600160a01b909104811610156200015c576000805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6129f8806200016e6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a7566e771161008c578063e41fb51711610066578063e41fb51714610222578063e85df5f714610235578063f2fde38b14610248578063f4808c541461025b57600080fd5b8063a7566e77146101f4578063d2a3fff214610207578063e1c7392a1461021a57600080fd5b8063715018a6116100c8578063715018a614610179578063747c7ffd146101815780638406c079146101d05780638da5cb5b146101e357600080fd5b8063189a0a15146100ef5780636548e9bc1461013b578063705c572c14610150575b600080fd5b61011e6100fd366004612542565b63ffffffff166000908152600360205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b61014e610149366004612574565b61026e565b005b61011e61015e366004612542565b6003602052600090815260409020546001600160a01b031681565b61014e6102c3565b6101b461018f366004612574565b60026020526000908152604090205463ffffffff811690640100000000900460ff1682565b6040805163ffffffff9093168352901515602083015201610132565b60015461011e906001600160a01b031681565b6000546001600160a01b031661011e565b61014e610202366004612632565b6102f9565b61014e610215366004612574565b6104b6565b61014e610502565b61014e610230366004612667565b610646565b61014e6102433660046126b5565b610749565b61014e610256366004612574565b610867565b60045461011e906001600160a01b031681565b6000546001600160a01b031633146102a15760405162461bcd60e51b8152600401610298906126e8565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146102ed5760405162461bcd60e51b8152600401610298906126e8565b6102f760006108fb565b565b6001546001600160a01b0316331461035d5760405162461bcd60e51b815260206004820152602160248201527f417574684d73673a2073656e646572206e6f742076616c69642072656c6179656044820152603960f91b6064820152608401610298565b60006103688261094b565b905060006103798260200151610a23565b905060608060008360600151511115610453576004546001600160a01b03166103da5760405162461bcd60e51b81526020600482015260136024820152721c1d18c81a1d58881b9bdd081cd95d081e595d606a1b6044820152606401610298565b600480546020860151604051632ae132ff60e11b81526001600160a01b03909216926355c265fe9261040d92910161276a565b600060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b50505050602083015151518351519092509050610466565b6104608460200151610b2b565b90925090505b7f2b41cea8d63514764033a161efa4273751d3f20eda0ecd3c514fa43b99f38bb0828260405161049792919061277d565b60405180910390a16104af6104ac8383610b5b565b50565b5050505050565b6000546001600160a01b031633146104e05760405162461bcd60e51b8152600401610298906126e8565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600054600160a81b900460ff161580801561052a57506000546001600160a01b90910460ff16105b8061054b5750303b15801561054b5750600054600160a01b900460ff166001145b6105ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610298565b6000805460ff60a01b1916600160a01b17905580156105db576000805460ff60a81b1916600160a81b1790555b600180546001600160a01b031916331790556105fc6105f73390565b6108fb565b80156104ac576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b33600090815260026020526040902054640100000000900460ff166106bc5760405162461bcd60e51b815260206004820152602660248201527f417574684d73673a2073656e646572206e6f742076616c6964207375622d70726044820152651bdd1bd8dbdb60d21b6064820152608401610298565b60006040518060800160405280600163ffffffff1681526020016106df85610c87565b8152336000908152600260209081526040918290205463ffffffff16908301520183905290507f79b7516b1b7a6a39fb4b7b22e8667cd3744e5c27425292f8a9f49d1042c0c65161072f82610c9a565b60405161073c919061276a565b60405180910390a1505050565b6000546001600160a01b031633146107735760405162461bcd60e51b8152600401610298906126e8565b6001600160a01b03821660009081526002602052604090208054640100000000900460ff16156107e55760405162461bcd60e51b815260206004820152601860248201527f417574684d73673a2070726f746f636f6c2065786973747300000000000000006044820152606401610298565b805463ffffffff831664ffffffffff19909116811764010000000017825560008181526003602090815260409182902080546001600160a01b0388166001600160a01b0319909116811790915591519182527f1d5c04c569492046e8119073d290445582589ec4f52031b868ed74b2b7f7bfa8910160405180910390a2505050565b6000546001600160a01b031633146108915760405162461bcd60e51b8152600401610298906126e8565b6001600160a01b0381166108f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610298565b6104ac815b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080518082019091526060808252602082015260008061096e82856004610d2e565b905061097b6004836127b8565b9150600061098a600483015190565b9050600061099f84878463ffffffff16610d2e565b90506109b163ffffffff8316856127b8565b935060006109c185886004610d2e565b90506109ce6004866127b8565b945060006109dd600483015190565b905060006109f2878a8463ffffffff16610d2e565b9050610a0463ffffffff8316886127b8565b5060408051808201909152938452602084015250909695505050505050565b610a2b6124d5565b610a336124d5565b6000610a3e84610d43565b905060005b816020015151811015610b2257600082602001518281518110610a6857610a686127d0565b60200260200101519050600561ffff16816000015161ffff161415610aa157610a9a610a95826040015190565b610f1f565b8452610b0f565b805161ffff166101011415610acd57610ac3610abe826040015190565b610fac565b6020850152610b0f565b805161ffff166101001415610af557610ae5816110e7565b63ffffffff166040850152610b0f565b805161ffff166101ff1415610b0f57604081015160608501525b5080610b1a816127e6565b915050610a43565b50909392505050565b6060806000610b39846110fb565b90506000610b4a8260200151611291565b608090920151959194509092505050565b6040805160808101825260008082526020820181905291810182905260608082015290610b8783611386565b60408082015163ffffffff166000908152600360205220549091506001600160a01b0316610bf75760405162461bcd60e51b815260206004820152601a60248201527f417574684d73673a206e6f2070726f746f636f6c2065786973740000000000006044820152606401610298565b60408082015163ffffffff166000908152600360209081529082902054908301516060840151925163c09b261b60e01b81526001600160a01b039092169263c09b261b92610c4b9289929091600401612801565b600060405180830381600087803b158015610c6557600080fd5b505af1158015610c79573d6000803e3d6000fd5b509293505050505b92915050565b600080610c938361143e565b9392505050565b6060816000015163ffffffff1660011415610cb857610c818261146c565b816000015163ffffffff1660021415610cd457610c81826115e0565b60405162461bcd60e51b815260206004820152602960248201527f656e636f6465417574684d6573736167653a20616d2076657273696f6e206e6f6044820152681d081cdd5c1c1bdc9d60ba1b6064820152608401610298565b6060610d3b8484846117ac565b949350505050565b604080518082019091526000815260606020820152600682511015610daa5760405162461bcd60e51b815260206004820152601760248201527f696c6c6567616c207261772064617461206c656e6774680000000000000000006044820152606401610298565b6040805180820190915260008082526060602083015290610dd3610dce858461181b565b611843565b61ffff168152610de46006836127b8565b91506000825b8551811015610e3e57610e0f610e0a87610e058460026127b8565b6118e4565b61190e565b610e1a906006612836565b610e2a9063ffffffff16826127b8565b905081610e36816127e6565b925050610dea565b60008267ffffffffffffffff811115610e5957610e5961258f565b604051908082528060200260200182016040528015610ea657816020015b6040805160608082018352600080835260208301529181019190","9152815260200190600190039081610e775790505b509050600092505b8651851015610f105760408051606080820183526000808352602083015291810191909152610edd8887611a08565b96509050808285610eed816127e6565b965081518110610eff57610eff6127d0565b602002602001018190525050610eae565b60208401525090949350505050565b6040805160208101909152606081526040805160208101909152606081526000610f4884610d43565b905060005b816020015151811015610b2257600082602001518281518110610f7257610f726127d0565b60200260200101519050600061ffff16816000015161ffff161415610f9957604081015184525b5080610fa4816127e6565b915050610f4d565b6040805160a081018252606080820181815260808301919091528152600060208201819052918101919091526040805160a08101825260608082018181526080830191909152815260006020820181905291810191909152600061100f84610d43565b905060005b816020015151811015610b2257600082602001518281518110611039576110396127d0565b60200260200101519050600061ffff16816000015161ffff1614156110725761106b611066826040015190565b611b5f565b84526110d4565b805161ffff16600114156110a557600061108d826040015190565b905061109a815182015190565b6020860152506110d4565b805161ffff16600214156110d45760006110c0826040015190565b90506110cd815182015190565b6040860152505b50806110df816127e6565b915050611014565b6000610c81610e0a60048460400151015190565b6040805161010081018252606060c0820181815260e083018290528252602082018190526000928201839052808201819052608082015260a08101919091526040805161010081018252606060c0820181815260e083018290528252602082018190526000928201839052808201819052608082015260a081019190915260065b835181101561128a57604080516060808201835260008083526020830152918101919091526111ab8583611a08565b815190935090915061ffff16600414156111d3576111cc8160400151611c13565b8352611284565b805161ffff16600514156111f05760408101516020840152611284565b805161ffff166007141561122057611210610e0a826040015160006118e4565b63ffffffff166040840152611284565b805161ffff166008141561123d5760408101516060840152611284565b805161ffff166009141561125a5760408101516080840152611284565b805161ffff16600a14156112845761127a610dce8260400151600061181b565b61ffff1660a08401525b5061117c565b5092915050565b6060600c8251116112e45760405162461bcd60e51b815260206004820152601b60248201527f696c6c6567616c206c656e677468206f662075646167207265737000000000006044820152606401610298565b60006112f4610e0a8460086118e4565b905061130181600c612836565b63ffffffff16835110156113745760405162461bcd60e51b815260206004820152603460248201527f6c656e677468206f6620756461672072657370206c657373207468616e20746860448201527365206c656e677468206f66206d736720626f647960601b6064820152608401610298565b610c93600c848363ffffffff166117ac565b60408051608081018252600080825260208201819052918101829052606080820152906113b283611cac565b90508063ffffffff16600114156113cc57610c9383611cb9565b8063ffffffff16600214156113e457610c9383611dd7565b60405162461bcd60e51b815260206004820152602960248201527f6465636f6465417574684d6573736167653a20616d2076657273696f6e206e6f6044820152681d081cdd5c1c1bdc9d60ba1b6064820152608401610298565b6040805160208082528183019092526000918291906020820181803683375050506020018390525090919050565b6060816000015163ffffffff166001146114d35760405162461bcd60e51b815260206004820152602260248201527f656e636f6465417574684d65737361676556313a2077726f6e6720766572736960448201526137b760f11b6064820152608401610298565b60006114e28360600151611e92565b6114ed9060046127b8565b6114f89060206127b8565b6115039060046127b8565b905060008167ffffffffffffffff8111156115205761152061258f565b6040519080825280601f01601f19166020018201604052801561154a576020820181803683370190505b508451909150829061155e90829084611ede565b6115686020611eef565b611572908261285e565b60208681015182850152909150611589908261285e565b905061159a81866040015184611ede565b6115a46020611eef565b6115ae908261285e565b90506115bf8186606001518461211e565b6115cc8560600151611e92565b6115d6908261285e565b5090949350505050565b6060816000015163ffffffff166002146116475760405162461bcd60e51b815260206004820152602260248201527f656e636f6465417574684d65737361676556323a2077726f6e6720766572736960448201526137b760f11b6064820152608401610298565b63ffffffff82606001515111156116b35760405162461bcd60e51b815260206004820152602a60248201527f656e636f6465417574684d65737361676556323a20626f6479206c656e677468604482015269081bdd995c9b1a5b5a5d60b21b6064820152608401610298565b600082606001515160046116c791906127b8565b6116d29060046127b8565b6116dd9060206127b8565b6116e89060046127b8565b905060008167ffffffffffffffff8111156117055761170561258f565b6040519080825280601f01601f19166020018201604052801561172f576020820181803683370190505b508451909150829061174390829084611ede565b61174d6020611eef565b611757908261285e565b6020868101518285015290915061176e908261285e565b905061177f81866040015184611ede565b6117896020611eef565b611793908261285e565b90506117a48186606001518461217c565b509392505050565b606080821580156117c857604051915060208201604052611812565b6040519150601f8416801560200281840101858101888315602002848a0101015b818310156118015780518352602092830192016117e9565b5050858452601f01601f1916604052505b50949350505050565b815160009061182b8360026127b8565b111561183657600080fd5b50016002015161ffff1690565b60408051600280825281830190925260009160f084901b9183916020820181803683370190505090508160011a60f81b81600081518110611886576118866127d0565b60200101906001600160f81b031916908160001a9053508160001a60f81b816001815181106118b7576118b76127d0565b60200101906001600160f81b031916908160001a90535060006118db82600061181b565b95945050505050565b81516000906118f48360046127b8565b11156118ff57600080fd5b50016004015163ffffffff1690565b60408051600480825281830190925260009160e084901b9183916020820181803683370190505090508160031a60f81b81600081518110611951576119516127d0565b60200101906001600160f81b031916908160001a9053508160021a60f81b81600181518110611982576119826127d0565b60200101906001600160f81b031916908160001a9053508160011a60f81b816002815181106119b3576119b36127d0565b60200101906001600160f81b031916908160001a9053508160001a60f81b816003815181106119e4576119e46127d0565b60200101906001600160f81b031916908160001a90535060006118db8260006118e4565b60408051606080820183526000808352602083015291810191909152600082845111611a825760405162461bcd60e51b815260206004820152602360248201527f6c656e677468206f66207261772064617461206c657373207468616e206f66666044820152621cd95d60ea1b6064820152608401610298565b6006831015611ac45760405162461bcd60e51b815260206004820152600e60248201526d1a5b1b1959d85b081bd9999cd95d60921b6044820152606401610298565b60408051606080820183526000808352602083015291810191909152611aed610dce868661181b565b61ffff168152611afe6002856127b8565b9350611b0d610e0a86866118e4565b63ffffffff166020820152611b236004856127b8565b9350611b3a8585836020015163ffffffff1661226a565b60408201526020810151611b549063ffffffff16856127b8565b909590945092505050565b604080518082019091526060808252602082015260408051808201909152606080825260208201526000611b9284610d43565b905060005b816020015151811015610b2257600082602001518281518110611bbc57611bbc6127d0565b60200260200101519050600061ffff16816000015161ffff161415611be75760408101518452611c00565b805161ffff1660011415611c0057604081015160208501525b5080611c0b816127e6565b915050611b97565b6040805180820190915260608082526020820152604080518082019091526060808252602082015260065b835181101561128a5760408051606080820183526000808352602083015291810191909152611c6d8583611a08565b815190935090915061ffff1660011415611c8d5760408101518352611ca6565b805161ffff1660021415611ca657604081015160208401525b50611c3e565b6000610c81825183015190565b60408051608081018252600080825260208201819052918101919091526060808201526000611ce86020611eef565b8351611cf4919061285e565b90506000611d028285015190565b9050611d0f60208361285e565b91506000611d1d8386015190565b9050611d296020611eef565b611d33908461285e565b92506000611d4184876122ec565b67ffffffffffffffff811115611d5957611d5961258f565b6040519080825280601f01601f191660200182016040528015611d83576020820181803683370190505b509050611d9184878361230e565b611d9a81611e92565b611da4908561285e565b506040805160808101825260018152602081019490945263ffffffff929092169183019190915260608201529392505050565b60408051608081018252600080825260208201819052918101919091526060808201526000611e066020611eef565b8351611e12919061285e565b90506000611e208285015190565b9050611e2d60208361285e565b91506000611e3b8386015190565b9050611e476020611eef565b611e51908461285e565b92506000611e5f8487612355565b6040805160808101825260028152602081019590955263ffffffff9390931692840192909252506060820152939250505056","5b600060208251611ea2919061288b565b905060208251611eb2919061289f565b15611ec55780611ec1816127e6565b9150505b80611ecf816127e6565b9150610c8190506020826128b3565b909101600319810180519290915252565b60008160088114611ffc5760108114612005576018811461200e5760208114612017576028811461202057603081146120295760388114612032576040811461203b5760488114612044576050811461204d5760588114612056576060811461205f57606881146120685760708114612071576078811461207a5760808114612083576088811461208c5760908114612095576098811461209e5760a081146120a75760a881146120b05760b081146120b95760b881146120c25760c081146120cb5760c881146120d45760d081146120dd5760d881146120e65760e081146120ef5760e881146120f85760f081146121015760f8811461210a5761010081146121135760209150612118565b60019150612118565b60029150612118565b60039150612118565b60049150612118565b60059150612118565b60069150612118565b60079150612118565b60089150612118565b60099150612118565b600a9150612118565b600b9150612118565b600c9150612118565b600d9150612118565b600e9150612118565b600f9150612118565b60109150612118565b60119150612118565b60129150612118565b60139150612118565b60149150612118565b60159150612118565b60169150612118565b60179150612118565b60189150612118565b60199150612118565b601a9150612118565b601b9150612118565b601c9150612118565b601d9150612118565b601e9150612118565b601f9150612118565b602091505b50919050565b60006020835161212e919061288b565b9050600060208451612140919061289f565b11156121545780612150816127e6565b9150505b60010160005b818110156104af576020810284015183860152601f199094019360010161215a565b8151612189848284611ede565b61219460048561285e565b93508063ffffffff168410156122075760405162461bcd60e51b815260206004820152603260248201527f7661724279746573546f42797465733a206f6666736574206c657373207468616044820152710dc40e8d0ca40d2dce0eae840d8cadccee8d60731b6064820152608401610298565b61221763ffffffff82168561285e565b935080158015612226576104af565b8483018051601f84168015602002818801018581018215602002838601015b8183101561225d578251815260209283019201612245565b5050509152505050505050565b825160609061227983856127b8565b111561228457600080fd5b60008267ffffffffffffffff81111561229f5761229f61258f565b6040519080825280601f01601f1916602001820160405280156122c9576020820181803683370190505b509050602080820190868601016122e182828761245a565b509095945050505050565b8082015160208104600101601f821615612304576001015b6020029392505050565b81830151600060208204600101601f831615612328576001015b5b8082101561234d578585015160208302850152602086039550600182019150612329565b505050505050565b606060006123638484015190565b63ffffffff16905061237660048561285e565b9350838111156123e15760405162461bcd60e51b815260206004820152603060248201527f6279746573546f56617242797465733a206f6666736574206c6573732074686160448201526f6e206c656e677468206f6620626f647960801b6064820152608401610298565b6123eb818561285e565b935060608115801561240857604051915060208201604052611812565b6040519150601f8316801560200281840101848101888315602002848a0101015b81831015612441578051835260209283019201612429565b5050848452601f01601f19166040525050949350505050565b6020811061249257815183526124716020846127b8565b925061247e6020836127b8565b915061248b60208261285e565b905061245a565b8061249c57505050565b600060016124ab83602061285e565b6124b7906101006129b6565b6124c1919061285e565b925184518416931916929092179092525050565b6040805160a080820183526060608080840182815284528451928301855282820182815290830191909152815260006020828101829052938201529091820190815260006020820152606060409091015290565b803563ffffffff8116811461253d57600080fd5b919050565b60006020828403121561255457600080fd5b610c9382612529565b80356001600160a01b038116811461253d57600080fd5b60006020828403121561258657600080fd5b610c938261255d565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126125b657600080fd5b813567ffffffffffffffff808211156125d1576125d161258f565b604051601f8301601f19908116603f011681019082821181831017156125f9576125f961258f565b8160405283815286602085880101111561261257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561264457600080fd5b813567ffffffffffffffff81111561265b57600080fd5b610d3b848285016125a5565b6000806040838503121561267a57600080fd5b6126838361255d565b9150602083013567ffffffffffffffff81111561269f57600080fd5b6126ab858286016125a5565b9150509250929050565b600080604083850312156126c857600080fd5b6126d18361255d565b91506126df60208401612529565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000815180845260005b8181101561274357602081850181015186830182015201612727565b81811115612755576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610c93602083018461271d565b604081526000612790604083018561271d565b82810360208401526118db818561271d565b634e487b7160e01b600052601160045260246000fd5b600082198211156127cb576127cb6127a2565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156127fa576127fa6127a2565b5060010190565b606081526000612814606083018661271d565b846020840152828103604084015261282c818561271d565b9695505050505050565b600063ffffffff808316818516808303821115612855576128556127a2565b01949350505050565b600082821015612870576128706127a2565b500390565b634e487b7160e01b600052601260045260246000fd5b60008261289a5761289a612875565b500490565b6000826128ae576128ae612875565b500690565b60008160001904831182151516156128cd576128cd6127a2565b500290565b600181815b8085111561290d5781600019048211156128f3576128f36127a2565b8085161561290057918102915b93841c93908002906128d7565b509250929050565b60008261292457506001610c81565b8161293157506000610c81565b816001811461294757600281146129515761296d565b6001915050610c81565b60ff841115612962576129626127a2565b50506001821b610c81565b5060208310610133831016604e8410600b8410161715612990575081810a610c81565b61299a83836128d2565b80600019048211156129ae576129ae6127a2565b029392505050565b6000610c93838361291556fea26469706673582212207783156a68415b7de766030cb5220a21c16b0e67d1e8aaeb099b91b95ce3e1a364736f6c634300080b0033"};
  
      public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY);
  
      public static final String[] SM_BINARY_ARRAY = {"60806040523480156200001157600080fd5b506200001d336200003f565b600180546001600160a01b03191633179055620000396200008f565b6200015f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d09190a35050565b600054600160a81b900460ff1615620000ff57604051636381e58960e11b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff600160a01b909104811610156200015d576000805460ff60a01b191660ff60a01b17905560405160ff81527f962aa9df107bcee798aa1cede27b2de7fab57a1daae7109874a9a9170136cbfa9060200160405180910390a15b565b612a14806200016f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a1f2dea1161008c578063d536d26b11610066578063d536d26b1461022d578063d86e29e214610240578063e9667acd14610248578063f62147f41461025b57600080fd5b80637a1f2dea146101e3578063abf915cd146101f6578063c653624d146101fe57600080fd5b8063317c40ab116100c8578063317c40ab1461012a578063409da2f11461013d5780634e36306e146101835780635089e2c8146101d257600080fd5b806316cad12a146100ef5780631aa6c48a146101045780631fef598714610117575b600080fd5b6101026100fd366004612561565b61026e565b005b61010261011236600461261f565b610314565b610102610125366004612668565b6104d0565b61010261013836600461269b565b6105f0565b61016661014b3660046126e9565b6003602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101b6610191366004612561565b60026020526000908152604090205463ffffffff811690640100000000900460ff1682565b6040805163ffffffff909316835290151560208301520161017a565b6000546001600160a01b0316610166565b6101026101f1366004612561565b6106f4565b610102610741565b61016661020c3660046126e9565b63ffffffff166000908152600360205260409020546001600160a01b031690565b600454610166906001600160a01b031681565b610102610886565b600154610166906001600160a01b031681565b610102610269366004612561565b6108bd565b6000546001600160a01b031633146102a257604051636381e58960e11b815260040161029990612704565b60405180910390fd5b6001600160a01b03811661030857604051636381e58960e11b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610299565b6103118161090a565b50565b6001546001600160a01b0316331461037957604051636381e58960e11b815260206004820152602160248201527f417574684d73673a2073656e646572206e6f742076616c69642072656c6179656044820152603960f91b6064820152608401610299565b60006103848261095a565b905060006103958260200151610a32565b905060608060008360600151511115610470576004546001600160a01b03166103f757604051636381e58960e11b81526020600482015260136024820152721c1d18c81a1d58881b9bdd081cd95d081e595d606a1b6044820152606401610299565b600480546020860151604051635a5af86360e11b81526001600160a01b039092169263b4b5f0c69261042a929101612786565b600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b50505050602083015151518351519092509050610483565b61047d8460200151610b3a565b90925090505b7f5388c5b24365c44646a6967a8cde80997c6b106f5fc8eb076c8b35d278828aba82826040516104b4929190612799565b60405180910390a16104c96103118383610b6a565b5050505050565b6000546001600160a01b031633146104fb57604051636381e58960e11b815260040161029990612704565b6001600160a01b03821660009081526002602052604090208054640100000000900460ff161561056e57604051636381e58960e11b815260206004820152601860248201527f417574684d73673a2070726f746f636f6c2065786973747300000000000000006044820152606401610299565b805463ffffffff831664ffffffffff19909116811764010000000017825560008181526003602090815260409182902080546001600160a01b0388166001600160a01b0319909116811790915591519182527f3ee1f028b0667d8fed291bcec1d5caeec60ee600a7afb8f3d49bdd59661ff004910160405180910390a2505050565b33600090815260026020526040902054640100000000900460ff1661066757604051636381e58960e11b815260206004820152602660248201527f417574684d73673a2073656e646572206e6f742076616c6964207375622d70726044820152651bdd1bd8dbdb60d21b6064820152608401610299565b60006040518060800160405280600163ffffffff16815260200161068a85610c97565b8152336000908152600260209081526040918290205463ffffffff16908301520183905290507f0acc91c71a957bc327957d6bdbd5c82dee2aef56c54f8a5fdd3aa8051110a7f66106da82610caa565b6040516106e79190612786565b60405180910390a1505050565b6000546001600160a01b0316331461071f57604051636381e58960e11b815260040161029990612704565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600054600160a81b900460ff161580801561076957506000546001600160a01b90910460ff16105b8061078a5750303b15801561078a5750600054600160a01b900460ff166001145b6107ee57604051636381e58960e11b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610299565b6000805460ff60a01b1916600160a01b179055801561081b576000805460ff60a81b1916600160a81b1790555b600180546001600160a01b0319163317905561083c6108373390565b61090a565b8015610311576000805460ff60a81b19169055604051600181527f962aa9df107bcee798aa1cede27b2de7fab57a1daae7109874a9a9170136cbfa9060200160405180910390a150565b6000546001600160a01b031633146108b157604051636381e58960e11b815260040161029990612704565b6108bb600061090a565b565b6000546001600160a01b031633146108e857604051636381e58960e11b815260040161029990612704565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d09190a35050565b604080518082019091526060808252602082015260008061097d82856004610d3f565b905061098a6004836127d4565b91506000610999600483015190565b905060006109ae84878463ffffffff16610d3f565b90506109c063ffffffff8316856127d4565b935060006109d085886004610d3f565b90506109dd6004866127d4565b945060006109ec600483015190565b90506000610a01878a8463ffffffff16610d3f565b9050610a1363ffffffff8316886127d4565b5060408051808201909152938452602084015250909695505050505050565b610a3a6124f1565b610a426124f1565b6000610a4d84610d54565b905060005b816020015151811015610b3157600082602001518281518110610a7757610a776127ec565b60200260200101519050600561ffff16816000015161ffff161415610ab057610aa9610aa4826040015190565b610f31565b8452610b1e565b805161ffff166101011415610adc57610ad2610acd826040015190565b610fbe565b6020850152610b1e565b805161ffff166101001415610b0457610af4816110f9565b63ffffffff166040850152610b1e565b805161ffff166101ff1415610b1e57604081015160608501525b5080610b2981612802565b915050610a52565b50909392505050565b6060806000610b488461110d565b90506000610b5982602001516112a3565b608090920151959194509092505050565b6040805160808101825260008082526020820181905291810182905260608082015290610b968361139a565b60408082015163ffffffff166000908152600360205220549091506001600160a01b0316610c0757604051636381e58960e11b815260206004820152601a60248201527f417574684d73673a206e6f2070726f746f636f6c2065786973740000000000006044820152606401610299565b60408082015163ffffffff166000908152600360209081529082902054908301516060840151925163140e7af360e11b81526001600160a01b039092169263281cf5e692610c5b928992909160040161281d565b600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b509293505050505b92915050565b600080610ca383611453565b9392505050565b6060816000015163ffffffff1660011415610cc857610c9182611481565b816000015163ffffffff1660021415610ce457610c91826115f6565b604051636381e58960e11b815260206004820152602960248201527f656e636f6465417574684d6573736167653a20616d2076657273696f6e206e6f6044820152681d081cdd5c1c1bdc9d60ba1b6064820152608401610299565b6060610d4c8484846117c4565b949350505050565b604080518082019091526000815260606020820152600682511015610dbc57604051636381e58960e11b815260206004820152601760248201527f696c6c6567616c207261772064617461206c656e6774680000000000000000006044820152606401610299565b6040805180820190915260008082526060602083015290610de5610de08584611833565b61185b565b61ffff168152610df66006836127d4565b91506000825b8551811015610e5057610e21610e1c87610e178460026127d4565b6118fc565b611926565b610e2c906006612852565b610e3c9063ffffffff16826127d4565b905081610e4881612802565b925050610dfc565b60008267ffffffffffffffff811115610e6b57610e6b61257c565b604051908082528060200260200182016040528015610eb857816020015b60408051606080","820183526000808352602083015291810191909152815260200190600190039081610e895790505b509050600092505b8651851015610f225760408051606080820183526000808352602083015291810191909152610eef8887611a20565b96509050808285610eff81612802565b965081518110610f1157610f116127ec565b602002602001018190525050610ec0565b60208401525090949350505050565b6040805160208101909152606081526040805160208101909152606081526000610f5a84610d54565b905060005b816020015151811015610b3157600082602001518281518110610f8457610f846127ec565b60200260200101519050600061ffff16816000015161ffff161415610fab57604081015184525b5080610fb681612802565b915050610f5f565b6040805160a081018252606080820181815260808301919091528152600060208201819052918101919091526040805160a08101825260608082018181526080830191909152815260006020820181905291810191909152600061102184610d54565b905060005b816020015151811015610b315760008260200151828151811061104b5761104b6127ec565b60200260200101519050600061ffff16816000015161ffff1614156110845761107d611078826040015190565b611b79565b84526110e6565b805161ffff16600114156110b757600061109f826040015190565b90506110ac815182015190565b6020860152506110e6565b805161ffff16600214156110e65760006110d2826040015190565b90506110df815182015190565b6040860152505b50806110f181612802565b915050611026565b6000610c91610e1c60048460400151015190565b6040805161010081018252606060c0820181815260e083018290528252602082018190526000928201839052808201819052608082015260a08101919091526040805161010081018252606060c0820181815260e083018290528252602082018190526000928201839052808201819052608082015260a081019190915260065b835181101561129c57604080516060808201835260008083526020830152918101919091526111bd8583611a20565b815190935090915061ffff16600414156111e5576111de8160400151611c2d565b8352611296565b805161ffff16600514156112025760408101516020840152611296565b805161ffff166007141561123257611222610e1c826040015160006118fc565b63ffffffff166040840152611296565b805161ffff166008141561124f5760408101516060840152611296565b805161ffff166009141561126c5760408101516080840152611296565b805161ffff16600a14156112965761128c610de082604001516000611833565b61ffff1660a08401525b5061118e565b5092915050565b6060600c8251116112f757604051636381e58960e11b815260206004820152601b60248201527f696c6c6567616c206c656e677468206f662075646167207265737000000000006044820152606401610299565b6000611307610e1c8460086118fc565b905061131481600c612852565b63ffffffff168351101561138857604051636381e58960e11b815260206004820152603460248201527f6c656e677468206f6620756461672072657370206c657373207468616e20746860448201527365206c656e677468206f66206d736720626f647960601b6064820152608401610299565b610ca3600c848363ffffffff166117c4565b60408051608081018252600080825260208201819052918101829052606080820152906113c683611cc6565b90508063ffffffff16600114156113e057610ca383611cd3565b8063ffffffff16600214156113f857610ca383611df1565b604051636381e58960e11b815260206004820152602960248201527f6465636f6465417574684d6573736167653a20616d2076657273696f6e206e6f6044820152681d081cdd5c1c1bdc9d60ba1b6064820152608401610299565b6040805160208082528183019092526000918291906020820181803683375050506020018390525090919050565b6060816000015163ffffffff166001146114e957604051636381e58960e11b815260206004820152602260248201527f656e636f6465417574684d65737361676556313a2077726f6e6720766572736960448201526137b760f11b6064820152608401610299565b60006114f88360600151611eac565b6115039060046127d4565b61150e9060206127d4565b6115199060046127d4565b905060008167ffffffffffffffff8111156115365761153661257c565b6040519080825280601f01601f191660200182016040528015611560576020820181803683370190505b508451909150829061157490829084611ef8565b61157e6020611f09565b611588908261287a565b6020868101518285015290915061159f908261287a565b90506115b081866040015184611ef8565b6115ba6020611f09565b6115c4908261287a565b90506115d581866060015184612138565b6115e28560600151611eac565b6115ec908261287a565b5090949350505050565b6060816000015163ffffffff1660021461165e57604051636381e58960e11b815260206004820152602260248201527f656e636f6465417574684d65737361676556323a2077726f6e6720766572736960448201526137b760f11b6064820152608401610299565b63ffffffff82606001515111156116cb57604051636381e58960e11b815260206004820152602a60248201527f656e636f6465417574684d65737361676556323a20626f6479206c656e677468604482015269081bdd995c9b1a5b5a5d60b21b6064820152608401610299565b600082606001515160046116df91906127d4565b6116ea9060046127d4565b6116f59060206127d4565b6117009060046127d4565b905060008167ffffffffffffffff81111561171d5761171d61257c565b6040519080825280601f01601f191660200182016040528015611747576020820181803683370190505b508451909150829061175b90829084611ef8565b6117656020611f09565b61176f908261287a565b60208681015182850152909150611786908261287a565b905061179781866040015184611ef8565b6117a16020611f09565b6117ab908261287a565b90506117bc81866060015184612196565b509392505050565b606080821580156117e05760405191506020820160405261182a565b6040519150601f8416801560200281840101858101888315602002848a0101015b81831015611819578051835260209283019201611801565b5050858452601f01601f1916604052505b50949350505050565b81516000906118438360026127d4565b111561184e57600080fd5b50016002015161ffff1690565b60408051600280825281830190925260009160f084901b9183916020820181803683370190505090508160011a60f81b8160008151811061189e5761189e6127ec565b60200101906001600160f81b031916908160001a9053508160001a60f81b816001815181106118cf576118cf6127ec565b60200101906001600160f81b031916908160001a90535060006118f3826000611833565b95945050505050565b815160009061190c8360046127d4565b111561191757600080fd5b50016004015163ffffffff1690565b60408051600480825281830190925260009160e084901b9183916020820181803683370190505090508160031a60f81b81600081518110611969576119696127ec565b60200101906001600160f81b031916908160001a9053508160021a60f81b8160018151811061199a5761199a6127ec565b60200101906001600160f81b031916908160001a9053508160011a60f81b816002815181106119cb576119cb6127ec565b60200101906001600160f81b031916908160001a9053508160001a60f81b816003815181106119fc576119fc6127ec565b60200101906001600160f81b031916908160001a90535060006118f38260006118fc565b60408051606080820183526000808352602083015291810191909152600082845111611a9b57604051636381e58960e11b815260206004820152602360248201527f6c656e677468206f66207261772064617461206c657373207468616e206f66666044820152621cd95d60ea1b6064820152608401610299565b6006831015611ade57604051636381e58960e11b815260206004820152600e60248201526d1a5b1b1959d85b081bd9999cd95d60921b6044820152606401610299565b60408051606080820183526000808352602083015291810191909152611b07610de08686611833565b61ffff168152611b186002856127d4565b9350611b27610e1c86866118fc565b63ffffffff166020820152611b3d6004856127d4565b9350611b548585836020015163ffffffff16612285565b60408201526020810151611b6e9063ffffffff16856127d4565b909590945092505050565b604080518082019091526060808252602082015260408051808201909152606080825260208201526000611bac84610d54565b905060005b816020015151811015610b3157600082602001518281518110611bd657611bd66127ec565b60200260200101519050600061ffff16816000015161ffff161415611c015760408101518452611c1a565b805161ffff1660011415611c1a57604081015160208501525b5080611c2581612802565b915050611bb1565b6040805180820190915260608082526020820152604080518082019091526060808252602082015260065b835181101561129c5760408051606080820183526000808352602083015291810191909152611c878583611a20565b815190935090915061ffff1660011415611ca75760408101518352611cc0565b805161ffff1660021415611cc057604081015160208401525b50611c58565b6000610c91825183015190565b60408051608081018252600080825260208201819052918101919091526060808201526000611d026020611f09565b8351611d0e919061287a565b90506000611d1c8285015190565b9050611d2960208361287a565b91506000611d378386015190565b9050611d436020611f09565b611d4d908461287a565b92506000611d5b8487612307565b67ffffffffffffffff811115611d7357611d7361257c565b6040519080825280601f01601f191660200182016040528015611d9d576020820181803683370190505b509050611dab848783612329565b611db481611eac565b611dbe908561287a565b506040805160808101825260018152602081019490945263ffffffff929092169183019190915260608201529392505050565b60408051608081018252600080825260208201819052918101919091526060808201526000611e206020611f09565b8351611e2c919061287a565b90506000611e3a8285015190565b9050611e4760208361287a565b91506000611e558386015190565b9050611e616020611f09565b611e6b908461287a565b92506000611e798487612370565b6040805160808101825260028152602081019590955263","ffffffff93909316928401929092525060608201529392505050565b600060208251611ebc91906128a7565b905060208251611ecc91906128bb565b15611edf5780611edb81612802565b9150505b80611ee981612802565b9150610c9190506020826128cf565b909101600319810180519290915252565b60008160088114612016576010811461201f57601881146120285760208114612031576028811461203a5760308114612043576038811461204c5760408114612055576048811461205e5760508114612067576058811461207057606081146120795760688114612082576070811461208b5760788114612094576080811461209d57608881146120a657609081146120af57609881146120b85760a081146120c15760a881146120ca5760b081146120d35760b881146120dc5760c081146120e55760c881146120ee5760d081146120f75760d881146121005760e081146121095760e881146121125760f0811461211b5760f8811461212457610100811461212d5760209150612132565b60019150612132565b60029150612132565b60039150612132565b60049150612132565b60059150612132565b60069150612132565b60079150612132565b60089150612132565b60099150612132565b600a9150612132565b600b9150612132565b600c9150612132565b600d9150612132565b600e9150612132565b600f9150612132565b60109150612132565b60119150612132565b60129150612132565b60139150612132565b60149150612132565b60159150612132565b60169150612132565b60179150612132565b60189150612132565b60199150612132565b601a9150612132565b601b9150612132565b601c9150612132565b601d9150612132565b601e9150612132565b601f9150612132565b602091505b50919050565b60006020835161214891906128a7565b905060006020845161215a91906128bb565b111561216e578061216a81612802565b9150505b60010160005b818110156104c9576020810284015183860152601f1990940193600101612174565b81516121a3848284611ef8565b6121ae60048561287a565b93508063ffffffff1684101561222257604051636381e58960e11b815260206004820152603260248201527f7661724279746573546f42797465733a206f6666736574206c657373207468616044820152710dc40e8d0ca40d2dce0eae840d8cadccee8d60731b6064820152608401610299565b61223263ffffffff82168561287a565b935080158015612241576104c9565b8483018051601f84168015602002818801018581018215602002838601015b81831015612278578251815260209283019201612260565b5050509152505050505050565b825160609061229483856127d4565b111561229f57600080fd5b60008267ffffffffffffffff8111156122ba576122ba61257c565b6040519080825280601f01601f1916602001820160405280156122e4576020820181803683370190505b509050602080820190868601016122fc828287612476565b509095945050505050565b8082015160208104600101601f82161561231f576001015b6020029392505050565b81830151600060208204600101601f831615612343576001015b5b80821015612368578585015160208302850152602086039550600182019150612344565b505050505050565b6060600061237e8484015190565b63ffffffff16905061239160048561287a565b9350838111156123fd57604051636381e58960e11b815260206004820152603060248201527f6279746573546f56617242797465733a206f6666736574206c6573732074686160448201526f6e206c656e677468206f6620626f647960801b6064820152608401610299565b612407818561287a565b93506060811580156124245760405191506020820160405261182a565b6040519150601f8316801560200281840101848101888315602002848a0101015b8183101561245d578051835260209283019201612445565b5050848452601f01601f19166040525050949350505050565b602081106124ae578151835261248d6020846127d4565b925061249a6020836127d4565b91506124a760208261287a565b9050612476565b806124b857505050565b600060016124c783602061287a565b6124d3906101006129d2565b6124dd919061287a565b925184518416931916929092179092525050565b6040805160a080820183526060608080840182815284528451928301855282820182815290830191909152815260006020828101829052938201529091820190815260006020820152606060409091015290565b80356001600160a01b038116811461255c57600080fd5b919050565b60006020828403121561257357600080fd5b610ca382612545565b63b95aa35560e01b600052604160045260246000fd5b600082601f8301126125a357600080fd5b813567ffffffffffffffff808211156125be576125be61257c565b604051601f8301601f19908116603f011681019082821181831017156125e6576125e661257c565b816040528381528660208588010111156125ff57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561263157600080fd5b813567ffffffffffffffff81111561264857600080fd5b610d4c84828501612592565b803563ffffffff8116811461255c57600080fd5b6000806040838503121561267b57600080fd5b61268483612545565b915061269260208401612654565b90509250929050565b600080604083850312156126ae57600080fd5b6126b783612545565b9150602083013567ffffffffffffffff8111156126d357600080fd5b6126df85828601612592565b9150509250929050565b6000602082840312156126fb57600080fd5b610ca382612654565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000815180845260005b8181101561275f57602081850181015186830182015201612743565b81811115612771576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610ca36020830184612739565b6040815260006127ac6040830185612739565b82810360208401526118f38185612739565b63b95aa35560e01b600052601160045260246000fd5b600082198211156127e7576127e76127be565b500190565b63b95aa35560e01b600052603260045260246000fd5b6000600019821415612816576128166127be565b5060010190565b6060815260006128306060830186612739565b84602084015282810360408401526128488185612739565b9695505050505050565b600063ffffffff808316818516808303821115612871576128716127be565b01949350505050565b60008282101561288c5761288c6127be565b500390565b63b95aa35560e01b600052601260045260246000fd5b6000826128b6576128b6612891565b500490565b6000826128ca576128ca612891565b500690565b60008160001904831182151516156128e9576128e96127be565b500290565b600181815b8085111561292957816000190482111561290f5761290f6127be565b8085161561291c57918102915b93841c93908002906128f3565b509250929050565b60008261294057506001610c91565b8161294d57506000610c91565b8160018114612963576002811461296d57612989565b6001915050610c91565b60ff84111561297e5761297e6127be565b50506001821b610c91565b5060208310610133831016604e8410600b84101617156129ac575081810a610c91565b6129b683836128ee565b80600019048211156129ca576129ca6127be565b029392505050565b6000610ca3838361293156fea2646970667358221220619f7551c6a7e1874997b8c0bddfebf111f1b0a390e190c6469984796261299564736f6c634300080b0033"};
  
      public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);
  
      public static final String[] ABI_ARRAY = {"[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"pkg\",\"type\":\"bytes\"}],\"name\":\"SendAuthMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"protocolType\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"SubProtocolUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"sendDomain\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"rawMsg\",\"type\":\"bytes\"}],\"name\":\"recvAuthMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"protocolType\",\"type\":\"uint32\"}],\"name\":\"getProtocol\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"protocolRoutes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ptcHubAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"recvFromProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pkg\",\"type\":\"bytes\"}],\"name\":\"recvPkgFromRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"protocolType\",\"type\":\"uint32\"}],\"name\":\"setProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ptcHubAddr\",\"type\":\"address\"}],\"name\":\"setPtcHub\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"setRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"subProtocols\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"protocolType\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"exist\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"};
  
      public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY);
  
      public static final String FUNC_GETPROTOCOL = "getProtocol";
  
      public static final String FUNC_INIT = "init";
  
      public static final String FUNC_OWNER = "owner";
  
      public static final String FUNC_PROTOCOLROUTES = "protocolRoutes";
  
      public static final String FUNC_PTCHUBADDR = "ptcHubAddr";
  
      public static final String FUNC_RECVFROMPROTOCOL = "recvFromProtocol";
  
      public static final String FUNC_RECVPKGFROMRELAYER = "recvPkgFromRelayer";
  
      public static final String FUNC_RELAYER = "relayer";
  
      public static final String FUNC_RENOUNCEOWNERSHIP = "renounceOwnership";
  
      public static final String FUNC_SETPROTOCOL = "setProtocol";
  
      public static final String FUNC_SETPTCHUB = "setPtcHub";
  
      public static final String FUNC_SETRELAYER = "setRelayer";
  
      public static final String FUNC_SUBPROTOCOLS = "subProtocols";
  
      public static final String FUNC_TRANSFEROWNERSHIP = "transferOwnership";
  
      public static final Event INITIALIZED_EVENT = new Event("Initialized", 
              Arrays.<TypeReference<?>>asList(new TypeReference<Uint8>() {}));
      ;
  
      public static final Event OWNERSHIPTRANSFERRED_EVENT = new Event("OwnershipTransferred", 
              Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}));
      ;
  
      public static final Event SENDAUTHMESSAGE_EVENT = new Event("SendAuthMessage", 
              Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
      ;
  
      public static final Event SUBPROTOCOLUPDATE_EVENT = new Event("SubProtocolUpdate", 
              Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>(true) {}, new TypeReference<Address>() {}));
      ;
  
      public static final Event RECVAUTHMESSAGE_EVENT = new Event("recvAuthMessage", 
              Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<DynamicBytes>() {}));
      ;
  
      protected AuthMsg(String contractAddress, Client client, CryptoKeyPair credential) {
          super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
      }
  
      public static String getBinary(CryptoSuite cryptoSuite) {
          return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
      }
  
      public static String getABI() {
          return ABI;
      }
  
      public List<InitializedEventResponse> getInitializedEvents(
              TransactionReceipt transactionReceipt) {
          List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(INITIALIZED_EVENT, transactionReceipt);
          ArrayList<InitializedEventResponse> responses = new ArrayList<InitializedEventResponse>(valueList.size());
          for (Contract.EventValuesWithLog eventValues : valueList) {
              InitializedEventResponse typedResponse = new InitializedEventResponse();
              typedResponse.log = eventValues.getLog();
              typedResponse.version = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
              responses.add(typedResponse);
          }
          return responses;
      }
  
      public void subscribeInitializedEvent(BigInteger fromBlock, BigInteger toBlock,
              List<String> otherTopics, EventSubCallback callback) {
          String topic0 = eventEncoder.encode(INITIALIZED_EVENT);
          subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
      }
  
      public void subscribeInitializedEvent(EventSubCallback callback) {
          String topic0 = eventEncoder.encode(INITIALIZED_EVENT);
          subscribeEvent(topic0,callback);
      }
  
      public List<OwnershipTransferredEventResponse> getOwnershipTransferredEvents(
              TransactionReceipt transactionReceipt) {
          List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(OWNERSHIPTRANSFERRED_EVENT, transactionReceipt);
          ArrayList<OwnershipTransferredEventResponse> responses = new ArrayList<OwnershipTransferredEventResponse>(valueList.size());
          for (Contract.EventValuesWithLog eventValues : valueList) {
              OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse();
              typedResponse.log = eventValues.getLog();
              typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue();
              typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue();
              responses.add(typedResponse);
          }
          return responses;
      }
  
      public void subscribeOwnershipTransferredEvent(BigInteger fromBlock, BigInteger toBlock,
              List<String> otherTopics, EventSubCallback callback) {
          String topic0 = eventEncoder.encode(OWNERSHIPTRANSFERRED_EVENT);
          subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
      }
  
      public void subscribeOwnershipTransferredEvent(EventSubCallback callback) {
          String topic0 = eventEncoder.encode(OWNERSHIPTRANSFERRED_EVENT);
          subscribeEvent(topic0,callback);
      }
  
      public List<SendAuthMessageEventResponse> getSendAuthMessageEvents(
              TransactionReceipt transactionReceipt) {
          List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(SENDAUTHMESSAGE_EVENT, transactionReceipt);
          ArrayList<SendAuthMessageEventResponse> responses = new ArrayList<SendAuthMessageEventResponse>(valueList.size());
          for (Contract.EventValuesWithLog eventValues : valueList) {
              SendAuthMessageEventResponse typedResponse = new SendAuthMessageEventResponse();
              typedResponse.log = eventValues.getLog();
              typedResponse.pkg = (byte[]) eventValues.getNonIndexedValues().get(0).getValue();
              responses.add(typedResponse);
          }
          return responses;
      }
  
      public void subscribeSendAuthMessageEvent(BigInteger fromBlock, BigInteger toBlock,
              List<String> otherTopics, EventSubCallback callback) {
          String topic0 = eventEncoder.encode(SENDAUTHMESSAGE_EVENT);
          subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
      }
  
      public void subscribeSendAuthMessageEvent(EventSubCallback callback) {
          String topic0 = eventEncoder.encode(SENDAUTHMESSAGE_EVENT);
          subscribeEvent(topic0,callback);
      }
  
      public List<SubProtocolUpdateEventResponse> getSubProtocolUpdateEvents(
              TransactionReceipt transactionReceipt) {
          List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(SUBPROTOCOLUPDATE_EVENT, transactionReceipt);
          ArrayList<SubProtocolUpdateEventResponse> responses = new ArrayList<SubProtocolUpdateEventResponse>(valueList.size());
          for (Contract.EventValuesWithLog eventValues : valueList) {
              SubProtocolUpdateEventResponse typedResponse = new SubProtocolUpdateEventResponse();
              typedResponse.log = eventValues.getLog();
              typedResponse.protocolType = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
              typedResponse.protocolAddress = (String) eventValues.getNonIndexedValues().get(0).getValue();
              responses.add(typedResponse);
          }
          return responses;
      }
  
      public void subscribeSubProtocolUpdateEvent(BigInteger fromBlock, BigInteger toBlock,
              List<String> otherTopics, EventSubCallback callback) {
          String topic0 = eventEncoder.encode(SUBPROTOCOLUPDATE_EVENT);
          subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
      }
  
      public void subscribeSubProtocolUpdateEvent(EventSubCallback callback) {
          String topic0 = eventEncoder.encode(SUBPROTOCOLUPDATE_EVENT);
          subscribeEvent(topic0,callback);
      }
  
      public List<RecvAuthMessageEventResponse> getRecvAuthMessageEvents(
              TransactionReceipt transactionReceipt) {
          List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(RECVAUTHMESSAGE_EVENT, transactionReceipt);
          ArrayList<RecvAuthMessageEventResponse> responses = new ArrayList<RecvAuthMessageEventResponse>(valueList.size());
          for (Contract.EventValuesWithLog eventValues : valueList) {
              RecvAuthMessageEventResponse typedResponse = new RecvAuthMessageEventResponse();
              typedResponse.log = eventValues.getLog();
              typedResponse.sendDomain = (String) eventValues.getNonIndexedValues().get(0).getValue();
              typedResponse.rawMsg = (byte[]) eventValues.getNonIndexedValues().get(1).getValue();
              responses.add(typedResponse);
          }
          return responses;
      }
  
      public void subscribeRecvAuthMessageEvent(BigInteger fromBlock, BigInteger toBlock,
              List<String> otherTopics, EventSubCallback callback) {
          String topic0 = eventEncoder.encode(RECVAUTHMESSAGE_EVENT);
          subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
      }
  
      public void subscribeRecvAuthMessageEvent(EventSubCallback callback) {
          String topic0 = eventEncoder.encode(RECVAUTHMESSAGE_EVENT);
          subscribeEvent(topic0,callback);
      }
  
      public String getProtocol(BigInteger protocolType) throws ContractException {
          final Function function = new Function(FUNC_GETPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(protocolType)), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return executeCallWithSingleValueReturn(function, String.class);
      }
  
      public Function getMethodGetProtocolRawFunction(BigInteger protocolType) throws
              ContractException {
          final Function function = new Function(FUNC_GETPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(protocolType)), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return function;
      }
  
      public TransactionReceipt init() {
          final Function function = new Function(
                  FUNC_INIT, 
                  Arrays.<Type>asList(), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return executeTransaction(function);
      }
  
      public Function getMethodInitRawFunction() throws ContractException {
          final Function function = new Function(FUNC_INIT, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList());
          return function;
      }
  
      public String getSignedTransactionForInit() {
          final Function function = new Function(
                  FUNC_INIT, 
                  Arrays.<Type>asList(), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return createSignedTransaction(function);
      }
  
      public String init(TransactionCallback callback) {
          final Function function = new Function(
                  FUNC_INIT, 
                  Arrays.<Type>asList(), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return asyncExecuteTransaction(function, callback);
      }
  
      public String owner() throws ContractException {
          final Function function = new Function(FUNC_OWNER, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return executeCallWithSingleValueReturn(function, String.class);
      }
  
      public Function getMethodOwnerRawFunction() throws ContractException {
          final Function function = new Function(FUNC_OWNER, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return function;
      }
  
      public String protocolRoutes(BigInteger param0) throws ContractException {
          final Function function = new Function(FUNC_PROTOCOLROUTES, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(param0)), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return executeCallWithSingleValueReturn(function, String.class);
      }
  
      public Function getMethodProtocolRoutesRawFunction(BigInteger param0) throws ContractException {
          final Function function = new Function(FUNC_PROTOCOLROUTES, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(param0)), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return function;
      }
  
      public String ptcHubAddr() throws ContractException {
          final Function function = new Function(FUNC_PTCHUBADDR, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return executeCallWithSingleValueReturn(function, String.class);
      }
  
      public Function getMethodPtcHubAddrRawFunction() throws ContractException {
          final Function function = new Function(FUNC_PTCHUBADDR, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return function;
      }
  
      public TransactionReceipt recvFromProtocol(String senderID, byte[] message) {
          final Function function = new Function(
                  FUNC_RECVFROMPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(senderID), 
                  new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(message)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return executeTransaction(function);
      }
  
      public Function getMethodRecvFromProtocolRawFunction(String senderID, byte[] message) throws
              ContractException {
          final Function function = new Function(FUNC_RECVFROMPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(senderID), 
                  new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(message)), 
                  Arrays.<TypeReference<?>>asList());
          return function;
      }
  
      public String getSignedTransactionForRecvFromProtocol(String senderID, byte[] message) {
          final Function function = new Function(
                  FUNC_RECVFROMPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(senderID), 
                  new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(message)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return createSignedTransaction(function);
      }
  
      public String recvFromProtocol(String senderID, byte[] message, TransactionCallback callback) {
          final Function function = new Function(
                  FUNC_RECVFROMPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(senderID), 
                  new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(message)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return asyncExecuteTransaction(function, callback);
      }
  
      public Tuple2<String, byte[]> getRecvFromProtocolInput(TransactionReceipt transactionReceipt) {
          String data = transactionReceipt.getInput().substring(10);
          final Function function = new Function(FUNC_RECVFROMPROTOCOL, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<DynamicBytes>() {}));
          List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
          return new Tuple2<String, byte[]>(
  
                  (String) results.get(0).getValue(), 
                  (byte[]) results.get(1).getValue()
                  );
      }
  
      public TransactionReceipt recvPkgFromRelayer(byte[] pkg) {
          final Function function = new Function(
                  FUNC_RECVPKGFROMRELAYER, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(pkg)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return executeTransaction(function);
      }
  
      public Function getMethodRecvPkgFromRelayerRawFunction(byte[] pkg) throws ContractException {
          final Function function = new Function(FUNC_RECVPKGFROMRELAYER, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(pkg)), 
                  Arrays.<TypeReference<?>>asList());
          return function;
      }
  
      public String getSignedTransactionForRecvPkgFromRelayer(byte[] pkg) {
          final Function function = new Function(
                  FUNC_RECVPKGFROMRELAYER, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(pkg)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return createSignedTransaction(function);
      }
  
      public String recvPkgFromRelayer(byte[] pkg, TransactionCallback callback) {
          final Function function = new Function(
                  FUNC_RECVPKGFROMRELAYER, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(pkg)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return asyncExecuteTransaction(function, callback);
      }
  
      public Tuple1<byte[]> getRecvPkgFromRelayerInput(TransactionReceipt transactionReceipt) {
          String data = transactionReceipt.getInput().substring(10);
          final Function function = new Function(FUNC_RECVPKGFROMRELAYER, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
          List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
          return new Tuple1<byte[]>(
  
                  (byte[]) results.get(0).getValue()
                  );
      }
  
      public String relayer() throws ContractException {
          final Function function = new Function(FUNC_RELAYER, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return executeCallWithSingleValueReturn(function, String.class);
      }
  
      public Function getMethodRelayerRawFunction() throws ContractException {
          final Function function = new Function(FUNC_RELAYER, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          return function;
      }
  
      public TransactionReceipt renounceOwnership() {
          final Function function = new Function(
                  FUNC_RENOUNCEOWNERSHIP, 
                  Arrays.<Type>asList(), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return executeTransaction(function);
      }
  
      public Function getMethodRenounceOwnershipRawFunction() throws ContractException {
          final Function function = new Function(FUNC_RENOUNCEOWNERSHIP, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList());
          return function;
      }
  
      public String getSignedTransactionForRenounceOwnership() {
          final Function function = new Function(
                  FUNC_RENOUNCEOWNERSHIP, 
                  Arrays.<Type>asList(), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return createSignedTransaction(function);
      }
  
      public String renounceOwnership(TransactionCallback callback) {
          final Function function = new Function(
                  FUNC_RENOUNCEOWNERSHIP, 
                  Arrays.<Type>asList(), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return asyncExecuteTransaction(function, callback);
      }
  
      public TransactionReceipt setProtocol(String protocolAddress, BigInteger protocolType) {
          final Function function = new Function(
                  FUNC_SETPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(protocolAddress), 
                  new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(protocolType)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return executeTransaction(function);
      }
  
      public Function getMethodSetProtocolRawFunction(String protocolAddress, BigInteger protocolType)
              throws ContractException {
          final Function function = new Function(FUNC_SETPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(protocolAddress), 
                  new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(protocolType)), 
                  Arrays.<TypeReference<?>>asList());
          return function;
      }
  
      public String getSignedTransactionForSetProtocol(String protocolAddress,
              BigInteger protocolType) {
          final Function function = new Function(
                  FUNC_SETPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(protocolAddress), 
                  new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(protocolType)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return createSignedTransaction(function);
      }
  
      public String setProtocol(String protocolAddress, BigInteger protocolType,
              TransactionCallback callback) {
          final Function function = new Function(
                  FUNC_SETPROTOCOL, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(protocolAddress), 
                  new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(protocolType)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return asyncExecuteTransaction(function, callback);
      }
  
      public Tuple2<String, BigInteger> getSetProtocolInput(TransactionReceipt transactionReceipt) {
          String data = transactionReceipt.getInput().substring(10);
          final Function function = new Function(FUNC_SETPROTOCOL, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint32>() {}));
          List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
          return new Tuple2<String, BigInteger>(
  
                  (String) results.get(0).getValue(), 
                  (BigInteger) results.get(1).getValue()
                  );
      }
  
      public TransactionReceipt setPtcHub(String _ptcHubAddr) {
          final Function function = new Function(
                  FUNC_SETPTCHUB, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(_ptcHubAddr)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return executeTransaction(function);
      }
  
      public Function getMethodSetPtcHubRawFunction(String _ptcHubAddr) throws ContractException {
          final Function function = new Function(FUNC_SETPTCHUB, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(_ptcHubAddr)), 
                  Arrays.<TypeReference<?>>asList());
          return function;
      }
  
      public String getSignedTransactionForSetPtcHub(String _ptcHubAddr) {
          final Function function = new Function(
                  FUNC_SETPTCHUB, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(_ptcHubAddr)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return createSignedTransaction(function);
      }
  
      public String setPtcHub(String _ptcHubAddr, TransactionCallback callback) {
          final Function function = new Function(
                  FUNC_SETPTCHUB, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(_ptcHubAddr)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return asyncExecuteTransaction(function, callback);
      }
  
      public Tuple1<String> getSetPtcHubInput(TransactionReceipt transactionReceipt) {
          String data = transactionReceipt.getInput().substring(10);
          final Function function = new Function(FUNC_SETPTCHUB, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
          return new Tuple1<String>(
  
                  (String) results.get(0).getValue()
                  );
      }
  
      public TransactionReceipt setRelayer(String relayerAddress) {
          final Function function = new Function(
                  FUNC_SETRELAYER, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(relayerAddress)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return executeTransaction(function);
      }
  
      public Function getMethodSetRelayerRawFunction(String relayerAddress) throws ContractException {
          final Function function = new Function(FUNC_SETRELAYER, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(relayerAddress)), 
                  Arrays.<TypeReference<?>>asList());
          return function;
      }
  
      public String getSignedTransactionForSetRelayer(String relayerAddress) {
          final Function function = new Function(
                  FUNC_SETRELAYER, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(relayerAddress)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return createSignedTransaction(function);
      }
  
      public String setRelayer(String relayerAddress, TransactionCallback callback) {
          final Function function = new Function(
                  FUNC_SETRELAYER, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(relayerAddress)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return asyncExecuteTransaction(function, callback);
      }
  
      public Tuple1<String> getSetRelayerInput(TransactionReceipt transactionReceipt) {
          String data = transactionReceipt.getInput().substring(10);
          final Function function = new Function(FUNC_SETRELAYER, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
          return new Tuple1<String>(
  
                  (String) results.get(0).getValue()
                  );
      }
  
      public Tuple2<BigInteger, Boolean> subProtocols(String param0) throws ContractException {
          final Function function = new Function(FUNC_SUBPROTOCOLS, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(param0)), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}, new TypeReference<Bool>() {}));
          List<Type> results = executeCallWithMultipleValueReturn(function);
          return new Tuple2<BigInteger, Boolean>(
                  (BigInteger) results.get(0).getValue(), 
                  (Boolean) results.get(1).getValue());
      }
  
      public Function getMethodSubProtocolsRawFunction(String param0) throws ContractException {
          final Function function = new Function(FUNC_SUBPROTOCOLS, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(param0)), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}, new TypeReference<Bool>() {}));
          return function;
      }
  
      public TransactionReceipt transferOwnership(String newOwner) {
          final Function function = new Function(
                  FUNC_TRANSFEROWNERSHIP, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return executeTransaction(function);
      }
  
      public Function getMethodTransferOwnershipRawFunction(String newOwner) throws
              ContractException {
          final Function function = new Function(FUNC_TRANSFEROWNERSHIP, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), 
                  Arrays.<TypeReference<?>>asList());
          return function;
      }
  
      public String getSignedTransactionForTransferOwnership(String newOwner) {
          final Function function = new Function(
                  FUNC_TRANSFEROWNERSHIP, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return createSignedTransaction(function);
      }
  
      public String transferOwnership(String newOwner, TransactionCallback callback) {
          final Function function = new Function(
                  FUNC_TRANSFEROWNERSHIP, 
                  Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), 
                  Collections.<TypeReference<?>>emptyList(), 0);
          return asyncExecuteTransaction(function, callback);
      }
  
      public Tuple1<String> getTransferOwnershipInput(TransactionReceipt transactionReceipt) {
          String data = transactionReceipt.getInput().substring(10);
          final Function function = new Function(FUNC_TRANSFEROWNERSHIP, 
                  Arrays.<Type>asList(), 
                  Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
          List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
          return new Tuple1<String>(
  
                  (String) results.get(0).getValue()
                  );
      }
  
      public static AuthMsg load(String contractAddress, Client client, CryptoKeyPair credential) {
          return new AuthMsg(contractAddress, client, credential);
      }
  
      public static AuthMsg deploy(Client client, CryptoKeyPair credential) throws ContractException {
          return deploy(AuthMsg.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null);
      }
  
      public static class InitializedEventResponse {
          public TransactionReceipt.Logs log;
  
          public BigInteger version;
      }
  
      public static class OwnershipTransferredEventResponse {
          public TransactionReceipt.Logs log;
  
          public String previousOwner;
  
          public String newOwner;
      }
  
      public static class SendAuthMessageEventResponse {
          public TransactionReceipt.Logs log;
  
          public byte[] pkg;
      }
  
      public static class SubProtocolUpdateEventResponse {
          public TransactionReceipt.Logs log;
  
          public BigInteger protocolType;
  
          public String protocolAddress;
      }
  
      public static class RecvAuthMessageEventResponse {
          public TransactionReceipt.Logs log;
  
          public String sendDomain;
  
          public byte[] rawMsg;
      }
  }
  